Rails 3:Passenger找不到捆绑器安装的git gems

Rails 3.0.0,乘客2.2.15:

  • 创build一个新的Rails项目
  • gem 'paperclip', :git => 'git://github.com/lmumar/paperclip.git', :branch => 'rails3' rails3 gem 'paperclip', :git => 'git://github.com/lmumar/paperclip.git', :branch => 'rails3'到您的Gemfile
  • bundle install
  • 一切正常,从rails/script server和访问开始也可以
  • 但是,在与乘客联系时,它说:

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

我已经尝试了bundler pack (并没有帮助),并设置BUNDER_HOME到〜/ .bundler(Paperclip git安装在那里通过bundler install )在.htaccess和config / *。rb中的各个地方,但这不成功也是。

〜/ .bundler和Rails项目(Passenger在这个用户下运行)拥有相同的用户,所以它不能成为一个权限问题。 sudo被安装并被bundle install调用。

任何提示?

我曾经有这个问题,解决使用

 bundle --deployment 

其中将安装在供应商/捆绑的gem

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

马雷确定RAILS_ROOT/.bundle/config (SetEnv等不适合我)包含:

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

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

然后,捆绑商即使从Passenger加载也能识别正确的path。 没有乘客,它总是工作(并使用/home/xxxxx/.bundler,如问题中所述)

您可以使用bundle install --path vendor/bundle来在本地安装gems,而不是安装到系统gem中。

但是,如果您想继续使用系统gem,那么您的Apacheconfiguration中只有一行告诉Passenger在哪里find您的系统gem:

 SetEnv GEM_HOME /Users/bob/.bundle 

在使用GEM_HOME集合的使用Passenger上,我的博客上有一个更详细的写法

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

 require 'bundler/setup' 

我有同样的问题,这是由于与RVM的权利问题。

运行Web服务器的用户无法检查GIT是否可用。 作为使用networking用户运行的“乘客”,它不能做这个检查。

我find的解决scheme是将networking用户添加到rvm组:

 usermod -a -G rvm apache 

我希望这会帮助一些不想将创业板部署到“供应商/捆绑”的人。