无法加载此类文件 -- bundler/setup (LoadError) ||部署在 Ubuntu 12.04 x32
cannot load such file -- bundler/setup (LoadError) || deploy on Ubuntu 12.04 x32
我尝试使用 Nginx 部署我的 rails 应用程序,passenger 在 Ubuntu 12.04 x32 上。所有事情都完成后,我访问了我的 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 环境:
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
有人遇到过同样的问题吗?
谢谢
更新:
我的 /etc/nginx/nginx.conf
和 /etc/nginx/sites-enabled/blog.conf
:
https://gist.github.com/wall2flower/b3f410317585a8803a27
https://gist.github.com/wall2flower/72316e8b437d654e7070
尝试:
bundle exec passenger start ...
您确实遇到了一些 PATH 问题。在 /etc/nginx/nginx.conf
中,对于 passenger,您应该指向安装了 bundler 的 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;
}
您需要生成 binstubs
来修复问题:
bundle install --binstubs
正如 karlingen 指出的那样,问题是 PATH 问题的结果,但是如果您使用的是 RVM,您将希望以另一种方式获得正确的 ruby 路径...
最好按照 Passenger 自己的指南查找此信息:
我尝试使用 Nginx 部署我的 rails 应用程序,passenger 在 Ubuntu 12.04 x32 上。所有事情都完成后,我访问了我的 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 环境:
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
有人遇到过同样的问题吗? 谢谢
更新:
我的 /etc/nginx/nginx.conf
和 /etc/nginx/sites-enabled/blog.conf
:
https://gist.github.com/wall2flower/b3f410317585a8803a27
https://gist.github.com/wall2flower/72316e8b437d654e7070
尝试:
bundle exec passenger start ...
您确实遇到了一些 PATH 问题。在 /etc/nginx/nginx.conf
中,对于 passenger,您应该指向安装了 bundler 的 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;
}
您需要生成 binstubs
来修复问题:
bundle install --binstubs
正如 karlingen 指出的那样,问题是 PATH 问题的结果,但是如果您使用的是 RVM,您将希望以另一种方式获得正确的 ruby 路径...
最好按照 Passenger 自己的指南查找此信息: