2011-10-23 31 views
6

我从RVM移动到我的生产服务器上的rbenv。我使用“rvm implode”卸载了rvm并安装了rbenv,ruby 1.9.2,rails,passenger和nginx-module。 我还没有从改变passenger_root如下修改我的originlal nginx.conf开:搬到rbenv休息乘客(nginx)

1st Try: 
passenger_root /root/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/passenger-3.0.9; 
passenger_ruby /root/.rbenv/versions/1.9.2-p290/bin/ruby; 
2nd Try: 
passenger_root /root/.rbenv/shims/passenger; 
passenger_ruby /root/.rbenv/shims/ruby; 

现在,当我尝试运行我的应用我看到error.log中以下错误:

[error] 1291#0: *105 open() "/home/passenger/grabber/current/public/view" failed (2: No such file or directory) 

这清楚地表明乘客未启动,我的导轨应用程序无法识别。当我尝试手动启动乘客,我得到以下错误:

[ pid=17605 thr=70022120 file=utils.rb:176 time=2011-10-23 23:40:41.917 ]: *** Exception LoadError in PhusionPassenger::Rack::ApplicationSpawner (libruby.so.1.9: cannot open shared object file: No such file or directory - /home/passenger/grabber/shared/bundle/ruby/1.9.1/gems/nokogiri-1.5.0/lib/nokogiri/nokogiri.so) (process 17605, thread #<Thread:0x858e7d0>): 
from /home/passenger/grabber/shared/bundle/ruby/1.9.1/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:239:in `require' 

我已经安装了引入nokogiri几次,我可以在我的宝石列表引入nokogiri看到。我不知道为什么搬到rbenv已经打破了我的乘客。

+0

这里有什么帮助吗? – Ved

+0

不管怎样,我删除了rbenv并移回了RVM。甩掉包袱。 – Ved

回答

-12

似乎有乘客和rbenv(确保你知道这一点,你搬起石头砸自己的脚前)之间的不兼容 - 所以我删除rbenv搬回RVM ...

+2

这是错的。 – briangonzalez

+1

错误断言。乘客和rbenv工作正常。 – gdurelle

19

它可以使用rbenv,nginx和乘客。有些已经进行了系统范围的安装。 http://blakewilliams.me/blog/4-system-wide-rbenv-install

我目前正在测试在我的开发环境,因此,假设你已经安装了rbenv并且具有正确的初始化rbenv在.bashrc

gem install passenger 
rbenv rehash 
sudo bash -c "source ~/.bashrc && passenger-install-nginx-module" 

您必须gem install passenger得到垫片。做bundle install安装乘客不会给你这些。

最后:

passenger-config --root 

会给你passenger_root路径:

rbenv which ruby 

passenger_ruby路径。

乘客垫片指向可执行文件,但passenger_root必须是该文件夹的路径。我试过使用红宝石垫片,但它不起作用。我还没有深究为什么。

顺便说一句,我在我的Gemfile中有nokogiri宝石。哦,如果您有.rvmrc和/或config/setup_load_paths.rb,则应该安全地将它们作为乘客自动装载打捆机移除。

我仍然需要做一些更多的测试,但目前为止这么好。

+0

我已将链接更改为最近的博客文章,但我尚未确认其有效。如果有人确认,请告诉我。 – PhilT

+1

rbenv的“支持”似乎支持rbenv的实际功能,rbenv的每个Ruby应用程序都有不同的ruby二进制文件,并使用每个应用程序的配置来选择它。您必须手动绕过rbenv并将Passenger配置为使用特定的Ruby二进制文件,并且您只能为所有Passenger指定一个Ruby二进制文件。 @Ved基本上是正确的,它不被支持。但是rvm也不是。 –