ruby-on-rails - 多个Rake版本——最佳实践

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

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

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

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

管理此问题的最佳实践是什么?

我应该在 Gemfile 中指定 Rake 的版本(对于 Rails 3 应用程序,使用 Bundler)吗?如果我这样做,那么我总是需要捆绑 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) 需要一些东西会与其他开发者很好地合作。

人们如何处理这个问题?什么看起来效果很好?什么不可以?

如有任何反馈,我们将不胜感激!

最佳答案

如果您使用 RVM 和 gemsets,则可以完全避免捆绑执行问题。

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

使用示例:

rvm use 1.9.2; rvm gemset create foobar

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

rvm use 1.9.2@foobar

这将使 rvm 使用正确的 gemset,并且您不会出现版本冲突或终身使用 bundle 执行程序。

创建 .rvmrc 文件后,不要忘记 cd out 然后返回或发出 a

rvm reload

开始使用新的 gemset

关于ruby-on-rails - 多个Rake版本——最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8370113/

相关文章:

ruby-on-rails - 无法在 FactoryGirl 中求和并将其作为参数传递

sql - Ruby ActiveRecord 通过关联进行多重联接

ruby-on-rails-3 - 验证 :presence vs validates_presence_of using rails 3

Ruby/Rails : how to handle incoming URLs with ruby 1. 8 UTF-8 编码(如\xc3\xa1)

ruby - 在非 ruby​​ 项目中使用 rake

ruby-on-rails - 如何在不删除所有较新迁移的情况下再次运行迁移?

ruby-on-rails - rake 数据库 :dump fails when specifying an environment

ruby-on-rails - Rails rake 更新问题 - 在任何源中都找不到 rake-10.4.2

ruby-on-rails - Rails 测试(MiniTest)中assigns 方法的目的是什么?

ruby-on-rails - 使用 postgres.app 使用现有的 Rails 应用程序迁移到 postgresql