【发布时间】:2011-09-25 14:39:39
【问题描述】:
我刚刚从 Ruby on Rails 3.0.10 切换到 3.1.0,我正在使用 jQuery UI 1.8.14。我在远程机器上以生产模式加载css文件时遇到问题。
在我的app/views/layouts/application.html.erb 文件中,我有:
<%= stylesheet_link_tag 'application', 'jquery-ui-1.8.14.custom', 'jquery-ui-1.8.14.custom_redefinition' %>
<%= javascript_include_tag 'application' %>
注意:jquery-ui-1.8.14.custom 文件是使用 Theme Roller 生成的 CSS 文件,jquery-ui-1.8.14.custom_redefinition 是我的“自定义重定义”文件,它覆盖了一些 CSS 类。这些文件(扩展名为.css)位于vendor/assets/stylesheets。
在我的本地机器上的 开发 模式下似乎一切正常,但是当我使用 Capistrano 部署到远程机器上时,它不再工作了。也就是说,jQuery UI 相关文件没有按预期加载:如果我尝试访问它们,它们的内容是空白\空(我可以在为我的应用程序网页生成的源 HTML 代码中看到)。
我该如何解决?
此时在我的config/environments/production.rb 文件中我有:
# Compress JavaScripts and CSS
config.assets.compress = true
# Don't fallback to assets pipeline if a precompiled asset is missed
#
# Note: Since, at this time, the asset Pipeline doesn't work for me I am
# following the "Live Compilation" approach (more info at
# http://guides.rubyonrails.org/asset_pipeline.html#in-production)
config.assets.compile = true
# Generate digests for assets URLs
config.assets.digest = true
在我的app/assets/stylesheets/application.css.scss 文件中,我有:
/*
*= require_self
*= require_tree .
*/
在我的app/assets/stylesheets/application.js 文件中,我有:
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require_tree .
在部署之前,我在本地机器上运行以下命令:
bundle exec rake assets:precompile
注意:如果我运行上述命令,jquery-ui-1.8.14.custom 和 jquery-ui-1.8.14.custom_redefinition 文件会按预期在public/assets 目录中生成。
可能问题与app/assets/stylesheets/application.css.scss 文件中的require_tree . 语句有关,该语句未加载vendor/assets/stylesheets 目录中存在的文件。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 deployment asset-pipeline