2017-05-18 36 views
0

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 updatebundle 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应用程序。

回答

0

我绝不是一个施普雷专家,但从它看起来,5.1.1与Spree不兼容。

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)

在你Gemfile,继续前进,把gem 'rails', '5.0.3'在顶部(替换任何其他rails宝石),然后rm Gemfile.lock接着是bundle

应该做的伎俩。

+0

那么,这摆脱了问题与宝石相关性,但是就如同我做了什么本来我得到同样的 '未定义的方法“load_defaults”为#<:: Rails的应用::配置:0x0055e0414ccdf0>'错误每当我尝试运行诸如'rails s'或'rails generate'之类的rails命令时。 – Martin

+0

那么'gem install rails -v 5.0.3'然后'rails _5.0.3_ new application_name'呢?报告所有系统的 –

+0

,在这里转到2.3.1;尝试2.3.3真快! –