Heroku不会在Rails 4的资产管道下编译文件

在Rails 4和Ruby 2.0中使用资产管道的本地机器中一切都很顺利。 但是在部署到heroku时,它表明:

-----> Preparing app for Rails asset pipeline
   Running: rake assets:precompile
   I, [2013-03-12T03:28:29.908234 #912]  INFO -- : Writing /tmp/build_1n6yi8lwna3sj/public/assets/rails-2ee5a98f26fbf8c6c461127da73c47eb.png
   I, [2013-03-12T03:28:29.914096 #912]  INFO -- : Writing /tmp/build_1n6yi8lwna3sj/public/assets/trash-3c3c2861eca3747315d712bcfc182902.png
   I, [2013-03-12T03:28:33.963234 #912]  INFO -- : Writing /tmp/build_1n6yi8lwna3sj/public/assets/application-bf2525bd32aa2a7068dbcfaa591b3874.js
   I, [2013-03-12T03:28:40.362850 #912]  INFO -- : Writing /tmp/build_1n6yi8lwna3sj/public/assets/application-13374a65f29a3b4cea6f8da2816ce7ff.css
   Asset precompilation completed (14.36s)

Heroku似乎编译文件,但将其放入/ tmp中,没有任何错误。 我的问题是:

  • Heroku如何将资产文件编译到/ tmp?
  • 我最后的解决方案是运行RAILS_ENV = production bundle exec rake assets:本地预编译,但是这会在public / assets中生成manifest-xxxxxx.json,而不是manifest.yml,因此,heroku不会检测到JSON清单文件。 我通过从json文件手动创建了一个yml来对它进行整理,并且heroku变得很开心。 heroku的方法已经过时了吗?

  • 由于Rails 4不支持插件,Heroku的资产插件不再适用。 您需要使用Heroku的资产宝石。 把它放在你的Gemfile中:

    group :production do
      gem 'rails_log_stdout',           github: 'heroku/rails_log_stdout'
      gem 'rails3_serve_static_assets', github: 'heroku/rails3_serve_static_assets'
    end
    

    按照Heroku的指南开始使用Rails 4。

    更新(2013年7月22日):Heroku现在为预编译资产提供了不同的gem。

    group :production do
      gem 'rails_12factor'
    end
    

    您需要配置Rails以在生产环境中提供静态资源:config / environments / production.rb

    SampleApp::Application.configure do
      .
      .
      .
      config.serve_static_assets = true
      .
      .
      .
    end
    

    更新:

    在Rails 4中已被弃用,并已被更改为:

    config.serve_static_files = true 
    

    由于rails 4将manifest.yml替换为manifest-(fingerprint).json,因此您需要启用静态资产服务。

    从Heroku入门到Rails 4.x:

    gem 'rails_12factor', group: :production
    

    然后

    bundle install
    

    最后,

    git push heroku
    

    解决了我的问题。 希望这可以帮助!

    链接地址: http://www.djcxy.com/p/79989.html

    上一篇: Heroku does NOT compile files under assets pipelines in Rails 4

    下一篇: database configuration does not specify adapter