2015-01-02 49 views
1

有没有办法在Gemfile中指定每个gem应该安装在哪里?预期的结果将是以后如果我在我的Rails应用程序目录中输入:Ruby on Rails Bundler:将gem安装在由Gemfile指定的不同路径中?

bundle install

然后根据Gemfile中,一些宝石将被默认安装到系统默认gempath或指定的路径在之前的--path选项中,而其他一些gem将被下载并安装到使用Gemfile指定的路径中。

我该如何通过Gemfile来做到这一点? 或者可能使用.bundle/config?有任何想法吗?

使用bundle的--path选项不是解决方案,因为它会强制安装到同一目录中的所有gem。例如,如果我依赖于4个gem:A,B,C和D.我想运行bundle命令,然后自动将A和C安装到默认目录中,而将B和D安装到自定义目录中。

而且使用在Gemfile中下面一行是不是一个解决方案:

gem 'rspec', :path => 'some/path'

,因为这需要用户手动下载宝石,放入指定的路径事前,但我希望Gem自动下载并安装到该路径中。可能吗?怎么样?

谢谢!

+0

'捆绑安装--path供应商/ bundle',但你需要删除Gemfile的'path'选项 –

+0

不会强制将所有gem安装到同一目录 – Bruce

回答

2

据我所知,所述捆绑宝石真正遵循您的意见和在--path=/your/path安装全部的指定的路径。因此,一般来说,应该没有问题,只要您使用

$ bundle install --path=/your/path 

无论如何,如果你想防止捆绑安装全球的东西,即使你没有设置--path标志,你可以设置一个全局gem前缀。 随着--user标志每个宝石将被安装到您的主目录。只需添加gem: --user-install您.gemrc

$ echo "gem: --user-install" > ~/.gemrc 

要知道,这条规则也被用来如果您手动安装一个宝石与

$ gem install my_awesome_gem 
+0

谢谢Tim。但是,这实际上并不能解决问题。如上所述,bundle install --path =/your/path将强制安装到同一目录中的所有gem,而我想运行bundle命令,然后自动将一些gem安装到默认系统目录并将一些gem安装到自定义目录中。 – Bruce

+0

我认为这对于Bundler来说很难完成。据我所知,Bundler不提供这样的功能。即使您手动安装系统宝石,Bundler通常会禁用该功能以在设置'--path'时共享宝石,因为Bundler的整个想法是创建一个封闭的环境来开发应用程序。无论如何,您可以尝试通过挖掘应用程序中的'.bundle/config'文件来禁用该行为并启用gem共享。 – TimKaechele

相关问题