2011-10-13 27 views
19

Tôi đã xem xét một chút và không tìm thấy lỗi tương tự được báo cáo. Tôi không nhớ đã sửa đổi số production.rb của mình. Và để có biện pháp tốt, đây là số application.rbphương thức chưa xác định `sass 'cho # <Rails :: Ứng dụng :: Cấu hình trên Heroku

Đây là dấu vết ngăn xếp từ 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>' 

Ban đầu tôi nghĩ dòng này trong số application.rb có thể gây ra điều này (mặc dù trước đây chưa từng có).

config.sass.preferred_syntax = :sass 

Loại bỏ nó là không kết quả.

+0

tôi nghĩ rằng bạn sẽ phải đăng toàn bộ tệp application.rb của bạn –

Trả lời

34

tôi đã có lỗi tương tự ...

Tôi chỉ cần thiết để di chuyển gem 'sass-rails' ra khỏi tài sản nhóm

Được

#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

Đối với tôi điều này là không đủ.Tôi đã phải thêm config.assets.initialize_on_precompile = false vào config/application.rb như được mô tả bởi heroku: https://devcenter.heroku.com/articles/rails3x-asset-pipeline-cedar#troubleshooting – Fa11enAngel

+0

https: // stackoverflow. com/questions/9629620/undefined-method-sass-for-railsapplicationconfiguration0x1cf3338-on-st có một giải pháp tốt cho việc này. Thay vào đó, hãy di chuyển các đường dẫn ra khỏi tài sản, kiểm tra trước khi chạy cấu hình sass trong applicaion.rb. – MERM

5

Tôi đã dành cả ngày hôm qua khắc phục sự cố này và quản lý để khắc phục sự cố. Tôi đã xóa đường dây config.sass.preferred_syntax nhưng đó không phải là vấn đề duy nhất.

Quan trọng nhất là tôi đã bỏ lỡ những gì có vẻ như một tuyên bố yêu cầu quan trọng đối với Sprockets. Kể từ khi tôi đang sử dụng RSpec tôi đã nhận xét chia ra các require "rails/all" dòng bình thường trong tập tin application.rb của tôi vào đây:

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

Tôi chỉ có thể đoán đó là một sự giám sát khi tôi nâng cấp từ Rails 3.x đến 3.1 .x. Các tuyên bố chính xác nên bao gồm Bánh răng, như sau:

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

tôi cũng loại bỏ một số cài đặt Compass tôi đã lượm lặt một Chris Eppstein Gist on using Compass with 3.1. Đó là một động thái tuyệt vọng nhưng bây giờ tôi đã không thấy bất kỳ nhược điểm nào.

Ghi nhớ, tôi không biết mình đang làm gì. Lấy cái này bằng một hạt muối, tôi đơn giản giải thích quá trình "gỡ rối" của tôi.

+0

Bạn có thể mô tả hai điều cuối cùng bạn đã làm chi tiết hơn không? Lỗi với stylesheet_link_tag và javascript_include_tag của bạn là gì? Bạn đã xóa cài đặt cấu hình nào khác? Tôi đã làm mọi thứ khác mà bạn mô tả, và vẫn nhận được lỗi sau: rake hủy bỏ! phương thức chưa xác định 'sass 'cho #

0

Tôi tìm thấy một cách tốt hơn để giải quyết này nếu bạn cũng được nâng cấp từ một đường ray dự án 3.0: Chỉ cần thay đổi các dòng trong config/application.rb từ

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 
Các vấn đề liên quan