我剛從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
文件不加載不存在於vendor/assets/stylesheets
目錄中的文件的require_tree .
聲明。
我在Capistrano上使用'load'deploy/assets''來解決預編譯資產*時出現問題:http://stackoverflow.com/questions/7549214/rails-3-1-and-資產管線故障上部署與 - Capistrano的。在Ruby on Rails Asset Pipeline指南中解釋的* Server Configuration *怎麼樣?*順便說一句*:在Rails 3.1.2中將解決的錯誤怎麼樣? – Backo
我不確定Cap爲什麼不起作用,但是關於服務器配置,這是最佳做法,但不是強制性的。沒有你失去了未來標題的緩存benfit,但它應該仍然工作。 –
這個bug的請求在這裏:https://github.com/rails/rails/pull/2876 –