我的计算机中安装了两个版本的Rails(2.1.0和2.2.2)。当我创建新应用程序时,是否可以指定我希望使用较旧的(2.1.0)版本?
4si2a6ki1#
我发现here是一个未公开的选项,用于使用旧版本的Rails创建新的应用程序。
rails _2.1.0_ new myapp
o8x7eapl2#
下面是我通常使用的命令:
rails _version_ new application_name
例如rails _7.0.4_ new my_app以下是目前所有可用的Rails版本列表:http://rubygems.org/gems/rails/versions
rails _7.0.4_ new my_app
iq3niunx3#
我在使用rails _version_ new application_name时遇到了一些麻烦(生成的项目仍然是为安装的最新版本的Rails生成的。)经过一段时间的挖掘,我找到了Michael Trojanek的an article。这个方法是创建一个文件夹,其中包含指定所需Rails版本的Gemfile,然后使用bundle exec rails...,这样Bundler就可以运行相应版本的rails。例如,要创建一个新的Rails 4.2.9项目,步骤如下:
bundle exec rails...
rails
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
d7v8vwbk4#
正如@mikej对Rails 5.0.0或更高版本正确指出的那样,您应该遵循以下步骤:为您的应用程序创建一个目录以及一个Gemfile来指定您所需的Rails版本,并让bundler安装依赖的gem:
$ 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标记覆盖现有的Gemfile),并手动更新它,而不是安装bundle(--skip-bundle):
$ bundle exec rails -v
--force
--skip-bundle
$ bundle exec rails new . --force --skip-bundle
如果您检查Gemfile中的rails条目,它应该如下所示:
Gemfile
gem 'rails', '~> 5.0.0', '>= 5.0.0.1'
您应该将其更新为应用程序所需的确切版本:
gem 'rails', '5.0.0.1'
现在,最后一步:
$ bundle update
rbl8hiat5#
有两种方法可以实现这一点:一个是公认的答案:
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中详细描述了这一点。
yyhrrdl86#
您可以使用任一版本生成 backbone ,并在config/environment.rb中需要所需的版本:
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”命令创建您想要的版本。
3j86kqsm7#
你还应该考虑一下将Rails gem“冻结”到应用程序中,这对部署有很大帮助,特别是在共享主机环境中。只需更改config/environment.rb中的RAILS_GEM_VERSION变量并发出freeze rake任务:
RAILS_GEM_VERSION
rake rails:freeze:gems
zu0ti5jz8#
请注意您在Rails中使用的是哪个版本的ruby。为一个特定版本的Rails创建一个新项目的命令可能不适用于你。我遇到了一些问题。问题是我默认的ruby版本是3.0.0。这个版本不适用于Rails 5。然后我安装了ruby 2.7.5并切换到它作为默认版本。只有这样我才能为Rails 5和7创建项目。如果你想要与ruby 2.7.5相同的环境
rvm install ruby-2.7.5
切换到此版本作为默认值
rvm --default use 2.7.5
安装捆绑器和Webpacker
gem install bundler gem install webpacker
安装最新的导轨(7)
gem install rails
测试它
rails new test_app_6 cd test_app_6 rails s
检查本地主机3000
http://localhost:3000
然后停止服务器(control + c)并安装Rails 5
gem install rails -v 5.2.6
rails _5.2.6_ new test_app_5 cd test_app_5 rails s
准备好了!
8条答案
按热度按时间4si2a6ki1#
我发现here是一个未公开的选项,用于使用旧版本的Rails创建新的应用程序。
o8x7eapl2#
下面是我通常使用的命令:
例如
rails _7.0.4_ new my_app
以下是目前所有可用的Rails版本列表:
http://rubygems.org/gems/rails/versions
iq3niunx3#
我在使用
rails _version_ new application_name
时遇到了一些麻烦(生成的项目仍然是为安装的最新版本的Rails生成的。)经过一段时间的挖掘,我找到了Michael Trojanek的an article。这个方法是创建一个文件夹,其中包含指定所需Rails版本的Gemfile,然后使用
bundle exec rails...
,这样Bundler就可以运行相应版本的rails
。例如,要创建一个新的Rails 4.2.9项目,步骤如下:d7v8vwbk4#
正如@mikej对Rails 5.0.0或更高版本正确指出的那样,您应该遵循以下步骤:
为您的应用程序创建一个目录以及一个Gemfile来指定您所需的Rails版本,并让bundler安装依赖的gem:
检查是否安装了正确版本的导轨:
$ bundle exec rails -v
现在创建您的应用程序,让Rails创建一个新的Gemfile(或者使用
--force
标记覆盖现有的Gemfile),并手动更新它,而不是安装bundle(--skip-bundle
):如果您检查
Gemfile
中的rails条目,它应该如下所示:您应该将其更新为应用程序所需的确切版本:
现在,最后一步:
rbl8hiat5#
有两种方法可以实现这一点:
一个是公认的答案:
另一种方法是在初始化Rails项目之前,使用所需的Rails版本创建gemfile
我已经在我的article中详细描述了这一点。
yyhrrdl86#
您可以使用任一版本生成 backbone ,并在
config/environment.rb
中需要所需的版本:或者使用“rails”命令创建您想要的版本。
3j86kqsm7#
你还应该考虑一下将Rails gem“冻结”到应用程序中,这对部署有很大帮助,特别是在共享主机环境中。
只需更改
config/environment.rb
中的RAILS_GEM_VERSION
变量并发出freeze rake任务:zu0ti5jz8#
请注意您在Rails中使用的是哪个版本的ruby。
为一个特定版本的Rails创建一个新项目的命令可能不适用于你。我遇到了一些问题。问题是我默认的ruby版本是3.0.0。这个版本不适用于Rails 5。然后我安装了ruby 2.7.5并切换到它作为默认版本。只有这样我才能为Rails 5和7创建项目。
如果你想要与ruby 2.7.5相同的环境
切换到此版本作为默认值
安装捆绑器和Webpacker
安装最新的导轨(7)
测试它
检查本地主机3000
然后停止服务器(control + c)并安装Rails 5
测试它
检查本地主机3000
准备好了!