2017-07-07 8 views
0

間違った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 localrbenv 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)

システムルビーをパージすることをお勧めします。私がシステムのバージョンを取り除くことができれば、おそらく私は設定することができます。これが生産システムなので、これが推奨されるかどうかわかりません。

+0

あなたは - > 'rbenv rehash'ですか? –

+0

@MicaelNussbaumer私は今すぐ実行しましたが、役に立たない。私は、コナードを実行することによって出力や何も見ませんでした。私はテスト展開を試みましたが、プロセスはまだ失敗します。 –

+0

なぜ私はちょうど正しくインストールされたローカルバージョンを正しくロードしていないのかを理解しようとしていたので、尋ねました。何も出力しません。 –

答えて

0

ローカルマシン上で実行されているコマンドと、サーバー上で実行しているコマンドの質問からは分かりません。しかし、私は最も可能性の高いシナリオは、1)あなたのローカルマシンはrbenvですが、2)あなたのサーバーはありません。このシナリオでは、サーバには.ruby-versionファイルが何であるかわからず、開発用に使用する.ruby-versionと一致するようにシステムRubyを更新する必要があります。

+0

コマンドはサーバー上で実行され、rbenvはサーバーにインストールされます。 'capistrano/rbenv'はサーバーにデプロイするのに使われている宝石です。 –

関連する問題