47

Rails 3.0.0,乘客 2.2.15:

  • 创建一个新的 Rails 项目
  • 添加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.

有什么提示吗?

4

6 回答 6

71

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

bundle --deployment

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

于 2011-02-15T03:50:38.467 回答
22

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

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

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

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

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

于 2010-08-31T01:40:04.020 回答
8

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

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

SetEnv GEM_HOME /Users/bob/.bundle

在我的博客上使用带有 GEM_HOME 设置的乘客有一个稍微详细一点的文章

于 2011-04-08T01:03:36.277 回答
4

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

require 'bundler/setup'
于 2012-02-27T01:54:50.663 回答
0

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

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

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

usermod -a -G rvm apache

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

于 2013-07-16T21:52:48.953 回答
0

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

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

于 2018-09-21T12:20:31.207 回答