2017-05-18 55 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真快! –