【问题标题】:conditionals in GemfileGemfile 中的条件
【发布时间】:2010-10-14 17:15:46
【问题描述】:

我们的团队彼此使用不同的数据库,并且我们正在使用捆绑器,因此我们的 Gemfile 包含 repo 创建者的数据库连接器(mysql)

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

当然,因为我们使用的是 git,所以它总是会显示为一个修改过的文件,而且我们都使用 Gemfile,所以我们不能 gitignore 它或将它与我们的更改一起提交。

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

【问题讨论】:

    标签: ruby-on-rails gem bundler


    【解决方案1】:

    因为GemfileRakefile 一样,只是Ruby 的一部分,如果你认为它可以简化你的生活,你可以加入条件语句。例如:

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

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

    【讨论】:

    • 什么是 Gem.available?做?它会检查 gem 源或本地主机中的 gems 可用性吗?
    • 它只是检查它是否已经安装,而不是它是否可以安装。由于您可以创建自己的 .gem 文件,因此在技术上也可以安装在任何地方都不可用的 gem。
    • 谢谢!从那时起,Gem.available? 已被弃用,然后被删除。新的等价物是Gem::Specification::find_all_by_name(name).any?
    【解决方案2】:

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

    【讨论】:

    • @MikeEL 该链接已为我准备好了
    猜你喜欢
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多