- Error message:
- no such file to load -- bundler
这是完整的错误:http://tinypic.com/view.php?pic=vpx36r&s=7
我做了一个gem install bundler,所以我知道安装了bundler,但我认为它正在寻找宝石的错误位置.
似乎Passenger已经安装了ruby-enterprise-1.8.7,看起来好像1.8已经安装在这个盒子里.
gem env给了我以下内容:
- - RUBYGEMS VERSION: 1.4.2
- - RUBY VERSION: 1.8.7 (2009-12-24 patchlevel 248) [x86_64-linux]
- - INSTALLATION DIRECTORY: /opt/local/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8
- - RUBY EXECUTABLE: /opt/local/ruby-enterprise-1.8.7-2010.01/bin/ruby
- - EXECUTABLE DIRECTORY: /opt/local/ruby-enterprise-1.8.7-2010.01/bin
- - RUBYGEMS PLATFORMS:
- - ruby
- - x86_64-linux
- - GEM PATHS:
- - /opt/local/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8
- - /root/.gem/ruby/1.8
- - GEM CONFIGURATION:
- - :update_sources => true
- - :verbose => true
- - :benchmark => false
- - :backtrace => false
- - :bulk_threshold => 1000
- - REMOTE SOURCES:
- - http://rubygems.org/
从我所看到的,它似乎是一个路径问题,但我不知道解决它的最佳方法是什么.
这是输出
哪个ruby:
- /opt/local/ree/bin/ruby
捆绑:
- /opt/local/ree/bin/bundle
我在该目录中运行bundle install,它给了我:
- Your bundle is complete! It was installed into ./vendor/bundle
解决方法
我的意思是,根据你的gem env输出,你有一些安装
- /opt/local/ruby-enterprise-1.8.7-2010.01/
但你也有ruby和bunlder
- /opt/local/ree/
所以,从这里开始检查所有路径是否正确和/或你没有任何双重安装(好吧,它只是足以检查你的ENV是否连贯).
另一个问题可能与你的Nginx.conf有关,你应该有这样的事情:
- [...]
- http {
- passenger_root /your/path/to/passenger/gem;
- passenger_ruby /path/to/ruby;
- [...]
- }
更新(刚刚看到Nginx.conf的其他注释):
正如您所看到的,路径存在问题:您有两个用于ruby和gems安装的路径:
- /opt/local/ruby-enterprise....
和
- /opt/local/ree
你应该删除后者(不是在phisically,只是审查ENVs指向第一个)
编辑:
要更改你的env,你可以将以下行附加到你的/etc/bash.bashrc(或者默认情况下从你的shell加载whaterver文件):
- PATH="/opt/local/ruby-enterprise-1.8.7-2010.01/bin:$PATH"
然后注销并登录,或者进行快速测试,从shell发出这个命令:
源/etc/bash.bashrc
现在,重试以查看默认情况下使用的二进制文件:
- which ruby
- which gem
- which rake
- gem env
- ...
一切都应该有/opt/local/ruby-enterprise-1.8.7-2010.01/前缀(这是从Nginx和乘客配置中使用的).
UPDATE2:从评论中可以看出,你至少有3个ruby安装:
>来自/usr/lib / ruby /中的包管理器的ruby(你使用的是ubuntu linux吗?)
> / opt / local / ree中的ruby/
> / opt / local / ruby-enterprise -….中的ruby
在这一点上,最好的办法是:
>卸载/ opt / local /下的所有rubys及其所有宝石
>卸载(purge)系统提供的ruby包(你不需要它)
>安装和设置RVM:https://rvm.io
>使用RVM重新安装乘客:https://rvm.io/integration/passenger/>修复Nginx.conf以使用乘客路径和ruby