在Heroku Push上Rails资产预编译中止 - 未初始化的常量Rake :: DSL

时间:2014-01-29 04:38:58

标签: heroku ruby-on-rails-3.2 rake asset-pipeline

几年前,当Rake打破Rails时,我看到了这个错误,但这看起来很奇怪。

我昨天刚刚将我的Rails 3.2.16应用程序部署到Heroku,但现在预编译资产失败,没有任何资产更改。完整错误如下:

Running: rake assets:precompile
rake aborted!
uninitialized constant Rake::DSL
/tmp/build_96e5edbe-65ff-42fc-a7e8-e59432cc8de0/Rakefile:7:in `<top (required)>'

好奇,如果最近发生了重大变化,或者我错过了什么会突然发生变化。

Rake是版本10.1.0。本地Ruby版本1.9.3和Heroku版本1.9.2。

看到这个:https://groups.google.com/forum/#!topic/heroku/6yjIiP69NqI(从大约2年前开始),建议不要只使用include Rake::DSL

class Rails::Application 
  include Rake::DSL 
end

但是,不知道为什么会在一夜之间改变。

3 个答案:

答案 0 :(得分:2)

我刚才遇到了同样的问题。我在Gemfile中将ruby版本更新为2.0.0(它是1.9.2)并在此之后成功部署。

要更新版本,只需在Gemfile中的源代码行下添加:

 ruby "2.0.0"

我希望这也能解决你的问题。

答案 1 :(得分:0)

与其他人一样的问题,只是突然出现更新应用程序并推送到heroku导致此错误。如果我找到任何东西,我会在这里更新。

答案 2 :(得分:0)

Huzzah,在重新安装rake并更新Rakefile以获得DSL支持后,我成功运行了'git push heroku master'。

重新安装Rake:

gem uninstall rake

*我选择卸载所有版本

gem install rake

更新Bundler:

bundle update

更新Rakefile,添加require:

require 'rake/dsl_definition'

更新Rakefile,添加模块:

module ::ApplicationName  
  class Application
    include Rake::DSL
  end
end

*确保将ApplicationName更新为您的应用名称。

致力于git并运行更新:

git push heroku master

希望有助于让你们恢复运行,不知道Heroku发生了什么,但如果这可以纠正你的问题@ muzcat007,也许你可以更新你的Heroku票,让他们看看这个奇怪的新DSL要求。

干杯