在使用Rail 3.2.3开发预编译资产之后冗余的application.js和css

时间:2012-05-25 02:50:34

标签: ruby-on-rails asset-pipeline

我在部署到生产之前预编译资产。生产模式运行良好,但application.js和application.css在开发中是多余的。我尝试rake assets:clean并删除仍然无效的所有公共资产。

开发中的视图

冗余applicaiton.css和application.js

<link href="/assets/application.css?body=1" media="screen" rel="stylesheet" type="text/css" />
<link href="/assets/css/custom-theme/jquery-ui-custom-lastest.css?body=1" media="screen" rel="stylesheet" type="text/css" />
<link href="/assets/animate.css?body=1" media="screen" rel="stylesheet" type="text/css" />
<link href="/assets/jquery_loadmask/jquery_loadmask.css?body=1" media="screen" rel="stylesheet" type="text/css" />
...
<script src="/assets/tags.js?body=1" type="text/javascript"></script>
<script src="/assets/wedapp.js?body=1" type="text/javascript"></script>
<script src="/assets/works.js?body=1" type="text/javascript"></script>
<script src="/assets/application.js?body=1" type="text/javascript"></script>

development.rb

config.assets.compress = false
config.assets.debug = true

production.rb

config.serve_static_assets = false
config.assets.compress = true
config.assets.compile = true  
config.assets.initialize_on_precompile = false  
config.assets.digest = true
config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx

现在,我需要在development.rb的config.assets.debug中设置false,但是我无法在预编译之前调试资产。这真让我烦恼。

有什么建议吗?感谢。

解决方案

尝试更改application.js文件,删除一个空行和rake assets:clean RAILS_ENV=development,现在效果很好。

1 个答案:

答案 0 :(得分:0)

如果您在本地进行预编译,并希望保留所有正常的开发模式功能,那么您可以调整设置以允许两者。

在development.rb中放置以下行:

config.assets.prefix = "/dev-assets"

这会覆盖application.rb中设置的任何内容(通常为“/ assets”)。

您还需要在application.rb中使用它:

config.assets.initialize_on_precompile = false

然后,您可以将已编译的资产提交给源代码控制并进行部署,而不必担心以后清理它们。

(请参阅我的full blog post主题)