为什么rake资产:开发中的预编译会导致问题,但不会影响我的生产环境

His*_*alv 4 ruby-on-rails-3.1 asset-pipeline

我已将heroku上的应用程序升级为雪松堆栈,以便资产管道正常工作.我已经按照heroku的文档中的说明选择在本地编译资源.

这创建了一个目录public/assets.生产中的一切都完美无缺(css,js,没有任何问题).回到我的开发环境似乎会导致js无法正常运行.

environment/production.rb中

config.serve_static_assets = false
config.assets.compress = true
config.assets.compile = true
config.assets.digest = true
Run Code Online (Sandbox Code Playgroud)

environment/development.rb中

config.assets.compress = false
config.assets.debug = true
config.assets.compile = true
Run Code Online (Sandbox Code Playgroud)

我检查了源页面,所有文件都正确加载,没有重复的条目.我已经阅读了一些关于是在本地还是在生产中编译资产的SO问题,但它们似乎都没有帮助.还有其他我缺少的东西来恢复我的开发javascript代码,这是正确的程序吗?谢谢

His*_*alv 7

好吧,我好像已经解决了它.

在environment/development.rb中更改此行

config.assets.debug = true
Run Code Online (Sandbox Code Playgroud)

对此

config.assets.debug = false
Run Code Online (Sandbox Code Playgroud)

不知道为什么这可行,但从阅读导轨指南和报价:

"当调试模式关闭时,Sprockets连接并在所有文件上运行必要的预处理器.关闭调试模式后,上面的清单将生成:"

<script src="/assets/application.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助有类似问题的人.