【问题标题】:Multiple Rake Versions--Best Practice多个 Rake 版本——最佳实践
【发布时间】:2012-01-12 07:06:24
【问题描述】:

与大多数 Rails 开发人员一样,我的系统上有很多 Rails 应用程序——运行不同版本的 Rails。因此,我现在有多个版本的 Rake(0.8.7 和 0.9.2)。

每个应用程序都部署在自己的 VPS 上,只运行一个版本的 Rails 和一个版本的 Rake。

此外,这些项目中还有其他开发人员拥有自己的设置,他们可能拥有或不拥有相同(或两者)版本的 Rake。

管理此问题的最佳做法是什么?

我应该在我的 Gemfile 中指定一个 Rake 版本吗(对于 Rails 3 应用程序,使用 Bundler)?如果我这样做,那么我总是需要bundle exec rake,这很好——但我想知道这是否是现在的标准。每个人都必须这样做吗?有办法避免吗?

另外,as noted elsewhere,我必须更新我的 Rakefile

require 'rake/dsl_definition'
include Rake::DSL

如果我想使用 Rake 0.9.2。即使这样,我也会收到以下警告:

/Library/Ruby/Gems/1.8/gems/rake-0.9.2/lib/rake/file_utils.rb:10: warning: already initialized constant RUBY
/Library/Ruby/Gems/1.8/gems/rake-0.9.2/lib/rake/file_utils.rb:84: warning: already initialized constant LN_SUPPORTED

我应该只在我的 Gemfile 中指定 0.8.7 吗?看来我应该可以使用 0.9.2。

我 (a) 需要服务器上的应用在没有 bundle exec 的情况下工作,所以像 rake db:migrate 这样简单的东西可以工作,并且 (b) 需要一些可以与其他开发人员很好地配合的东西。

人们是如何处理这个问题的?什么似乎运作良好?什么没有?

任何反馈都将不胜感激!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 rake


    【解决方案1】:

    如果你使用 RVM 和 gemsets,你可以一起避免 bundle exec 问题。

    例如,我制作的每个应用程序或项目都有自己的 gemset。

    示例用法:

    rvm use 1.9.2; rvm gemset create foobar
    

    然后在应用程序的.rvmrc文件中:

    rvm use 1.9.2@foobar
    

    这将使 rvm 使用正确的 gemset,并且您不会遇到版本冲突或终身使用 bundle exec 卡住。

    一旦您创建了 .rvmrc 文件,请不要忘记 cd 出来然后重新输入或发出一个

    rvm reload
    

    开始使用新的 gemset

    【讨论】:

      【解决方案2】:

      使用捆绑包并使用bundle exec rake 调用正确的版本几乎是可行的方法。也就是说,输入所有这些内容很快就会变老。

      您可以做的是bundle install --binstubs,它将包含您使用的gem 的可执行存根。然后你可以简单地调用(例如)bin/rake cucumber:ok

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-11-06
        • 2013-03-25
        • 2011-11-29
        • 1970-01-01
        • 2021-11-30
        • 2015-10-28
        • 2014-05-01
        相关资源
        最近更新 更多