在部署之前检查具有local:path的gems

时间:2011-05-09 09:46:21

标签: ruby-on-rails ruby bundler

对于某些Rails应用程序,我希望在部署时有一个安全防护,以检查是否有一些gems配置为在本地路径上查找。

一些上下文可能有助于理解。

当我处于开发模式时,我希望在“本地模式”中拥有一个gem。在我的 Gemfile 中,它的配置如下:gem 'my_gem', '~> 0.9', :path => './path/to/my_gem'

在制作中,我希望如下:gem 'my_gem', '~> 0.9', :git => 'git@git.example.com:my_gem.git'

我尝试制作一个shell脚本(或函数)来读取 Gemfile.lock ,如果gem处于“本地模式”,则退出并显示错误。

如果我忘记切换回正确的模式,我的部署脚本可以使用它来中止。

任何帮助将不胜感激。 感谢

2 个答案:

答案 0 :(得分:9)

使用

group :development do
  gem 'my_gem_for_development', '~> 0.9', :require => './path/to/my_gem/lib/my_gem.rb' , :path => './path/to/my_gem/lib'
end
group :production do
  gem 'my_gem', '~> 0.9', :git => 'git@git.example.com:my_gem.git'
end

答案 1 :(得分:0)

这是你正在开发的宝石吗?为什么不编写gem来查看rails env并根据它更改设置。然后你可以使用一个规范版本的宝石,你不必担心检查你正在使用哪个宝石版本。否则,bor1s的解决方案就可以了。