【问题标题】:Asset Pipeline issues deploying to Heroku部署到 Heroku 的资产管道问题
【发布时间】:2017-03-16 13:56:07
【问题描述】:

我正在运行我的 Gemfile 中指定的 Rails 5 应用程序 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 中,并且包含该文件 - 它只是不起作用。

如果您访问一个无效的 URL,例如 https://crateu.herokuapp.com/badurl,一切看起来都应该是这样。

我有 //= require_tree 。在 application.js 中,当我在本地查看源代码时,我看到了管道中的所有文件,并且一切都正确呈现。我将该源复制并粘贴到 /public 中的 404.html 中,这就是该页面正确呈现的原因。当我在 herokuapp 上查看源代码时,这些资源都没有包含在标题中。我敢肯定这很简单,是我想念的某个地方的设置。也许我需要在这一行中包含所有内容,而不仅仅是customers.js?

Rails.application.config.assets.precompile += %w( customers.js )

我已经尝试了我能想到的一切。任何帮助将不胜感激。

【问题讨论】:

  • 你把它加入了correctly吗?您的资产组中的Gemfile 中有uglifier 吗?
  • 您好,非常感谢您的评论。不,我在资产组的 Gemfile 中没有 uglifier。那会是什么样子?抱歉,这是我第一次听说。

标签: ruby-on-rails ruby git heroku


【解决方案1】:

我会把回复放在这里,因为评论部分不允许我放多行代码,你必须添加到你的 Gemfile:

 group :assets do
    gem 'uglifier'
 end

【讨论】:

  • 啊,好的,明白了 - 抱歉,我已将它包含在我的 Gemfile 中,无论属于哪个组 - gem 'uglifier', '>= 1.3.0'。因此,无论属于哪个组,都应该包含它。
  • 你能看到crateu.herokuapp.com/assets/…中的customers.js代码吗?
  • 对不起,是css还是js?
  • 是的,如果我转到包含它的一页/视图,我可以看到它。但这并没有什么不同——这个问题在某种程度上与 materlialize css 相关。
  • 我看不到索引和 404 页面之间的区别,我也看到了 application.css 中的物化 css。你应该删除app/assets/stylesheets/application.css
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-02
  • 2019-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多