我想将Rails 2.2.2用于一个项目,将Rails 2.3.2用于另一个项目。两者都已安装。
rails _2.2.2_ --version
应该做什么?我已经读过它使2.2.2成为工作版本 - 也就是从那一点开始使用的版本。但是当我检查rails --version
时,我得到Rails 2.3.2
。所以,我也想知道rails --version
告诉我的是什么;它只是我拥有的最新版本的Rails,还是将用于rake
的版本?
我了解RVM。这是在不同项目中使用不同版本的Rails的最佳方法吗?
答案 0 :(得分:8)
是“rails --version”告诉哪个是最新版本的rails。如果要检查机器中安装的不同版本的导轨,则必须执行“gem list”,其中列出了机器中安装的所有宝石及其版本。例如: -
rack (1.0.0)
rails (2.3.4, 2.1.1)
rake (0.8.7)
这是在不同项目中使用不同版本的Rails的最佳方式吗?
我的观点是,对于不同的项目,使用不同的Rails版本并不是一个好习惯。但是有时你使用的是早期版本的旧项目,所以你别无选择,只能安装rails版本。但是在创建新应用程序时,您应该使用最新的稳定rails版本。
只是为了记录,你可以在enviorment.rb中提到Rails版本,为不同的项目使用不同的Rails版本。对于Ex: -
RAILS_GEM_VERSION = '2.1.1' unless defined? RAILS_GEM_VERSION
答案 1 :(得分:1)
我会为此尝试RVM gemsets,因为您可能需要为每个项目以及Rails本身的单独版本保留单独的依赖项集。
RVM似乎通常是一个更整洁的方法 - 使用单独的环境而不是单个宝石池意味着您可以轻松地创建或破坏环境而不会破坏其他环境,并且当您指定依赖项的版本时,它可以降低出错的风险
在Python世界中,人们使用virtualenv为他们的每个项目创建完全独立的环境,我认为这是一个好主意。
答案 2 :(得分:0)
在config/environment.rb
文件中查找RAILS_GEM_VERSION
并将值设置为所需版本。
RAILS_GEM_VERSION = '2.2.2' unless defined? RAILS_GEM_VERSION
OR
RAILS_GEM_VERSION = '2.3.2' unless defined? RAILS_GEM_VERSION
答案 3 :(得分:0)
我会使用Bundler:http://gembundler.com/
很容易习惯,还有其他好处。这是一些Rails核心成员,我相信在Rails 3.0之后很快就会成为推荐的解决方案。
答案 4 :(得分:0)
要回答原始问题,版本号中的下划线用于指定创建新rails应用时的版本。例如,如果您要创建一个新的rails应用程序,rails会默认使用系统中安装的最新版本,但如果您想使用系统上安装的旧版本,该怎么办? 这是命令......
rails 2.3.4 killerapp
您需要在系统上安装rails gem 2.3.4! 为此,您可以使用rvm和gemsets在方便的包中对ruby / gem进行分组。
我希望这会有所帮助