按rbenv -global
我的红宝石版本是2.3.3
各种困难创造了不同版本的Rails应用和安装狂欢
轨的版本我有:
*** LOCAL GEMS ***
rails (5.1.1, 5.0.0)
最初,我的目标是创建一个Rails大礼包。像往常一样,我开始:
rails new spree_app
继Spree README我加入以下宝石我gemfile
:
gem 'spree', '~> 3.2.0'
gem 'spree_auth_devise', '~> 3.2.0.beta'
gem 'spree_gateway', '~> 3.2.0.beta'
然后,当我跑bundle install
我遇到了以下错误:
Bundler could not find compatible versions for gem "rails":
In snapshot (Gemfile.lock):
rails (= 5.1.1)
In Gemfile:
rails (~> 5.1.1)
spree (~> 3.2.0) was resolved to 3.2.0, which depends on
spree_frontend (= 3.2.0) was resolved to 3.2.0, which depends on
canonical-rails (~> 0.1.0) was resolved to 0.1.2, which depends on
rails (< 5.1, >= 4.1)
spree (~> 3.2.0) was resolved to 3.2.0, which depends on
spree_core (= 3.2.0) was resolved to 3.2.0, which depends on
deface (~> 1.0) was resolved to 1.2.0, which depends on
rails (>= 4.1)
spree (~> 3.2.0) was resolved to 3.2.0, which depends on
spree_core (= 3.2.0) was resolved to 3.2.0, which depends on
rails (~> 5.0.0)
Running `bundle update` will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.
运行bundle update
按照建议让我这个:
Bundler could not find compatible versions for gem "rails":
In Gemfile:
rails (~> 5.1.1)
spree (~> 3.2.0) was resolved to 3.2.0, which depends on
spree_core (= 3.2.0) was resolved to 3.2.0, which depends on
rails (~> 5.0.0)
因此,在我看来,Spree依赖于Rails 5.0.0和我的5.1.1导致的问题。鉴于此,我将gem 'rails', '~> 5.1.1'
更改为gem 'rails', '~> 5.0.0'
,运行bundle update
和bundle install
,并且所有操作都正确地进行了bundler方式。
问题是,这似乎已经打破了我的轨道应用程序。跑步,任何rails generate
命令或rails s
给了我以下错误:
/usr/local/opt/rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/railties-5.0.3/lib/rails/railtie/configuration.rb:95:in `method_missing': undefined method `load_defaults' for #<Rails::Application::Configuration:0x0055a1cd5a36f0> (NoMethodError)
对于我的生活,我不知道什么是这里的问题。
我的最后一次尝试是试图在5.0.0与生成一个新的Rails应用程序:
rails _5.0.0_ new spree_app_2
但不管出于什么原因,这似乎没有什么区别。这个应用程序的gemfile
仍然包含gem 'rails', '~> 5.1.1'
,我遇到了我之前得到的所有相同的错误。
因此,我似乎也不知道如何管理不同版本的Rails,我没有正确安装Spree,或者两者兼而有之。任何帮助表示赞赏,谢谢。
更新:部分解决
我仍然不知道如何生成其他任何版本的一个Rails应用程序比5.1.1
,并且只需在gemfile
改变版本仍然不为我工作。在我看来,还需要其他一些改变。
我将gemfile
中的导轨版本从5.1.1
更改为5.0.3
。使用5.0.2
查看了Rails应用中的/config/application.rb
文件,发现它们有不同的设置。
矿看着过这样的:
module AppName
class Application < Rails::Application
config.load_defaults 5.1
end
end
和Rails应用程序中5.0.2
产生过这样的:
module AppName
class Application < Rails::Application
config.generators do |generate|
generate.assets false
end
end
end
所以我换了什么,我不得不与和它的工作!我不知道它为什么起作用,我仍然不知道为什么我可以从一开始就生成一个5.0.3
Rails应用程序。
那么,这摆脱了问题与宝石相关性,但是就如同我做了什么本来我得到同样的 '未定义的方法“load_defaults”为#<:: Rails的应用::配置:0x0055e0414ccdf0>'错误每当我尝试运行诸如'rails s'或'rails generate'之类的rails命令时。 – Martin
那么'gem install rails -v 5.0.3'然后'rails _5.0.3_ new application_name'呢?报告所有系统的 –
,在这里转到2.3.1;尝试2.3.3真快! –