Rails Asset Pipeline - 不编译清单

时间:2014-07-07 16:43:26

标签: ruby-on-rails ruby-on-rails-4 asset-pipeline precompile

我正在构建我的博客,其管理部分与网站的其他部分有很大不同。所以我决定根据我在The Asset Pipeline文档中理解的内容单独显示。

问题:

管理部分按预期正常工作,正确应用了样式。但在生产中它并没有。我已经运行了rake assets:precompile,它只生成一个版本 application- [blah] .js 。而不是 admin_lite- [blah] .js

我可能做错了什么?非常感谢帮助。

更多信息

  • app / assets / stylesheets / admin_lite.css
  • <%= stylesheet_link_tag" admin_lte",媒体:'全部' %GT; \
  • 应用程序/资产/ Javascript角/ admin_lite.js
  • <%= javascript_include_tag" admin_lte" %GT;
  • 添加了initilizer(config / intilizers / assets.rb)Rails.application.config.assets.precompile += ['admin_lite.js', 'admin_lite.css']
  • 运行`RAILS_ENV bin / rake assets:precompile
  • 只生成应用程序 - [签名] .js&&应用程序 - [签名]的CSS
  • admin部分中的css和js链接为/stylesheets/admin_lite.css /javascripts/admin_lite.css(不是具有签名的application- * varients的格式)。

css输出

<link href="/stylesheets/admin_lte.css" media="all" rel="stylesheet" />
<script src="/javascripts/admin_lte.js"></script>

更新

  • config.assets.precompile += ['admin_lite.js', 'admin_lite.css']添加到config/environments/production.rb(以及development.rb进行测试)
  • config.assets.precompile += ['admin_lite.js', 'admin_lite.css']添加到application.rb

没有成功

修复/解决

错误是一个错字,我使用了错误的文件名,因此没有编译。所以,如果你...

  • 运行rake assets:precompile
  • application.css编译但不是您的自定义清单(例如:admin.css)
  • 检查拼写
  • 我真的希望它提出异常。

2 个答案:

答案 0 :(得分:1)

您要求预编译的清单名称与设置不符 - 请尝试将lite更改为lte

答案 1 :(得分:1)

我发现(至少使用Rails 4.1.6),config.assets.precompile中使用的文件扩展名和javascript_include_tag至关重要。

我最近将以下内容添加到我的production.rb:

  config.assets.precompile += %w(google/infobox.js)

在使用我拥有的资产的HAML文件中:

=javascript_include_tag "google/infobox"

当然,这就像开发模式中的魅力一样!

因此,我将代码提升为生产,当我在服务器上运行rake assets:precompile时,我看到预编译文件已创建:

Writing public/assets/google/infobox-85c3151833c8f22f374f4fb25b7f917f.js

真棒!

但唉没有...

长话短说,我必须明确将“.js”扩展程序添加到javascript_include_tag中:

=javascript_include_tag "google/infobox.js"

希望将来能节省一些时间。

也希望有人在我下次碰巧遇到自己的答案时不会绊倒我,我不记得为什么会这样。