間違ったrubyを使用しているために現在失敗している1台のプロダクションサーバの配備プロセスを修正しようとしています。 rbenv
のルビーは2.2.3
です。しかし、サーバー上のUbuntu 14システムは、デフォルトでruby 1.9.1
と思われます。私はS.O.おそらく問題がどこに存在するのかを正確に突き止めることができます。以下は完全なエラーです:Capistrano rbenvが適切なrubyを使用するように設定されていません:2.2.3の代わりに1.9.1システムのruby
Tasks: TOP => deploy:restart
(See full trace by running task with --trace)
The deploy has failed with an error: Exception while executing as [email protected]: cd '/var/local/fisbot/releases/20170707184851'; RAILS_ENV=production ./slave restart exit status: 1
cd '/var/local/fisbot/releases/20170707184851'; RAILS_ENV=production ./slave restart stdout: Nothing written
cd '/var/local/fisbot/releases/20170707184851'; RAILS_ENV=production ./slave restart stderr: /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- bundler/setup (LoadError)
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /var/local/fisbot/releases/20170707184851/config/boot.rb:3:in `<top (required)>'
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /var/local/fisbot/releases/20170707184851/config/application.rb:1:in `<top (required)>'
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /var/local/fisbot/releases/20170707184851/config/environment.rb:2:in `<top (required)>'
from ./slave:4:in `require_relative'
from ./slave:4:in `<main>'
したがって、rbenv rbenvのドキュメントからです。
ステップ1:上記PATH
から分かるように、シムかどうかを確認するためにチェックすると、私のパスに
printenv | grep PATH
PATH=/home/serv-deployer/.rbenv/shims:/home/serv-deployer/.rbenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/opt/puppetlabs/bin
で、シムが正しくパスの前に配置されます。
ステップ2:これは私のシェルにここで適用されていないが、これが失敗した場合のマニュアルに従って、次のステップはそう以降に実行されますRBENV_VERSION
rbenv shell
rbenv: no shell-specific version configured
をチェック。
ステップ3:私はrbenv local
とrbenv global
の両方を実行すると.ruby-version
をチェックするには、私は出力がruby 2.2.3
であることがわかります。さらに、ターゲットサーバー上の私のレールアプリケーションでは、.ruby-version
の内容には2.2.3
が含まれています。だから、私はうまくいくはずです。
ステップ4:~/.rbenv/versions
確認し、このディレクトリに見て、私は2.2.3
を持っていることが明らかになりました。
ステップ5:、Ran、〜/ .rbenv/bin/rbenv initを実行して新しいウィンドウを開きました。
は最後に良い対策のため、gem env
を実行することによって、私は2.2.3
RubyGems Environment:
- RUBYGEMS VERSION: 2.4.5.1
- RUBY VERSION: 2.2.3 (2015-08-18 patchlevel 173) [x86_64-linux]
- INSTALLATION DIRECTORY: /home/serv-deployer/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0
- RUBY EXECUTABLE: /home/serv-deployer/.rbenv/versions/2.2.3/bin/ruby
- EXECUTABLE DIRECTORY: /home/serv-deployer/.rbenv/versions/2.2.3/bin
- SPEC CACHE DIRECTORY: /home/serv-deployer/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /home/serv-deployer/.rbenv/versions/2.2.3/etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /home/serv-deployer/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0
- /home/serv-deployer/.gem/ruby/2.2.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /home/serv-deployer/.rbenv/versions/2.2.3/bin
- /home/serv-deployer/.rbenv/libexec
- /home/serv-deployer/.rbenv/plugins/ruby-build/bin
- /home/serv-deployer/.rbenv/shims
- /home/serv-deployer/.rbenv/bin
- /usr/local/sbin
- /usr/local/bin
- /usr/sbin
- /usr/bin
- /sbin
- /bin
- /usr/games
- /usr/local/games
- /opt/puppetlabs/bin
を使用していていることがわかります私はここで何も足りませんか?すべて私は正しいルビーを実行する必要があることを示しているので、なぜコマンドが失敗していますか?
-------------- EDIT ------------
rbenv versions
を実行すると、私は2つのルビのバージョン
system
を有していることを示しています2.2.3 (set by /var/local/fisbot/current/.ruby-version)
システムルビーをパージすることをお勧めします。私がシステムのバージョンを取り除くことができれば、おそらく私は設定することができます。これが生産システムなので、これが推奨されるかどうかわかりません。
あなたは - > 'rbenv rehash'ですか? –
@MicaelNussbaumer私は今すぐ実行しましたが、役に立たない。私は、コナードを実行することによって出力や何も見ませんでした。私はテスト展開を試みましたが、プロセスはまだ失敗します。 –
なぜ私はちょうど正しくインストールされたローカルバージョンを正しくロードしていないのかを理解しようとしていたので、尋ねました。何も出力しません。 –