很抱歉这个问题,因为我是一个红宝石和rails新手。如何让资产管道在rails上运行?
在我的开发环境中,我有javascript的个别文件,它们通常在 site / app / views / stats / index.html.erb 中加载:
<%= javascript_include_tag "/assets/jquery.js" %>
<%= javascript_include_tag "/assets/stats/donut.js" %>
<%= javascript_include_tag "/assets/stats/vbars.js" %>
<%= javascript_include_tag "/assets/stats/progress.js" %>
<%= javascript_include_tag "/assets/stats/gauge.js" %>
<%= javascript_include_tag "/assets/stats/hbars.js" %>
<%= javascript_include_tag "/assets/stats/widget_grid.js" %>
<%= javascript_include_tag "/assets/stats/widget.js" %>
在生产环境中,它无法正常工作。所以我试图让开发人员环境使用资产管道。这是我到目前为止所得到的:
在 site / config / enviroment / development.rb 我已配置
config.assets.debug = false
config.assets.compile = false
config.assets.digest = true
然后停止我的rails服务器并运行
bundle exec rake assets:precompile
并重新启动rails服务器。
然后在 site / app / views / stats / index.html.erb 我刚刚更换了javascript includes for
<%= javascript_include_tag "stats" %>
并创建了包含
的 site / app / assets / javascripts / stats.js 文件//= require stats/donut
//= require stats/vbars
//= require stats/progress
//= require stats/gauge
//= require stats/hbars
//= require stats/widget_grid
//= require stats/widget
我做错了什么?任何帮助表示赞赏。
更新:问题正在发生,因为我忘了在stats.js中包含第三方库。最初包括 site / app / views / stats / index.html.erb
<%= javascript_include_tag "/assets/third-party/d3.min.js" %>
只需将其删除并将其添加到 stats.js
即可//= require third-party/d3.min.js
感谢所有帮助过的人!
答案 0 :(得分:0)
你必须告诉Rails预编译该文件。默认情况下,它与application.js
一起使用,但如果您创建新的清单文件,则必须包含它。在config/initializers/assets.rb
或production.rb
添加:
Rails.application.config.assets.precompile << ['stats.js']
希望它有所帮助。
这篇文章非常有助于理解资产管道的工作原理:http://www.reinteractive.net/posts/116-12-tips-for-the-rails-asset-pipeline