6

我用 Nginx 安装了 Phusion Passenger,配置 Nginx 指向正确的目录,然后我运行 webapp 目录,这已经下载了 gemfiles,但是找不到 gems。

当我访问该网站时,我得到标准的乘客错误页面,上面写着:

Error message:
no such file to load -- bundler

这是完整的错误:http ://tinypic.com/view.php?pic=vpx36r&s=7

我已经做了一个gem install 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/

从我读过的内容来看,这似乎是一个路径问题,但我不知道修复它的最佳行动方案是什么。

这是输出

哪个红宝石:

/opt/local/ree/bin/ruby

哪个捆绑包:

/opt/local/ree/bin/bundle

我已经在该目录中运行了 bundle install ,它给了我:

Your bundle is complete! It was installed into ./vendor/bundle
4

1 回答 1

8

看起来你有一些路径问题(正如你已经说过的)。尝试检查为什么您的 ruby​​ 安装有两个不同的路径。

我的意思是,根据你的 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

您应该删除后者(不是物理上的,只需查看 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/ 中的红宝石
  • /opt/local/ruby-enterprise-....中的红宝石

在这一点上,最好的做法是:

  • 卸载 /opt/local/ 下的所有 ruby​​ 及其所有 gem
  • 卸载(清除)系统提供的 ruby​​ 包(你不需要它)

  • 安装和设置 RVM:https ://rvm.io

  • 使用 RVM 重新安装乘客:https ://rvm.io/integration/passenger/
  • 修复 nginx.conf 以使用乘客路径和 ruby
于 2011-06-20T10:35:27.540 回答