像大多数 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/