资产是预编译的,但应用程序仍然查找所有单独的js文件

时间:2013-12-06 18:38:13

标签: javascript ruby-on-rails rake asset-pipeline

我的capistrano正确预编译管道中的所有资产,并生成带有完整包装的application.js和application.css文件。

问题是我的应用程序仍在查找服务器上不存在的所有单独的.js和.css文件,这会从nginx服务器生成大量404 not found个响应。

css和javascript在app/views/layouts/application.html.haml文件中加载:

= stylesheet_link_tag "application", media: "all"
= javascript_include_tag "application"

并在app/assets/javascript/application.js中加载组件:

//= require jquery
//= require jquery_ujs
//= require jquery.ui.datepicker
//= require jquery.timepicker
//= require colorbox-rails
//= require twitter/bootstrap
//= require_tree .

如何在预编译发生时让应用程序仅使用单个预编译文件?

谢谢,

1 个答案:

答案 0 :(得分:1)

编译资产是production环境的一项功能。在development环境中,您通常不希望这样。如果一行引发异常,你想知道它在哪个文件中,这样你就可以轻松实现它。

这由config/environments/*.rb配置文件中的此行管理:

config.assets.compress = true # or false

如果true,它会超出合并资产。如果false,则预计资产位于自己的文件中。

development中,这通常是false。在生产中,这通常是true。但无论哪种方式,它都是特定于环境的设置,因此您不会在同一环境下的两个地方以不同的方式工作。

也许您想要设置staging环境?