配置Ruby项目以使用Gemfile之外的gem

时间:2012-10-10 17:41:45

标签: ruby-on-rails ruby rubygems bundler

从我的理解(以及我通过使用它看到的),如果一个项目有一个Gemfile,它只能访问Gemfile中的gem(或者更具体地说,是Gemfile.lock文件)。

我希望能够使用系统上安装的一些宝石,但不是特别在Gemfile.lock文件中 - 我该怎么做呢?

根据我的推理:我们有一个开发人员虚拟机设置,可确保一切都是最新的;但是如果没有在项目中运行bundle update,我们使用的工具(依赖于Gem)就无法更新(如果它不在Gemfile中,甚至可以使用)。

我可以保持gem的更新,但不能强制项目使用版本而不更新Gemfile.lock信息 - 所以我宁愿让项目使用所有或特定的系统宝石,只需将Gemfile作为一个“快速让您的系统与项目保持同步”。

另一个注意事项:应用程序使用rake任务进行操作(Tool有一个gem,gem查找特定的rake文件以进行自定义配置)。

2 个答案:

答案 0 :(得分:1)

您的系统宝石安装在哪里?

确保将GEM_PATH env var设置为该位置。

使用gem env gempath检查您是否正确设置了它。

如果没有,请在~/.bashrc~/.bash_profile

中进行设置
export GEM_PATH='/path/to/system/gems'

答案 1 :(得分:0)

你只需要要求库(读取宝石)。

您可以在使用gem功能的特定文件中要求它,或者您可以在config/application.rb(在Rails 3中)中要求它使整个应用程序可以使用它。

为安全起见,请确保宝石可用:

if Gem::Specification::find_by_name('my_gem')
  require 'my_gem'
end