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

Ruby on rails 指定创建新应用程序时要使用的rails版本,ruby-on-rails,Ruby On Rails,我的计算机上安装了两个版本的rails(2.1.0和2.2.2) 创建新应用程序时,是否可以指定要使用较旧的(2.1.0)版本?您可以使用任一版本生成框架,并需要在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(2.1.0和2.2.2)


创建新应用程序时,是否可以指定要使用较旧的(2.1.0)版本?

您可以使用任一版本生成框架,并需要在
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”命令来创建您想要的版本。

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

只需更改
config/environment.rb
中的
RAILS\u GEM\u VERSION
变量,并发出冻结rake任务:

rake rails:freeze:gems
我发现了一个未记录的选项,可以使用旧版本的Rails创建新的应用程序

rails _2.1.0_ new myapp 

以下是我通常使用的命令:

rails _version_ new application_name
例如
rails\u 2.1.0\u新的我的应用程序

以下是迄今为止所有可用rails版本的列表:


我在使用
rails\u version\u新应用程序\u name
时遇到了一些问题(生成的项目仍然是为安装的最新版本的rails生成的。)

经过一番挖掘,我找到了另一种方法。这是通过使用指定所需Rails版本的Gemfile创建文件夹,然后使用
bundle exec Rails…
,以便Bundler负责运行适当版本的
Rails
。e、 g.要制作新的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

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

为您的应用程序创建一个目录和一个GEM文件,以指定所需的Rails版本,并让bundler安装相关的GEM:

$ mkdir myapp
$ cd myapp
$ echo "source 'https://rubygems.org'" > Gemfile
$ echo "gem 'rails', '5.0.0.1'" >> Gemfile
$ bundle install
检查是否安装了正确版本的rails:
$bundle exec rails-v

现在创建您的应用程序,让Rails创建一个新的GEM文件(或者使用
--force
标志覆盖现有的GEM文件),并手动更新它,而不是安装捆绑包(
--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

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

一个是公认答案中建议的:

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

我在我的

中详细介绍了这一点,您应该将其更改为公认的答案,因为它适用于Rails 2和3。如果你已经安装了Rails 3并且想要一个Rails 2应用程序,Keltia的答案将不再有效。错误的是,安装Rails 3对于2.3.5来说是失败的——刚刚在Mac OS X Snow Leopard上测试并安装了这些模块:Rails(3.0.5,2.3.5,2.2.2,1.2.6)这是RubyGems功能,而不是Rails功能;因此,它不依赖于Rails版本,并且适用于其他Gem。(谢谢,这是一个很好的答案!)当安装了3.1.3和3.2.0.rc1时,我在使用3.1.3时出错。这里是错误--[ninad@localhostdevel]$rails
\u 3.1.3\u
新示例\u app/home/ninad/.rbenv/versions/1.9.2-p290/lib/ruby/site\u ruby/1.9.1/rubygems.rb:314:in
bin\u路径:找不到带有可执行rails的gem railties([“3.1.3”])(gem::GemNotFoundException)from/home/ninad/.rbenv/versions/1.9.2-p290/bin/rails:19:in
“现在4.0.0已经推出,非常有用!使用rvm使用rubyversionI不认为需要
包更新
,它也会更新rails@由于正在使用手动更新(
--跳过捆绑
),因此需要进行
捆绑更新。Rails不会升级,因为在Gemfile(示例中为4.2.9)中指定了特定版本。
--force
正在覆盖GemfileYep,但写入的新Gemfile仍然指定了我们想要的Rails版本(因为
bundle exec rails new…
运行了GEM文件中指定的
rails
版本,最终被替换。)我做了
gem'rails',5.0.0.1'>>Gemfile
并且在运行
bundle exec rails new
之后,使用--force选项,它的
gem'rails','>>5.0.0','>=5.0.0.1'
在Gemfile中。现在当我运行
bundle update
时,它会将rails更新为5.0.4(在Gemfile.lock中),但我希望使用rails版本5.0.0.0.1