2010-10-14 83 views
9

我们的团队使用了不同的数据库,为彼此,我们使用的是捆绑所以我们的Gemfile中包含回购创作者的数据库连接(MySQL的)条件语句中的Gemfile

我使用PG和由于有点懒惰和恐惧打破有些东西,我不想使用mysql,所以我只是在我们的Gemfile中添加一个gem“pg”。

当然,因为我们使用Git,它会始终显示为一个修改过的文件,我们都使用的Gemfile,所以我们不能gitignore,或与我们的修改提交。

问题是,我们该怎么做呢?在bundler中是否有条件,还是仅仅需要声明我在其他地方使用某个gem?

回答

15

由于Gemfile,像Rakefile,仅仅是一个Ruby的块,你可以在条件语句,如果你认为它会简化你的生活抛出。例如:

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

有时你必须为不同的Ruby版本做这个,因为1.8和1.9有时需要不同的gem。

+0

Gem.available是什么?做?它会检查宝石源中或本地主机中的宝石可用性吗? – corroded 2010-10-14 19:02:59

+0

它只是检查它是否已经安装,而不是它是否可以安装。由于您可以创建自己的.gem文件,因此在技术上可以安装在任何地方都无法使用的gem。 – tadman 2010-10-15 16:48:58

+0

我明白了。谢谢! – corroded 2010-10-16 01:20:49