Ruby on rails 多个Rake版本——最佳实践
和大多数Rails开发人员一样,我的系统上有很多Rails应用程序——运行不同版本的Rails。因此,我现在有了多个版本的Rake(0.8.7和0.9.2) 每个应用程序都部署在自己的VPS上,只运行一个版本的Rails和一个版本的Rake 此外,这些项目中还有其他开发人员拥有自己的设置,他们可能拥有或不拥有相同(或两者)版本的Rake 管理此问题的最佳实践是什么 我应该在我的Gemfile中指定Rake的版本吗(对于Rails 3应用程序,使用Bundler)?如果我这样做,那么我总是需要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)?如果我这样做,那么我总是需要捆绑
捆绑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