Answers:
_3.1.3_
new sample_app /home/ninad/.rbenv/versions/1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems.rb:314:in bin_path': can't find gem railties (["3.1.3"]) with executable rails (Gem::GemNotFoundException) from /home/ninad/.rbenv/versions/1.9.2-p290/bin/rails:19:in
<main>'
这是我通常使用的命令:
rails _version_ new application_name
例如 rails _2.1.0_ new my_app
这是到目前为止所有可用的rails版本的列表:
我在使用时遇到了一些麻烦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
bundle update
,它也会更新rails !!
bundle update
是必需的,因为正在使用手动更新(--skip-bundle
)。Rails将不会升级,因为在Gemfile中指定了特定版本(示例中为4.2.9。)
--force
正在覆盖Gemfile
bundle exec rails new...
运行rails
了Gemfile 中指定的版本,最终被替换了。)
gem 'rails', '5.0.0.1' >> Gemfile
并在Gemfile中bundle exec rails new
使用--force选项运行之后gem 'rails', '~> 5.0.0', '>= 5.0.0.1'
。现在,当我运行时bundle update
,它会将rails更新为5.0.4(在Gemfile.lock中),但是我期望使用rails版本5.0.0.1
正如@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
检查是否已安装正确版本的rails: $ bundle exec rails -v
现在创建您的应用程序,让Rails创建一个新的Gemfile(或者通过使用--force
标志覆盖现有的Gemfile ),而不是安装bundle(--skip-bundle
)手动对其进行更新:
$ bundle exec rails new . --force --skip-bundle
如果您在中检查rails条目Gemfile
,则应为:
gem 'rails', '~> 5.0.0', '>= 5.0.0.1'
您应该将其更新为应用程序所需的确切版本:
gem 'rails', '5.0.0.1'
现在,最后一步:
$ bundle update
您还应该看一下将Rails宝石“冻结”到应用程序中的情况。这对部署有很大帮助,尤其是在共享主机环境中。
只需在中更改RAILS_GEM_VERSION
变量config/environment.rb
并发出冻结耙任务:
rake rails:freeze:gems
有两种方法可以实现此目的:
根据接受的答案中的一项建议:
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
我已经在文章中详细介绍了这一点