我正在尝试部署我的第一个 Rails 应用程序的草稿。它在我的本地 WEBRick 服务器上运行良好。
但是,在运行 Apache2 和 Passenger 的 Ubuntu VPS 上,当我在浏览器中导航到该应用程序时,我得到:
Error message:
no such file to load -- bundler/setup
Exception class:
LoadError
具有以下回溯:
0 /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb 36 in `gem_original_require'
1 /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb 36 in `require'
2 /home/user/public/foo.com/config/boot.rb 6
3 /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb 36 in `gem_original_require'
4 /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb 36 in `require'
5 /home/user/public/foo.com/config/application.rb 1
6 /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb 36 in `gem_original_require'
7 /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb 36 in `require'
8 /home/user/public/foo.com/config/environment.rb 2
9 /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb 36 in `gem_original_require'
10 /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb 36 in `require'
11 config.ru 3
12 /usr/lib/ruby/vendor_ruby/rack/builder.rb 51 in `instance_eval'
13 /usr/lib/ruby/vendor_ruby/rack/builder.rb 51 in `initialize'
14 config.ru 1 in `new'
15 config.ru 1
该应用程序是使用 Ruby v1.9.3 构建的(或者我是这么认为的),我已将其安装在 Ubuntu 上(在应用程序根目录中,ruby -v
回报ruby 1.9.3p286 (2012-10-12 revision 37165) [i686-linux]
).
As per 这个问题 https://stackoverflow.com/questions/7270210/no-such-file-to-load-bundler-setup-ruby-on-rails,我已经跑了gem install bundle
and bundle install
在应用程序根目录中。我还导入了正确的gemset
从我的本地计算机到 VPS 应用程序根目录。
As per 这个问题 https://stackoverflow.com/questions/10499364/no-such-file-to-load-bundler-setup-in-rails-3-2-with-passenger,我尝试将宝石集更改为/home/user/.rvm/gems/ruby-1.9.3-p286@foo
(其中 foo 是正在使用的 gemset 的名称),但这只会使回溯变得更长。
任何帮助进一步解决此问题将不胜感激!
EDIT:我最终通过卸载 Rails、RVM、Ruby(RVM 版本)和 Passenger,然后重新安装 Rails、Passenger 和 Ruby(但不是 RVM)来让我的应用程序正常运行。
如何设置正确的值
如果您不确定将passenger_ruby 设置为什么值,则可以按如下方式找到正确的值。
首先,找出乘客配置工具的位置并记下它:
which passenger-config
/opt/passenger/bin/passenger-config
接下来,激活您想要使用的 Ruby 解释器(如果适用,还有 gemset)。例如,如果您使用 RVM 并且使用 Ruby 2.2.1,您可能需要运行以下命令:
rvm use 2.2.1
最后,使用其完整路径调用 Passenger-config,并传递 --ruby-command 作为参数:
/opt/passenger/bin/passenger-config --ruby-command
passenger-config was invoked through the following Ruby interpreter:
Command: /usr/local/rvm/wrappers/ruby-1.8.7-p358/ruby
Version: ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]
To use in Apache: PassengerRuby /usr/local/rvm/wrappers/ruby-1.8.7- p358/ruby
To use in Nginx : passenger_ruby /usr/local/rvm/wrappers/ruby-1.8.7-p358/ruby
To use with Standalone: /usr/local/rvm/wrappers/ruby-1.8.7-p358/ruby /opt/passenger/bin/passenger start
## Notes for RVM users
Do you want to know which command to use for a different Ruby interpreter? 'rvm use' that Ruby interpreter, then re-run 'passenger-config --ruby-command'.
输出告诉您要设置什么值。
现在转到/etc/apache2/mods-available 目录中的passenger.conf 并粘贴上面显示的所需行。
现在执行以下命令,它对我有用,
a2dismod passenger
a2enmod passenger
service apache2 restart
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)