修复rails可执行“rails”和railties之间的冲突

时间:2013-09-20 17:47:46

标签: ruby-on-rails-3.2 ruby-on-rails-3.1 rvm

尝试使用RVM 1.22.3从rails 3.2.13切换到3.1。

使用ruby 1.9.3。

做了以下事情:

$ rvm gemset create rails31
gemset created rails31  => /Users/mwsage/.rvm/gems/ruby-1.9.3-p429@rails31
$ rvm 1.9.3-p429@rails31
$ gem install -v3.1 rails

在获取并成功安装了许多宝石之后,我被提示:

rails's executable "rails" conflicts with railties
Overwrite the executable? [yN]

我选择了否。

然后

$ rails -v
Rails 3.1.0

我完全成立了吗?如果需要,我该如何解决这个冲突?

1 个答案:

答案 0 :(得分:0)

有两种方法可以解决gem版本冲突:

  1. 在生成新应用程序时使用rails版本:rails _3.1.0_ new - 这将确保您选择的版本用于生成新项目。这仅适用于简单的场景,并且无法解决“已加载错误的宝石版本”的问题。

  2. 使用Gemfile告诉bundler使用哪个版本的rails:

    source "http://rubygems.org"
    gem 'rails', '3.1.0'
    

    然后使用bundle exec bundle exec rails作为rails前缀的所有命令将使用存储在Gemfile中的Bundler版本执行 - 当您使用RVM时,它会附带gem {{ 3}}已安装并且它会为您加载bundle exec因此如果您安装了Gemfile且安装了正确的gem(rails)版本,则不需要使用{{1}}为命令添加前缀。