Gemfile中的条件

时间:2010-10-14 17:15:47

标签: ruby-on-rails gem bundler

我们的团队互相使用不同的数据库,我们正在使用bundler,因此我们的Gemfile包含repo creator的db连接器(mysql)

我正在使用pg,由于有点懒惰和害怕破坏,我不想使用mysql,所以我只是在我们的Gemfile中添加一个gem“pg”。

当然,由于我们正在使用git,它将始终显示为已修改的文件,并且我们都使用Gemfile,因此我们无法对其进行gitignore或将其与我们的更改一起提交。

问题是,我们该如何解决这个问题?在捆绑器中是否存在条件或我是否必须声明我在其他地方使用某个宝石?

2 个答案:

答案 0 :(得分:16)

由于GemfileRakefile一样,只是Ruby的一大块,如果您认为它会简化您的生活,您可以抛出条件。例如:

if (Gem.available?('pg'))
  gem 'pg'
else
  gem 'mysql2'
end

有时你必须为不同的Ruby版本执行此操作,因为1.8和1.9有时需要不同的宝石。

答案 1 :(得分:1)

您可以使用群组。 Yehuda Katz在这里解释了它(例如pg gem)http://yehudakatz.com/2010/05/09/the-how-and-why-of-bundler-groups/