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

hec*_*rsq 224 ruby-on-rails

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

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

hec*_*rsq 491

我在这里找到一个未记录的选项来使用旧版本的Rails创建一个新的应用程序.

rails _2.1.0_ new myapp 
Run Code Online (Sandbox Code Playgroud)

  • 这是RubyGems的功能,而不是Rails功能; 因此它不依赖于Rails版本,并且适用于其他宝石.(谢谢,这是一个很好的答案!) (11认同)
  • 安装3.1.3和3.2.0.rc1时使用3.1.3时出错.这是错误--- [ninad @ localhost devel] $ rails` _3.1.3_` new sample_app /home/ninad/.rbenv/versions/1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems .rb:314:在`bin_path'中:找不到来自/home/ninad/.rbenv/versions/1.9.2-p290的可执行rails(Gem :: GemNotFoundException)的gem railties(["3.1.3"])/bin/rails:19:在`<main>' (2认同)

Har*_*dik 64

这是我正常使用的命令:

rails _version_ new application_name
Run Code Online (Sandbox Code Playgroud)

例如 rails _2.1.0_ new my_app

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

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


mik*_*kej 24

我在使用时遇到了一些麻烦rails _version_ new application_name(最终版本的Rails安装后仍会生成结果项目.)

有点挖后,我发现了一篇文章迈克尔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
Run Code Online (Sandbox Code Playgroud)


Raj*_*hra 7

正如@mikej对于Rails 5.0.0或更高版本所正确指出的那样,您应该遵循以下步骤:

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

$ mkdir myapp
$ cd myapp
$ echo "source 'https://rubygems.org'" > Gemfile
$ echo "gem 'rails', '5.0.0.1'" >> Gemfile
$ bundle install
Run Code Online (Sandbox Code Playgroud)

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

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

$ bundle exec rails new . --force --skip-bundle
Run Code Online (Sandbox Code Playgroud)

如果您在中检查rails条目Gemfile,则应为:

gem 'rails', '~> 5.0.0', '>= 5.0.0.1'
Run Code Online (Sandbox Code Playgroud)

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

gem 'rails', '5.0.0.1'
Run Code Online (Sandbox Code Playgroud)

现在,最后一步:

$ bundle update
Run Code Online (Sandbox Code Playgroud)


Pra*_*ash 7

有两种方法可以实现这一点:

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

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
Run Code Online (Sandbox Code Playgroud)

替代方法是在初始化 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
Run Code Online (Sandbox Code Playgroud)

我在我的文章中详细写过这个