毎日書く

のを目標に頑張るか

2017年5月30日

12時間くらい寝て無事寝坊

アラームのつけ忘れ。

Capistranoによるアプリケーションの雑なRubyのバージョンアップ

主に仕事をするのは capistrano/rbenvで、おなじみのrbenvを使っている環境に対して使うCapistranoプラグイン

github.com

ネットでよく見る書き方だと

set :rbenv_ruby, '2.4.1'

となっている。

こいつをREADMEにも書いてある通り以下のようにする。

set :rbenv_ruby, File.read('.ruby-version').strip

対象となるリポジトリ.ruby-versionファイルが無いとデプロイがコケるので以下のようにすれば安全じゃないかな、検証してないけど。

ruby_version = File.read('.ruby-version').strip rescue '2.4.1'
set :rbenv_ruby, ruby_version

それとデプロイ先に当該のRubyのバージョンがインストールされていない場合、lib/capistrano/tasks/rbenv.rake#L10-L13の辺りで失敗してくれる。

ちなみに、アプリケーションがUnicornなどで動作している場合は、この後に停止して起動させなければいけない。

Unicornの場合、動作しているRubyのバージョンは

$ lsof -p ${UNICORN_PID} | grep ruby/

みたいな感じで大体確認できる。