我正在运行一个Rails 5应用程序,我的Gemfile中指定了Ruby 2.4。我已经阅读了Heroku资产管道文章,并按照我认为应该完成的步骤。
在config / environments / production.rb中:
config.assets.js_compressor = :uglifier
config.assets.css_compressor = :sass
config.assets.compile = true
在/ config / assets中,我有以下几行:
Rails.application.config.serve_static_assets = true
Rails.application.config.assets.version = '1.0'
Rails.application.config.assets.precompile += %w( customers.js )
customers.js是我在页面顶部专门包含的唯一文件,而Rails要求我对其进行预编译..
在使用git部署到Heroku之前,我运行此命令:
RAILS_ENV=production bundle exec rake assets:precompile
如果你转到https://crateu.herokuapp.com,你会看到样式表没有正确处理导航(我正在使用Materialize gem)。令我感到困惑的是,javascript正在为下拉项目工作。处理导航的样式在application.sass中,文件包含在内 - 它只是不起作用。
如果您转到无效的网址,例如https://crateu.herokuapp.com/badurl,则所有内容都应该如此。
我有// = require_tree。在application.js中,当我在本地查看源代码时,我会看到管道中的所有文件,并且所有内容都正确呈现。我将该源复制并粘贴到404.html in / public中,这就是该页面正确呈现的原因。当我在herokuapp上查看源时,标头中不包含这些资源。我确信这是一件简单的事情,一个我不知道的地方。也许我需要在这一行中包含所有内容,而不仅仅是customers.js?
Rails.application.config.assets.precompile += %w( customers.js )
我已经尝试了我能想到的一切。任何帮助将不胜感激。
答案 0 :(得分:1)
我会在此处回复,因为评论部分不允许我添加多行代码,您可以添加Gemfile:
group :assets do
gem 'uglifier'
end