【问题标题】:undefined method `sass' for #<Rails::Application::Configuration on Heroku#<Rails::Application::Configuration on Heroku 的未定义方法“sass”
【发布时间】:2011-12-07 01:31:42
【问题描述】:

我环顾四周,没有发现类似的错误报告。 我不记得修改过我的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

删除它是徒劳的。

【问题讨论】:

  • 我认为您必须发布整个 application.rb 文件

标签: heroku rake ruby-on-rails-3.1 sass


【解决方案1】:

我昨天花了一整天的时间来解决这个问题并设法解决它。 我确实删除了 config.sass.preferred_syntax 行,但这不是唯一的问题。

最重要的是,我错过了 Sprockets 的关键需求声明。 由于我使用的是 RSpec,因此我已将 application.rb 文件中通常的 require "rails/all" 行拆分为以下内容:

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 时的疏忽。正确的语句应该包括Sprockets,如下:

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

我还删除了一些我从 Chris Eppstein Gist on using Compass with 3.1 收集到的指南针设置。这是一个绝望的举动,但目前我还没有看到任何不利因素。

请记住,我不知道自己在做什么。对此持保留态度,我只是在解释我的“调试”过程。

【讨论】:

  • 你能更详细地描述你最近做的两件事吗?您的 stylesheet_link_tag 和 javascript_include_tag 有什么错误?您删除了哪些其他配置设置?我做了你描述的所有其他事情,但仍然收到以下错误:rake aborted! #<:application::configuration:0x00000002d966b8> 的未定义方法“sass”
【解决方案2】:

我有同样的错误......

我只需要将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

【讨论】:

  • 对我来说这还不够。我必须按照 heroku 的描述将 config.assets.initialize_on_precompile = false 添加到 config/application.rb:devcenter.heroku.com/articles/…
  • stackoverflow.com/questions/9629620/… 对此有一个很好的解决方案。与其将 sass-rails 移出资产,不如在 applicaion.rb 中运行 sass 配置之前进行测试。
【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多