指定创建新应用程序时要使用的rails版本

时间:2008-12-18 20:29:27

标签: ruby-on-rails

我的计算机上安装了两个版本的rails(2.1.0和2.2.2)。

当我创建一个新应用程序时,是否可以指定我想使用旧版本(2.1.0)?

7 个答案:

答案 0 :(得分:462)

我发现here是一个未记录的选项,可以使用旧版本的Rails创建一个新的应用程序。

rails _2.1.0_ new myapp 

答案 1 :(得分:62)

这是我正常使用的命令:

rails _version_ new application_name

例如rails _2.1.0_ new my_app

以下是目前所有可用导轨版本的列表:

http://rubygems.org/gems/rails/versions

答案 2 :(得分:24)

我在使用rails _version_ new application_name时遇到了一些问题(仍然为安装的最新版本的Rails生成了生成的项目。)

经过一番挖掘后,我发现an article Michael Trojanek采用了另一种方法。这可以通过创建一个带有Gemfile的文件夹来指定所需的Rails版本,然后使用bundle exec rails...,以便Bundler负责运行rails的相应版本。例如制作一个新的Rails 4.2.9项目的步骤是:

mkdir myapp
cd myapp
echo "source 'https://rubygems.org'" > Gemfile
echo "gem 'rails', '4.2.9'" >> Gemfile
bundle install

bundle exec rails new . --force --skip-bundle
bundle update

答案 3 :(得分:4)

@mikej正确指出 Rails 5.0.0或更高版本,您应该按照以下步骤操作:

为您的应用程序创建一个目录以及一个Gemfile,以指定所需的Rails版本,并让捆绑程序安装相关的gems:

$ mkdir myapp
$ cd myapp
$ echo "source 'https://rubygems.org'" > Gemfile
$ echo "gem 'rails', '5.0.0.1'" >> Gemfile
$ bundle install

检查是否已安装正确版本的滑轨:$ bundle exec rails -v

现在创建您的应用程序,让Rails创建一个新的Gemfile(或者使用--force标志覆盖现有的文件),而不是安装捆绑包(--skip-bundle)手动对其进行更新:

$ bundle exec rails new . --force --skip-bundle

如果您检查Gemfile中的rails条目,它应该像这样:

gem 'rails', '~> 5.0.0', '>= 5.0.0.1'

您应该将其更新为应用程序所需的确切版本:

gem 'rails', '5.0.0.1'

现在,最后一步:

$ bundle update

答案 4 :(得分:3)

您可以使用任一版本生成骨架,并且需要config/environment.rb中所需的骨架:

# Specifies gem version of Rails to use when vendor/rails is not present
RAILS_GEM_VERSION = '2.1.2' unless defined? RAILS_GEM_VERSION

或使用“rails”命令形成您想要的版本。

答案 5 :(得分:3)

你还应该看看你的Rails宝石“冻结”到应用程序中。这对部署有很大帮助,特别是在共享托管环境中。

只需更改RAILS_GEM_VERSION中的config/environment.rb变量,然后发出冻结佣金任务:

rake rails:freeze:gems

答案 6 :(得分:3)

有两种方法可以实现此目的:

已接受答案中建议的一个:

gem install rails -v 2.1.0 #only when the gem has not been installed in the desired ruby version you are using, so that you don't get error on next step
rails _2.1.0_ new my_app

另一种方法是在初始化Rails项目之前创建具有所需Rails版本的gemfile

mkdir my_app
cd my_app
echo "source 'https://rubygems.org'" > Gemfile
echo "gem 'rails', '2.1.0'" >> Gemfile
bundle install

bundle exec rails new . --force --skip-bundle

我在article

中对此进行了详细介绍