如何使Apache + Passenger和Rails Asset Pipeline协同工作?
当我部署本地工作项目时,我收到500错误
In ActionView::Template::Error occurred in pages#start: jquery-ui-1.8.21.custom.min isn't precompiled
如果我为my_project/current/assets_manifest.yml
grep jquery-ui-1.8
,它会给我
jquery-ui-1.8.21.custom.min.js: jquery-ui-1.8.21.custom.minc50ea0bef9c2fae04ab3b50ead60fc1f.js
此文件也存在于my_project/shared/assets
中(以及jquery-ui-1.8.21.custom.min-c50ea0bef9c2fae04ab3b50ead60fc1f.js.gz,jquery-ui-1.8.21.custom.min.js,jquery -ui-1.8.21.custom.min.js.gz)。
当我打开
http://mytestserver/assets/jquery-ui-1.8.21.custom.min-c50ea0bef9c2fae04ab3b50ead60fc1f.js
在浏览器中它给了我正确的js文件。
从
引发500错误app/views/layouts/application.haml:25
该文件的第24-26行是:
= javascript_include_tag "application"
= javascript_include_tag "jquery-ui-1.8.21.custom.min"
= csrf_meta_tag
那么可能出了什么问题?为什么不起作用?
答案 0 :(得分:0)
如果application.js
没有加载该文件,那么您需要在application.rb
添加一行,以便应用知道:
config.assets.precompile += ['jquery-ui-1.8.21.custom.min.js']
答案 1 :(得分:0)
shared/assets
不是资产管道通常查找文件的地方。
通常情况下,资产管道会在app/assets
中查找,它可能会显示在lib/assets
中,我很确定它也会在vendor/assets
中查看。但默认情况下可能不会包含vendor/assets
,我将在下面讨论。
Per Rails惯例我建议你把这种依赖放在vendor/assets/javascripts
如果要将搜索目录添加到资产管道,只需对config.application.rb
在YourProject::Application
声明中,添加:
config.assets.paths << Rails.root.join("vendor/assets/javascripts")
或者你想要的任何其他路径。
答案 2 :(得分:0)
我想我解决了..我认为这是步骤:
javascript_include_tag
添加的每个js文件添加到config.assets.precompile,用于@Simon建议的生产环境javascript_include_tag
指令中它们应该包含在.js-extension