Undefined метод `sass 'для # <Rails:: Приложение:: Конфигурация на Heroku
Я немного оглянулся и не нашел похожих ошибок.
Я не помню, что я изменил свой production.rb
. И для хорошей меры, здесь application.rb
Здесь трассировка стека из 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
Удаление было бесплодным.
Ответы
Ответ 1
У меня была такая же ошибка...
Мне просто нужно было переместить 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
Ответ 2
Вчера я провел целый день, чтобы устранить эту проблему и смог ее исправить.
Я удалил строку config.sass.preferred_syntax
, но это была не единственная проблема.
Самое главное, что я отсутствовал, что кажется критическим требованием для Sprockets.
Поскольку я использую 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"
Я также удалил некоторые настройки Compass, которые я почерпнул Chris Eppstein "Gist" , используя Compass с 3.1. Это был отчаянный ход, но пока я не видел ни малейших минусов.
Помните, я понятия не имел, что я делаю. Возьмите это с солью, я просто объясняю свой процесс "отладки".
Ответ 3
Я нашел лучший способ решить эту проблему, если вы также обновляете проект rails 3.0:
Просто измените строки в config/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