2011-11-01 40 views
1

我正在嘗試將spree集成到全新的rails應用程序安裝中。我在瘋狂的網站上一起關注getting started guide。我在這個步驟告訴我調用generate命令來創建我的Spree網站。這樣做時,我得到一個錯誤:導軌生成器將無法在我的熱潮應用程序內工作。

C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/ext/module.rb:36:in `c 
onst_missing': uninitialized constant Devise::IndifferentHash (NameError) 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/spree_auth-0.40.0/lib/spree_aut 
h.rb:17:in `activate' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activesupport-3.1.1.rc2/lib/act 
ive_support/callbacks.rb:413:in `_run_prepare_callbacks' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activesupport-3.1.1.rc2/lib/act 
ive_support/callbacks.rb:81:in `run_callbacks' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.1.1.rc2/lib/action 
_dispatch/middleware/reloader.rb:46:in `prepare!' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.1.rc2/lib/rails/ap 
plication/finisher.rb:41:in `block in <module:Finisher>' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.1.rc2/lib/rails/in 
itializable.rb:29:in `instance_exec' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.1.rc2/lib/rails/in 
itializable.rb:29:in `run' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.1.rc2/lib/rails/in 
itializable.rb:54:in `block in run_initializers' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.1.rc2/lib/rails/in 
itializable.rb:53:in `each' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.1.rc2/lib/rails/in 
itializable.rb:53:in `run_initializers' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.1.rc2/lib/rails/ap 
plication.rb:96:in `initialize!' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.1.rc2/lib/rails/ra 
iltie/configurable.rb:30:in `method_missing' 
     from C:/Users/Edu/workspace/my_store/config/environment.rb:5:in `<top (r 
equired)>' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.1.rc2/lib/rails/ap 
plication.rb:83:in `require_environment!' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.1.rc2/lib/rails/co 
mmands.rb:22:in `<top (required)>' 
     from script/rails:6:in `require' 
     from script/rails:6:in `<main>' 

我也得到了同樣的錯誤,如果只是簡單地運行rails grails generate,看看生成工具我有可用。

這裏是我參考的Gemfile:

source 'http://rubygems.org' 

gem 'rails', '3.1.1.rc2' 

# Bundle edge Rails instead: 
# gem 'rails',  :git => 'git://github.com/rails/rails.git' 

gem 'sqlite3' 

gem 'spree' 

gem 'rake', '0.9.2.2' 


# Gems used only for assets and not required 
# in production environments by default. 
group :assets do 
    gem 'sass-rails', '~> 3.1.0' 
    gem 'coffee-rails', '~> 3.1.0' 
    gem 'uglifier', '>= 1.0.3' 
end 

gem 'jquery-rails' 

# To use ActiveModel has_secure_password 
# gem 'bcrypt-ruby', '~> 3.0.0' 

# Use unicorn as the web server 
# gem 'unicorn' 

# Deploy with Capistrano 
# gem 'capistrano' 

# To use debugger 
# gem 'ruby-debug19', :require => 'ruby-debug' 

group :test do 
    # Pretty printed test output 
    gem 'turn', :require => false 
end 

回答

2

spree版本(因爲某些原因)設置爲0.40.0。我會建議升級這0.70.1,你可以做放上這行你Gemfile

gem 'spree', '~> 0.70.1' 

編輯

你提到,你是使用Rails 3.1.1.rc2,這是一件好事我應該在問題的堆棧跟蹤中注意到。

哎呀。

無論如何,當你不要指定一個Spree版本時,Bundler將嘗試儘可能地解決所有的依賴關係。部分原因是因爲您使用的是Rails 3.1.1.rc2,部分原因是Spree很愚蠢,無法指定>=對Rails for 0.40.0的依賴性,即遇到此問題。

施普雷0.40.0試圖找到最好的最 Rails的版本是>= 3.0.3,並且3.1.1.rc2滿足這個標準很好,所以進行。

那麼乞討的問題是「爲什麼不是Spree使用最新版本?」。如果你理解依賴關係的解決方案,這很容易解釋,很多人都很難理解,但實際上很容易。在20世紀70年代考慮計算機。

施普雷>= 0.40.0的所有版本都被指定爲>= [something]有Rails的,這主要是因爲施普雷傢伙wisened在這裏和決定,這是一個愚蠢的想法。通過使用>=,您的意思是將所有版本的>=的gem都轉換爲包含主要版本的指定版本。我們都知道Rails 3與Rails 3不同的地方,所以我們應該假設Rails 3 - > Rails 4將會變得「有趣」。

因此,只有Spree 0.40.0具有與您的特定(3.1.1.rc2)Rails版本相匹配的依賴關係。 Spree上面沒有非beta/RC版本的Spree,因此使用Spree 0.40.0。

最後,似乎這個問題只會在嘗試使用Rails版本的人中普遍存在,因爲沒有相應版本的Spree。解決這個問題的一種方法是抽出0.40.0寶石,但這會導致它自己的問題,因爲之前的版本也具有相同的依賴性。因此,您應該始終檢查至少一個Spree版本是否支持您當前使用的Rails版本。

+0

這個伎倆。謝謝!由於0.70.1的狂熱依賴,我必須將我的rails gem設置爲3.1.1。我想知道爲什麼我的Spree版本0.40.0和Rails版本3.1.1.Rc2被安裝。任何想法? –

+1

@ Guided33:我已經更新了我的答案,現在進一步解釋它。 –

0

我有與軌道3.1相同的問題。答案放在我的GEMFILE下面一行。

===:與存儲庫的URL的git的作品=== 寶石 '大禮包',:git的=> '混帳://github.com/spree/spree.git'

現在,它的工作我的發電機和我的狂歡。

問候。

相關問題