在Stackoverflow中搜索上述问题的答案我总是遇到一个类似但不相同的问题:是否可以使用比计算机上安装的最新版本更新的rails应用程序(最大的一个)这种流行的帖子是
Specifying rails version to use when creating a new application).但是,我感兴趣的是知道是否可以运行诸如’rails __2.1.0__ new myapp’之类的命令,即使我的计算机上尚未安装特定的rails版本,这样当它运行时它会自动安装这个rails版本加上它创建所有的起始文件(其中Gemfile包含该特定版本的所有兼容的gems).
举个例子…
现在我正在关注Michael Hartl的Rails Tutorial一书,我们被要求使用ruby版本2.0.0,rails版本4.0.8并将以下信息包含在Gemfile中:
source 'https://rubygems.org' ruby '2.0.0' #ruby-gemset=railstutorial_rails_4_0 gem 'rails','4.0.8' group :development do gem 'sqlite3','1.3.8' end gem 'sass-rails','4.0.1' gem 'uglifier','2.1.1' gem 'coffee-rails','4.0.1' gem 'jquery-rails','3.0.4' gem 'turbolinks','1.1.1' gem 'jbuilder','1.0.2' group :doc do gem 'sdoc','0.3.20',require: false end
碰巧我默认使用ruby-2.1.2和rails 4.1.4所以当我想要关注Hartl的书时,我必须创建一个新的rails应用程序(根据rails 4.1.4设置Gemfile)和之后我不得不进入新的应用程序,运行$gem install rails –version 4.0.8来安装该版本,替换上面代码中带有rails 4.1.4的默认Gemfile,然后运行bundle install和bundle update .
它似乎有效,但总而言之,这是一个相当乏味和烦人的解决方案.难道这不能解决,就像我在开始时写的那样,用’rails ____ 2.1.0 ____ new myapp’来安装2.1.0版本(我还没有安装)吗?
我确定必须有一个更简单的方法来开始使用不同的rails版本项目,我只是找不到它或尝试用错误的命令解决它.我确定我实现的解决方案还不够好,因为每当我尝试使用我已经安装的版本(2.0.0)创建另一个rails应用程序时,这就是我从终端获得的:
Desktop$rails _2.0.0_ new myapp /Users/gaa/.rvm/rubies/ruby-2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/dependency.rb:313:in `to_specs': Could not find 'railties' (= 2.0.0) - did find: [railties-4.1.4,railties-4.1.1] (Gem::LoadError) Checked in 'GEM_PATH=/Users/gaa/.rvm/gems/ruby-2.1.2:/Users/gaa/.rvm/gems/ruby-2.1.2@global',execute `gem env` for more information from /Users/gaa/.rvm/rubies/ruby-2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/dependency.rb:322:in `to_spec' from /Users/gaa/.rvm/rubies/ruby-2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_gem.rb:53:in `gem' from /Users/gaa/.rvm/gems/ruby-2.1.2/bin/rails:22:in `<main>' from /Users/gaa/.rvm/gems/ruby-2.1.2/bin/ruby_executable_hooks:15:in `eval' from /Users/gaa/.rvm/gems/ruby-2.1.2/bin/ruby_executable_hooks:15:in `<main>'
我真的很感激你的帮助.
解决方法
我想你所追求的是:
gem install rails -v 4.0.8 rails _4.0.8_ new myapp
这将生成rails 4.0.8 app,并创建一个锁定为4.0.8的默认Gemfile.不那么乏味.
需要安装Rails才能运行rails命令. gem是安装程序.需要安装Ruby才能运行gem. Ruby发展并修复了bug,旧项目可能需要旧版本等.你可能想要一个ruby版本管理器,它可以在gem安装之前得到它自己的安装(chruby,rbenv,rvm)….你可以锁定ruby版本对于一个项目,在Gemfile中也是如此:
source 'https://rubygems.org' ruby '2.1.2'