新しいサーバーで capistrano 3 を使用して展開し、chruby によって管理される Ruby バージョンを取得しようとしています。
カピストラーノのドキュメントで指定されているすべてのテストは正常に機能します。
deploy を実行しようとすると、 deploy.rb で指定されている chruby バージョンではなく、システム ruby でバンドラーを見つけようとしているようです。
set :chruby_ruby, 'ruby-2.1.2'
サーバーに ruby-install を使用して ruby 2.1.2 をインストールしました。デプロイ ユーザーとしてログインすると、正しい ruby を使用しているように見えます
deploy@server:~$ ruby -v
ruby 2.1.2p95 (2014-05-08 revision 45877) [i686-linux]
デプロイからのエラーは
INFO[8ec8ed42] Running /usr/local/bin/chruby-exec ruby-2.1.2 -- bundle install --binstubs /var/www/oentry/shared/bin --path /var/www/oentry/shared/bundle --without development test --deployment --quiet on 103.6.213.27
DEBUG[8ec8ed42] Command: cd /var/www/oentry/releases/20140810095255 && /usr/local/bin/chruby-exec ruby-2.1.2 -- bundle install --binstubs /var/www/oentry/shared/bin --path /var/www/oentry/shared/bundle --without development test --deployment --quiet
DEBUG[8ec8ed42] chruby: unknown Ruby: ruby-1.9.3-p392
DEBUG[8ec8ed42] /usr/lib/ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find bundler (>= 0) amongst [] (Gem::LoadError
DEBUG[8ec8ed42] )
DEBUG[8ec8ed42] from /usr/lib/ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
DEBUG[8ec8ed42] from /usr/lib/ruby/1.9.1/rubygems.rb:1231:in `gem'
DEBUG[8ec8ed42] from /usr/local/bin/bundle:22:in `<main>'
cap aborted!
deploy.rb (以下はすべてデフォルト)
lock '3.2.1'
set :application, 'oentry'
set :repo_url, 'git@1nnn.nnn.nnn.nnn:/opt/git/oentry.git'
set :chruby_ruby, 'ruby-2.1.2'
production.rb (以下はすべてデフォルト)
role :app, %w{deploy@nnn.nn.nnn.nnn}
role :web, %w{deploy@nnn.nn.nnn.nnn}
role :db, %w{deploy@nnn.nn.nnn.nnn}
キャップファイル
# Load DSL and Setup Up Stages
require 'capistrano/setup'
# Includes default deployment tasks
require 'capistrano/deploy'
# Includes tasks from other gems included in your Gemfile
#
# For documentation on these, see for example:
#
# https://github.com/capistrano/rvm
# https://github.com/capistrano/rbenv
# https://github.com/capistrano/chruby
# https://github.com/capistrano/bundler
# https://github.com/capistrano/rails
#
# require 'capistrano/rvm'
# require 'capistrano/rbenv'
require 'capistrano/chruby'
require 'capistrano/bundler'
require 'capistrano/rails/assets'
require 'capistrano/rails/migrations'
# Loads custom tasks from `lib/capistrano/tasks' if you have any defined.
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }
アップデート。
2.1.2 環境のサーバーで gem install bundler を実行すると動作するように見えますが、それでも出力に次の当惑させるメッセージが表示されます。
DEBUG[1b6631e7] chruby: unknown Ruby: ruby-1.9.3-p392