web-dev-qa-db-ja.com

そのようなファイルをロードできません-bundler / setup(LoadError)|| Ubuntu 12.04 x32にデプロイする

私はRailsアプリをUbuntu 12.04 x32のパッセンジャーであるNginxでデプロイしようとしています。すべての処理が完了したら、Railsアプリにアクセスしますが、「申し訳ありませんが、問題が発生しました」と表示されます。

それから私はcat /var/log/nginx/error.log、私はこの行を見つけます:

Message from application: cannot load such file -- bundler/setup (LoadError)
/home/thomas/.rvm/rubies/Ruby-2.0.0-  p643/lib/Ruby/site_Ruby/2.0.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/home/thomas/.rvm/rubies/Ruby-2.0.0-p643/lib/Ruby/site_Ruby/2.0.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/usr/lib/Ruby/vendor_Ruby/phusion_passenger/loader_shared_helpers.rb:278:in `block in run_load_path_setup_code'
/usr/lib/Ruby/vendor_Ruby/phusion_passenger/loader_shared_helpers.rb:381:in `running_bundler'
/usr/lib/Ruby/vendor_Ruby/phusion_passenger/loader_shared_helpers.rb:276:in `run_load_path_setup_code'
/usr/share/passenger/helper-scripts/rack-preloader.rb:99:in `preload_app'
/usr/share/passenger/helper-scripts/rack-preloader.rb:157:in `<module:App>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:29:in `<module:PhusionPassenger>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:28:in `<main>'

私はrvmとrbenvを使用しています

$ Ruby -v
Ruby 2.0.0p643 (2015-02-25 revision 49749) [i686-linux]
$ rbenv versions
system
* 2.0.0-p643 (set by /home/thomas/.rbenv/version)

そして私はすでにバンドルをインストールしています

$ bundler -v
Bundler version 1.9.2

そしてこれが私のgem envです:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.4.6
  - Ruby VERSION: 2.0.0 (2015-02-25 patchlevel 643) [i686-linux]
  - INSTALLATION DIRECTORY: /home/thomas/.rvm/gems/Ruby-2.0.0-p643
  - Ruby EXECUTABLE: /home/thomas/.rvm/rubies/Ruby-2.0.0-p643/bin/Ruby
  - EXECUTABLE DIRECTORY: /home/thomas/.rvm/gems/Ruby-2.0.0-p643/bin
  - SPEC CACHE DIRECTORY: /home/thomas/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /home/thomas/.rvm/rubies/Ruby-2.0.0-p643/etc
  - RUBYGEMS PLATFORMS:
    - Ruby
    - x86-linux
  - GEM PATHS:
     - /home/thomas/.rvm/gems/Ruby-2.0.0-p643
     - /home/thomas/.rvm/gems/Ruby-2.0.0-p643@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - Shell PATH:
     - /home/thomas/.rvm/gems/Ruby-2.0.0-p643/bin
     - /home/thomas/.rvm/gems/Ruby-2.0.0-p643@global/bin
     - /home/thomas/.rvm/rubies/Ruby-2.0.0-p643/bin
     - /home/thomas/.rvm/bin
     - /home/thomas/.rbenv/bin
     - /home/thomas/.rbenv/shims
     - /home/thomas/.rbenv/bin
     - /usr/local/sbin
     - /usr/local/bin
     - /usr/sbin
     - /usr/bin
     - /sbin
     - /bin
     - /usr/games

誰かが同じ問題を経験しましたか?ありがとう

更新:my /etc/nginx/nginx.confおよび/etc/nginx/sites-enabled/blog.confhttps://Gist.github.com/wall2flower/b3f410317585a8803a27https://Gist.github.com/wall2flower/72316e8b437d654e707

13
luotao

あなたは確かにいくつかのPATHの問題を抱えています。 /etc/nginx/nginx.conf内では、パッセンジャーの場合、バンドルがインストールされているRubyバージョンを指す必要があります。

passenger_root /usr/lib/Ruby/vendor_Ruby/phusion_passenger/locations.ini;
passenger_Ruby /home/thomas/.rvm/wrappers/default/Ruby;

これは次のコマンドで確認できます

$ which Ruby

そのコマンドの出力は、passenger_Rubyに入力する必要があります。

バンドラーをまだインストールしていない場合は、gem install bundlerを実行してください。

また、サーバーブロックで環境変数を設定していることを確認してください。

server {
  listen 80 default;
  server_name blog.wall2flower.me;
  root /var/www/blog/current/public;
  passenger_enabled on;
}
11
karlingen

問題を修正するには、binstubsを生成する必要があります。

bundle install --binstubs
5
Karol Wojtaszek

Karlingenが指摘するように、この問題はPATHの問題の結果ですが、RVMを使用している場合は、正しいRuby別の方法へのパスを取得する必要があります...

最良のことは、この情報を見つけるために乗客自身のガイドに従うことです:

https://www.phusionpassenger.com/library/config/nginx/reference/#setting_correct_passenger_Ruby_value

1
richardun

試してください:

bundle exec passenger start ...
1