Rails 3.1 资源预编译
我正在开发一个 Rails 3 应用程序并尝试将其部署到生产环境中。 我正在使用 capistrano 部署我的应用程序,并将其配置为在 update_code 任务之后预编译资产。
问题是当我部署应用程序时一切正常。 通过跟踪服务器生产日志,我看到了这一点:
Compiled application.js (6ms) (pid 7552)
Compiled jquery.js (4ms) (pid 7552)
Compiled jquery_ujs.js (0ms) (pid 7552)
Compiled home.js (94ms) (pid 7552)
Compiled libs/dd_belatedpng.js (0ms) (pid 7552)
Compiled libs/modernizr-1.7.min.js (0ms) (pid 7552)
Compiled plugins.js (0ms) (pid 7552)
Compiled script.js (0ms) (pid 7552)
Compiled user_sessions.js (93ms) (pid 7552)
Compiled users.js (92ms) (pid 7552)
Compiled application.css (3ms) (pid 7552)
Compiled handheld.css (0ms) (pid 7552)
Compiled home.css (55ms) (pid 7552)
Compiled style.css (0ms) (pid 7552)
Compiled user_sessions.css (1ms) (pid 7552)
Compiled users.css (0ms) (pid 7552)
Compiled application.js (6ms) (pid 7541)
Compiled jquery.js (4ms) (pid 7541)
Compiled jquery_ujs.js (0ms) (pid 7541)
Compiled home.js (95ms) (pid 7541)
Compiled libs/dd_belatedpng.js (0ms) (pid 7541)
Compiled libs/modernizr-1.7.min.js (0ms) (pid 7541)
Compiled plugins.js (0ms) (pid 7541)
Compiled script.js (0ms) (pid 7541)
Compiled user_sessions.js (93ms) (pid 7541)
Compiled users.js (94ms) (pid 7541)
Compiled application.css (2ms) (pid 7541)
Compiled handheld.css (0ms) (pid 7541)
Compiled home.css (1ms) (pid 7541)
Compiled style.css (0ms) (pid 7541)
Compiled user_sessions.css (0ms) (pid 7541)
Compiled users.css (0ms) (pid 7541)
但是,如果我尝试在浏览器中显示主页,我得到了这一点:
ActionView::Template::Error (style.css isn't precompiled):
14:
15: %link{:rel => "shortcut icon", :href => "/favicon.ico" }
16: %link{:rel => "apple-touch-icon", :href => "/apple-touch-icon.png"}
17: = stylesheet_link_tag "style"
18: = javascript_include_tag "libs/modernizr-1.7.min"
19: = javascript_include_tag "application"
20:
app/views/layouts/application.html.haml:17:in `_app_views_layouts_application_html_haml__1713356285_69878424198520'
我只是无法理解服务器如何能够告诉我资产已编译以及在它告诉之后我认为,实际上,这些文件没有编译。
有人遇到过这种问题吗?
感谢您的帮助。
I'm working on a rails 3 app and trying to deploy it on a production environment.
I'm using capistrano to deploy my app and configured it to precompile the assets after the update_code task.
The thing is everything works fine when I deploy the app.
By following the server production logs I see this :
Compiled application.js (6ms) (pid 7552)
Compiled jquery.js (4ms) (pid 7552)
Compiled jquery_ujs.js (0ms) (pid 7552)
Compiled home.js (94ms) (pid 7552)
Compiled libs/dd_belatedpng.js (0ms) (pid 7552)
Compiled libs/modernizr-1.7.min.js (0ms) (pid 7552)
Compiled plugins.js (0ms) (pid 7552)
Compiled script.js (0ms) (pid 7552)
Compiled user_sessions.js (93ms) (pid 7552)
Compiled users.js (92ms) (pid 7552)
Compiled application.css (3ms) (pid 7552)
Compiled handheld.css (0ms) (pid 7552)
Compiled home.css (55ms) (pid 7552)
Compiled style.css (0ms) (pid 7552)
Compiled user_sessions.css (1ms) (pid 7552)
Compiled users.css (0ms) (pid 7552)
Compiled application.js (6ms) (pid 7541)
Compiled jquery.js (4ms) (pid 7541)
Compiled jquery_ujs.js (0ms) (pid 7541)
Compiled home.js (95ms) (pid 7541)
Compiled libs/dd_belatedpng.js (0ms) (pid 7541)
Compiled libs/modernizr-1.7.min.js (0ms) (pid 7541)
Compiled plugins.js (0ms) (pid 7541)
Compiled script.js (0ms) (pid 7541)
Compiled user_sessions.js (93ms) (pid 7541)
Compiled users.js (94ms) (pid 7541)
Compiled application.css (2ms) (pid 7541)
Compiled handheld.css (0ms) (pid 7541)
Compiled home.css (1ms) (pid 7541)
Compiled style.css (0ms) (pid 7541)
Compiled user_sessions.css (0ms) (pid 7541)
Compiled users.css (0ms) (pid 7541)
But if I try to display the main page in a browser, I get this :
ActionView::Template::Error (style.css isn't precompiled):
14:
15: %link{:rel => "shortcut icon", :href => "/favicon.ico" }
16: %link{:rel => "apple-touch-icon", :href => "/apple-touch-icon.png"}
17: = stylesheet_link_tag "style"
18: = javascript_include_tag "libs/modernizr-1.7.min"
19: = javascript_include_tag "application"
20:
app/views/layouts/application.html.haml:17:in `_app_views_layouts_application_html_haml__1713356285_69878424198520'
I just can't understand how the server is able to tell me the assets are compiled and just after it tells me that, actually, the files aren't compiled.
Does anyone encountered this kind of problem ?
Thanks for your help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一种解决方案是告诉生产环境不要在 config/environments/development.rb 中检查预编译,并将行:
重新
启动服务器,然后您应该检查 HALM 的位置正在寻找
style.css
,它应该是assets/style.css
更新
这是另一个选项
告诉你的
config/environments/Production.rb< /code> 将该文件编译为确保它正在编译。
config.assets.precompile += %w( style.css )
在 https://stackoverflow 上看到了这个。 com/a/7541958/295228
One solution is to tell the production environment not to check for pre-compiled in the
config/environments/production.rb
and set the line:to
Restart your server and then you should check where
HALM
is looking for thestyle.css
which should beassets/style.css
UPDATE
Here's another option
Tell your
config/environments/production.rb
to compile that exactly file to make sure It's being compiled.config.assets.precompile += %w( style.css )
Saw this on https://stackoverflow.com/a/7541958/295228