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

Ruby on rails 多个Rake版本——最佳实践,ruby-on-rails,ruby-on-rails-3,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)?如果我这样做,那么我总是需要捆绑

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

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

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

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

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

此外,我必须用

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
我应该在文件中指定0.8.7吗?看起来我应该能够使用0.9.2

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

人们是如何处理这件事的?什么似乎很有效?什么不可以


任何反馈都将不胜感激

使用bundle并使用
bundle exec-rake调用正确的版本几乎是一种方法。也就是说,所有这些都会很快变老


您可以做的是
bundle安装--binstubs
,它将包括您使用的gems的可执行存根。然后,您只需调用(例如)bin/rake cumber:ok

如果您使用RVM和gemset,您就可以避免bundle exec问题

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

用法示例:

rvm use 1.9.2; rvm gemset create foobar
然后在applications.rvmrc文件中:

rvm use 1.9.2@foobar
这将使rvm使用正确的gemset,并且您不会有版本冲突,也不会终身使用bundle exec

创建.rvmrc文件后,不要忘记先将其cd输出,然后再返回或发出

rvm reload
开始使用新的gemset