我正在使用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
,但我不想作弊。
感谢。
答案 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设置 将出现在宝石列表中。此设置是一个记忆选项。