2013-05-13 49 views
0

我有一個目錄projName/vendor/assets/bootstrap/css/ 我公司在生產模式。 production.rb包含:config.assets.precompile << /(^[^_\/]|\/[^_])[^\/]*$/ 當我運行耙資產:預編譯 我得到 projName/public/assets/css/但我想projName/public/assets/bootstrap/css/ 我不明白爲什麼引導目錄是不存在的。 實際上,供應商/資產和應用/資產下的所有頂級目錄均缺失public assets/軌資產流水線生產預編譯

+0

究竟我們你希望與那個正則表達式匹配嗎? – PinnyM 2013-05-13 21:13:30

+0

你是否試圖讓你的css中包含twitter引導程序。如果是這樣,只需在您的視圖使用的scss文件頂部添加「@import」bootstrap「;」。 – halmeetdave 2013-05-13 21:17:45

回答

0

該正則表達式的含義是什麼?如果你想預編譯所有東西,試試這個。

config.assets.precompile = ['*.js', '*.css'] 
+0

這包括咖啡,sass,sccs,slim,haml等嗎? – ahnbizcad 2014-09-04 14:31:39

1

編譯的資產被寫入config.assets.prefix中指定的位置。默認情況下,這是public/assets目錄。

要理解這一點,你必須先了解什麼是預編譯並執行。讓我來解釋

當您運行(rake任務)

rake assets:precompile 

它會在您的應用程序文件夾內public文件夾,將編譯你的所有資產清單(即你的application.cssapplication.js

這究竟發生了什麼? - > Rails捆綁了一個rake任務,它將編譯所有這些。這個rake任務就是上面所顯示的。

編譯資產被寫入到config.assets.prefix指定的位置。默認情況下,這是public/assets目錄。

編譯文件的默認匹配包括的application.js,application.css和所有非JS/CSS文件(這將自動包括所有的圖像資產)從應用程序/文件夾的資產包括你的寶石。

而那正是該正則表達式的手段(包括在您的應用程序/ assets文件夾的所有內容),也可以明確地提供它,如在回答以上。

希望這有助於。

這裏有一些鏈接,供您參考

http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets

http://dennisreimann.de/blog/precompiling-rails-assets-for-development/

0

其實,如果你想預編譯的一切,試試這個:

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 

(基於code in the Rails Guide。 )