読者です 読者をやめる 読者になる 読者になる

SideCI Blog

自動コードレビューサービスSideCIを提供している株式会社アクトキャットのコーポレートブログです。



疲れてきたらCIでもしよう、17:30から始めるCI ~Rubygemsのアップデート~

Other

よくわからないタイトルで書き始めてみました。風邪気味で。。。

体調が良くない時、集中力がなんだかもたない時、こういう時ってなかなかコーディングが進まないですよね。それならそれで、パシッっとパソコンを閉じて、早く帰って休んだり、昼寝したり。したいところですが、それが出来ない会社もあると思うので、そんな時でも出来るプログラマーなお仕事をいくらか書いてみます。

前提条件

  • 30分程度は時間がある
  • 集中力はないけど働く気はある
  • Unitテストなどの自動テストの体制が整っている <= ここ重要

コードのリファクタリングは非常に頭をつかうので、あまり集中力がないときに向いている仕事ではないですね。コードレビューとか、新しいコード書くとか、設計とか、資料作るとか、も微妙かなと。 そういう時でも気合で出来る仕事をピックアップしてみました。

  1. ライブラリのバージョンを1個ずつ上げていってみる
  2. メールを1通ずつ返信していってみる
  3. 思いつきませんでした...

集中力がないときはコーディングはしないほうが良さそうです。 それでもコーディングしたいときは、"ライブラリのバージョンを1個ずつ上げていってみる"のような、「1個ずつ」小さいバッチに分けることが出来るタスクをするのが良いと思います! 17:30から出来るCIがあまり他に思い浮かばなかったので、ぜひコメントなどで教えて下さい。。。

Ruby & Bundlerで開発中のプロジェクトの場合、 下記のコマンドでGemのアップデートがあるか確認できます。

bundle outdated

アップデートがあるようであれば、アップデートしてみましょう!

1個ずつ上げていってみる、と書いたものの、面倒だと思いますので、 まずは現在のプロジェクトが問題なく動くことを確認。(コマンドは例)

bundle exec rspec

一気にアップデート。

bundle update
bundle exec rspec

これで問題なく動けばOKですねー。 しかし、Gemfileの書き方によっては、Gemがメジャーアップデートされてしまうケースも。 その場合は動かなくなる事も多いです。

そういったケースの場合はGemfile.lockに書いてある、現状インストールしているメジャーバージョンの最新版を入れると良いと思います。 その場合、Gemfileに対象のGemをRubygems.orgなどで検索、 gem "rails", "~> 4.0.3" のように書くと良いです。 ~> の書き方をした場合、

「~> x.0」 x.1からx.9は良いが、メインのバージョンがあがるとは不可 例えば、3.2は良いが、4.0は不可など http://railsdoc.com/references/gemfile

となります。Rubygemsでデフォルトで表示されるのは~>なので、これがデファクトスタンダード・オススメだと思います。

Gemfileに今入れているGemのバージョンを、たとえば、railsの4.0.0を入れている場合は、 gem "rails", "~> 4.0.0"と書き、bundle updateすれば、最新版にアップデートされます。 Gemfileは変更されませんが、Gemfile.lockは変更されます。 更新した内容をGithubなどにpush、チームメンバーがそれを受け取り、rails sなどすると、動かないので、bundle updatebundle installをしてもらう必要があるでしょう。

Gemのアップデートめんどくさいなーと思って放置している人も多いと思います。 しかし、Gemにセキュリティホールが見つかったりすることが有ります。(当たり前ですが) なので、バグフィックスセキュリティ・ホールへのパッチなどのアップデートは放置してたらダメですよ!

Gemのバージョンを監視、新しいバージョンが出ると通知してくれるサービスもあります。 パブリックレポジトリは無料です。

KEEP YOUR PROJECTS IN SHAPE WITH GEMNASIUM

f:id:sideci:20140313191427p:plain

こんな風に、アップデートがあるGemを黄色マーク、早急にアップデートが必要なGemを赤色で表示してくれます。

f:id:sideci:20140313191637p:plain

これを参考にGemをアップデートしていくだけなら集中力が切れた時間帯からでも出来そうかなと思います。