[英]Rails 3.1 Asset pipeline - Why my images do not precompile for production?
[英]rails asset pipeline production precompile
我有一個目錄projName/vendor/assets/bootstrap/css/
我處於生產模式。 production.rb包含:config.assets.precompile << /(^[^_\\/]|\\/[^_])[^\\/]*$/
當我運行rake資產時:precompile我得到projName/public/assets/css/
但我想要projName/public/assets/bootstrap/css/
我不明白為什么引導目錄不存在。 實際上, public assets/
中缺少供應商/資產和應用/資產下的所有頂級目錄。
編譯后的資產將寫入config.assets.prefix
指定的位置。 默認情況下,這是public/assets
目錄。
要了解這一點,您必須首先了解什么是預編譯和做什么。 讓我解釋
運行時(耙任務)
rake assets:precompile
它會創建一個public
應用程序文件夾內的文件夾,這將編譯你的所有資產清單(即你的application.css
和application.js
)
這到底是怎么發生的? -> Rails捆綁了一個rake任務,它將編譯所有這些。 上面顯示的是該耙任務。
編譯后的資產將寫入config.assets.prefix
指定的位置。 默認情況下,這是public/assets
目錄。
用於編譯文件的默認匹配器包括application / assets文件夾(包括您的gems)中的application.js,application.css和所有非JS / CSS文件(這將自動包括所有圖像資產)。
這正是regex的含義(將所有內容包括在app / assets文件夾中),您也可以顯式提供它,如上面的答案所示。
希望這會有所幫助。
這里有一些鏈接供您參考
http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets
http://dennisreimann.de/blog/precompiling-rails-assets-for-development/
正則表達式是什么意思? 如果要預編譯所有內容,請嘗試此操作。
config.assets.precompile = ['*.js', '*.css']
實際上,如果您想預編譯所有內容,請嘗試以下操作:
def precompile?(path)
%w(app lib vendor).each do |asset_root|
assets_path = Rails.root.join(asset_root, 'assets').to_path
return true if path.starts_with?(assets_path)
end
false
end
# Precompile all assets under app/assets (unless they start with _)
Rails.application.config.assets.precompile << proc do |name, path|
starts_with_underscore = name.split('/').last.starts_with?('_')
unless starts_with_underscore
path = Rails.application.assets.resolve(name).to_path unless path # Rails 4 passes path; Rails 3 doesn't
precompile?(path)
end
end
(基於Rails Guide中的代碼 。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.