Rails 3:Passenger无法找到bundler安装的git gem

时间:2010-08-31 00:33:54

标签: ruby-on-rails ruby-on-rails-3 passenger bundler

Rails 3.0.0,Passenger 2.2.15:

  • 创建新的Rails项目
  • 添加gem 'paperclip', :git => 'git://github.com/lmumar/paperclip.git', :branch => 'rails3' 到您的Gemfile
  • bundle install
  • 一切正常,从rails/script server&访问也有效
  • 然而,当使用Passenger访问时,它说:

git://github.com/lmumar/paperclip.git(在rails3)未签出。请运行bundle install(Bundler :: GitError)

我已尝试bundler pack(没有帮助)并在.htaccess和config / *中的各个位置设置BUNDER_HOME到〜/ .bundler(由bundler install安装Paperclip git) .rb,但这也不成功。

〜/ .bundler由与Rails项目相同的用户拥有(Passenger在此用户下运行),因此它不能是权限问题。 sudo由bundle install安装并调用。

任何提示?

6 个答案:

答案 0 :(得分:70)

我以前遇到过这个问题,请使用

解决
bundle --deployment

将在vendor / bundle

中安装gem

答案 1 :(得分:22)

解决方案(花了我几个小时):

确保RAILS_ROOT/.bundle/config(SetEnv等对我不起作用)包含:

--- 
BUNDLE_PATH: /home/xxxxx/.bundler

注意BUNDLE_PATH,而不是BUNDLER_PATH!还有一个DISABLED_SHARED_GEMS = 1条目,我删除了它。

然后,即使从Passenger加载,bundler也会识别正确的路径。没有乘客,它总是有效(并使用/home/xxxxx/.bundler,如问题所述)

答案 2 :(得分:8)

您可以使用bundle install --path vendor/bundle在本地安装宝石,而不是系统宝石。

如果你想继续使用系统宝石,那么你只需要在Apache配置中使用一行来告诉Passenger在哪里找到你的系统宝石:

SetEnv GEM_HOME /Users/bob/.bundle

我的博客Using Passenger with GEM_HOME set

上有一篇更精细的文章

答案 3 :(得分:4)

我在编写Sinatra应用程序时遇到了这个问题。要解决这个问题,我将此行添加到 config.ru

require 'bundler/setup'

答案 4 :(得分:0)

我遇到了同样的问题,这是由于RVM的权利问题。

运行Web服务器的用户无法检查GIT gem是否可用。 作为使用Web用户运行的“Passenger”,它无法进行此检查。

我找到的解决方案是将网络用户添加到rvm组:

usermod -a -G rvm apache

我希望这会帮助其他一些不希望将GEM部署到“供应商/捆绑”中的人。

答案 5 :(得分:0)

我以sudo用户身份安装了乘客gem及其apache模块,这就是我的问题。

最初使用sudo的原因是我从railscasts的第122集中复制了代码。在没有sodu访问权限的情况下安装它可以解决此问题。由于Ruby是使用rvm安装的,因此在我的系统上没有sudo访问权限。

相关问题