2011-10-13 30 views
19

我環顧了一下,並沒有發現類似的錯誤報告。 我不記得有修改我的production.rb。爲了好的措施,這裏是我的application.rb未定義的方法`sass'for#<Rails :: Application ::在Heroku上的配置

這是來自Heroku的堆棧跟蹤。

$ heroku run rake db:migrate --remote staging --trace 

Running rake db:migrate --trace attached to terminal... up, run.2 
/app/vendor/bundle/ruby/1.9.1/gems/rack-1.3.4/lib/rack/backports/uri/common_192.rb:53:  warning: already initialized constant WFKV_ 
rake aborted! 

undefined method `sass' for #<Rails::Application::Configuration:0x000000047c6fb0> 
/app/vendor/bundle/ruby/1.9.1/gems/railties-3.1.1/lib/rails/railtie/configuration.rb:78:in `method_missing' 
/app/config/application.rb:63:in `<class:Application>' 
/app/config/application.rb:18:in `<module:Instantice>' 
/app/config/application.rb:17:in `<top (required)>' 
/app/Rakefile:5:in `require' 
/app/Rakefile:5:in `<top (required)>' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2/lib/rake/rake_module.rb:25:in `load' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2/lib/rake/rake_module.rb:25:in `load_rakefile' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2/lib/rake/application.rb:495:in `raw_load_rakefile' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2/lib/rake/application.rb:78:in `block in load_rakefile' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2/lib/rake/application.rb:129:in `standard_exception_handling' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2/lib/rake/application.rb:77:in `load_rakefile' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2/lib/rake/application.rb:61:in `block in run' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2/lib/rake/application.rb:129:in `standard_exception_handling' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2/lib/rake/application.rb:59:in `run' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2/bin/rake:32:in `<top (required)>' 
/app/vendor/bundle/ruby/1.9.1/bin/rake:19:in `load' 
/app/vendor/bundle/ruby/1.9.1/bin/rake:19:in `<main>' 

我最初以爲這條線在application.rb可能會導致這(雖然它從未有過)。

config.sass.preferred_syntax = :sass 

刪除它是沒有結果的,但。

+0

我想你將不得不發佈你的整個application.rb文件 –

回答

34

我有同樣的錯誤...

我只需要在gem 'sass-rails'移出資產組

之一是

#Gemfile 
group :assets do 
    gem 'sass-rails' # Was giving me errors here. 
    ... 
end 

#Gemfile 
gem 'sass-rails' # No more errors 
group :assets do 
    ... 
end 
+0

對我來說這還不夠。我必須按照heroku所述,將config.assets.initialize_on_precompile = false添加到config/application.rb中:https://devcenter.heroku.com/articles/rails3x-asset-pipeline-cedar#troubleshooting – Fa11enAngel

+0

https:// stackoverflow。 com/questions/9629620/undefined-method-sass-for-railsapplicationconfiguration0x1cf3338-on-st對此有一個很好的解決方案。而是將sass-rails從資產中移出,然後在applicaion.rb中運行sass config之前進行測試。 – MERM

5

我昨天花了整整一天的時間解決這個問題,並設法解決它。 我沒有刪除config.sass.preferred_syntax行,但它不是唯一的問題。

最重要的是我錯過了什麼似乎是一個關鍵的要求聲明的鏈輪。 由於我使用的RSpec我曾評論分裂通常require "rails/all"線在我的application.rb中文件到這一點:

require "active_record/railtie" 
require "action_controller/railtie" 
require "action_mailer/railtie" 
require "active_resource/railtie" 
# require "rails/test_unit/railtie" 

我只能猜測,這是一個疏忽,當我從Rails的3.x升級到3.1 。X。正確的說法應該包括鏈輪,如下:

require "active_record/railtie" 
require "action_controller/railtie" 
require "action_mailer/railtie" 
require "active_resource/railtie" 
# require "rails/test_unit/railtie" 
require "sprockets/railtie" 

我還刪除了一些指南針設置我已經收集克里斯Eppstein的Gist on using Compass with 3.1。這是一個絕望的舉動,但現在我沒有看到任何缺點。

請記住,我不知道我在做什麼。拿一點鹽來說,我只是解釋我的「調試」過程。

+0

你能詳細描述你最後兩件事嗎?你的stylesheet_link_tag和javascript_include_tag有什麼問題?你刪除了什麼其他配置設置?我做了你描述的所有其他事情,但仍然收到以下錯誤:rake中止! 未定義的方法'sass'爲#

0

我發現了一個更好的辦法來解決這個,如果你也從軌3.0升級項目: 在配置/ application.rb中的行只要改變從

Bundler.require(:default, Rails.env) if defined?(Bundler) 

if defined?(Bundler) 
    # If you precompile assets before deploying to production, use this line 
    Bundler.require(*Rails.groups(:assets => %w(development test))) 
    # If you want your assets lazily compiled in production, use this line 
    # Bundler.require(:default, :assets, Rails.env) 
end 
相關問題