1

我在部署到生产之前预编译资产。生产模式运行良好,但 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>

发展.rb

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

生产.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,现在它运行良好。

4

1 回答 1

0

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

在 development.rb 中放置以下行:

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

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

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

config.assets.initialize_on_precompile = false

然后,您可以将编译的资产提交到源代码管理并部署它们,而不必担心事后清理它们。

(请参阅我关于该主题的完整博客文章)

于 2012-05-25T04:43:54.893 回答