我正在尝试设置Passenger,Rails和Nginx。 Nginx正确路由到Passenger,但是当我加载页面时,我收到以下错误:
cannot load such file -- bundler/setup (LoadError)
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
/usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:219:in `block in run_load_path_setup_code'
/usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:333:in `running_bundler'
/usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:217:in `run_load_path_setup_code'
/usr/share/passenger/helper-scripts/rack-preloader.rb:96:in `preload_app'
/usr/share/passenger/helper-scripts/rack-preloader.rb:150: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>'
我不明白的是:
我已经在任何地方安装了捆绑器,但一定是错过了重要的东西。
我觉得我现在已经接近掌握了整个事情,但却无法读懂自己的解决方案。
如果你转到http://privateering.me:8000/,你可以看到错误转储的其余部分。
答案 0 :(得分:3)
今天早上好!我喝咖啡了!我们走了!
我不明白为什么有一大堆对ruby的引用 1.9.1?
正如tessi所提到的,对于Ruby 1.9.3的某些版本,路径中的1.9.1是正常的。这很奇怪而且令人困惑,但事实就是如此。这本身并不是立即引起的。
此外,如何更改运行哪位用户?
Phusion有一些非常好的documentation for Phusion/Nginx,其中包含所有配置参数。但它可能没有必要,因为正如user-related docs告诉你的那样,Passenger默认会尝试以拥有它的用户身份运行每个应用程序。
我是否应该在乘客的用户身上安装一堆宝石?
也许。可能不是。往上看。只要有可能,就没有一个“乘客用户”。只有当用户切换不可用时,Passenger才会回退为单个用户(无论nginx配置的是什么)。
为什么在安装nginx乘客套件时没有这个设置?
因为Passenger只是一个多租户,多语言应用服务器。它不知道你是在运行一个应用程序还是一百个,Ruby或Python,Rails或Sinatra或Merb或者自制的东西。乘客的工作是在你告诉它之后运行应用程序;你的工作是让每个应用程序进入可运行状态。
RVM如何使事情变得复杂?使用RVM时需要注意什么?系统中的每个用户是否都获得了我在RVM中设置的ruby版本?如果没有,我怎么能这样做?
RVM使事情充分复杂化。默认情况下,它是以单用户身份安装的,仅影响单个用户。这是它的确切用例:当我登录时,我想要一个不同的Ruby并且不想污染系统。由于RVM工作的特殊方式,还有其他复杂情况。
但是,Phusion意识到有些人会出于某种原因在生产中使用RVM and covers that situation in the installation documentation。
通过将RVM从图片中删除,可以轻松避免涉及RVM和Passenger的大多数痛苦。除非你是一个极具异国情调的平台,否则建立一个现代的Ruby就是./configure && make && make install
的问题。一行,您在/usr/local
中拥有一个稳定的,系统范围的Ruby,您可以轻松访问,乘客和其他所有内容。