Rails 3:乘客找不到由Bund安装的git gem

Rails 3.0.0,乘客2.2.15:

  • 创建一个新的Rails项目
  • 添加bundle install到您的Gemfile
  • bundle install
  • 一切正常,从bundle install开始,也可以访问
  • 但是,与旅客一起使用时,它说:

未检出[git://github.com/lmumar/paperclip.git](位于rails3)。 请运行bundle install(Bundler :: GitError)

我已经尝试了bundle install(无济于事),并将BUNDER_HOME设置为〜/ .bundler(Paperclip git由bundler install安装在.htaccess中),并且位于config / *。rb的各个位置,但这也没有成功 。

〜/ .bundler与Rails项目属于同一用户(Passenger在该用户下运行),因此这不是权限问题。 sudo已安装并由bundle install调用。

有什么提示吗?

6个解决方案
70 votes

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

bundle --deployment

哪个将在供应商/捆绑包中安装宝石

Roberto answered 2020-06-27T16:33:32Z
22 votes

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

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

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

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

然后,即使从旅客装载,捆扎机也能识别正确的路径。 没有乘客,它总是可以工作(并使用/home/xxxxx/.bundler,如问题所述)

junique answered 2020-06-27T16:34:05Z
8 votes

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

但是,如果您想继续使用系统gem,那么只需在Apache配置中告诉一行乘客在哪里可以找到系统gem:

SetEnv GEM_HOME /Users/bob/.bundle

在我的博客中,在使用GEM_HOME设置了Passenger的博客上有一篇更详尽的文章

indirect answered 2020-06-27T16:34:34Z
4 votes

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

require 'bundler/setup'
declan answered 2020-06-27T16:34:54Z
0 votes

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

运行Web服务器的用户无法检查GIT gem是否可用。由于使用Web用户的“ Passenger”运行,因此无法执行此检查。

我发现的解决方案是将Web用户添加到rvm组:

usermod -a -G rvm apache

我希望这会对其他不想将GEM部署到“供应商/捆绑销售商”中的人有所帮助。

Code-Source answered 2020-06-27T16:35:27Z
0 votes

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

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

Rishinder answered 2020-06-27T16:35:52Z
translate from https://stackoverflow.com:/questions/3605235/rails-3-passenger-cant-find-git-gems-installed-by-bundler