4

我在 Gemfile 中有这样的行:

group :test do
  ...
  gem 'cucumber', :git => "git://github.com/aslakhellesoy/cucumber.git"
  ...
end

当我尝试通过在服务器上进行部署时bundle install --deployment --quiet --without development test,出现错误:

 sh: git: command not found
 ** An error has occurred in git when running `git clone "git://github.com/aslakhellesoy/cucumber.git" "/home/test/rails_apps/test_app/shared/bundle/ruby/1.8/cache/bundler/git/cucumber-3eb3f1a09813a1271fada66aac31d953ef2ad625" --bare --no-hardlinks. Cannot complete bundling.

我在服务器上没有 git 可执行文件。但我不想使用 git,因为 cucumber 在 :test 组中,我使用“--without test”执行捆绑程序!

我该怎么办?

4

1 回答 1

3

没有办法做到这一点。因为这是捆绑器的功能

请注意,在 bundle install 时,bundler 会下载并评估所有 gem,以便创建所有必需 gem 及其依赖项的单个规范列表。这意味着您不能在不同的组中列出相同 gem 的不同版本。有关更多详细信息,请参阅了解 Bundler。

http://gembundler.com/man/gemfile.5.html(见组部分)

你的服务器上没有 git 或任何 gem 怎么办?你应该使用bundle pack. 但是,现在bundle pack 不要使用 git。然后你应该手动打包 git 源:

cd vendor/git
git clone git://github.com/foo/foo.git

然后,在您的 Gemfile 中,

gem "foo", :path => "vendor/git/foo"

.

http://github.com/carlhuda/bundler/issues/labels/git#issue/67

于 2010-09-17T15:45:53.980 回答