捆绑的宝石安装在奇怪的位置

时间:2011-11-19 08:52:55

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

我正在使用Subversion和Capistrano来部署我的rails应用程序。组织的一部分是将所有捆绑的宝石放在“共享”文件夹中,这样应用程序就不必随身携带它们并在每次部署时都安装它们。

通常它们位于/shared/bundle/之下,然后有不同的文件夹(宝石,规格等)。但是,出于某种原因,当我运行bundle install时,它们会安装到/shared/bundle/ruby/1.8

一些额外信息:当我运行bundle install时,“成功”行显示为:

  

您的捆绑已完成!它安装在/ home / shared / bundle

没有提及额外的文件夹,但唯一的文件夹bundle包含ruby目录。

bundle config的输出:

frozen
  Set for your local app (/home/myapp/current/.bundle/config): "1"

disable_shared_gems
  Set for your local app (/home/myapp/current/.bundle/config): "1"

without
  Set for your local app (/home/myapp/current/.bundle/config): "development:test"

path
  Set for your local app (/home/myapp/current/.bundle/config): "/home/myapp/shared/bundle"

我在任何地方都看不到/ruby/1.8的任何内容。我可能会失踪什么?当然我可以将捆绑路径设置为/shared/bundle/ruby/1.8,但我不想作弊。

感谢。

2 个答案:

答案 0 :(得分:2)

Bundler“范围”将其安装到基于Ruby引擎和版本的此文件夹中。

https://github.com/carlhuda/bundler/blob/3431d6d/lib/bundler/settings.rb#L78

"#{path}/#{Bundler.ruby_scope}"

Bundler.ruby_scope定义在https://github.com/carlhuda/bundler/blob/3431d6d/lib/bundler.rb#L141-143

def ruby_scope
  "#{Bundler.rubygems.ruby_engine}/#{Gem::ConfigMap[:ruby_version]}"
end

答案 1 :(得分:0)

bundle install --path=<path>

来自docs

  

将捆绑中的宝石安装到的位置。默认为   gem home,这是gem install安装gem的位置。   这意味着,默认情况下,安装的gem没有--path设置   将出现在宝石列表中。此设置是一个记忆选项。