[英]How assets precompile in development environment on ruby on rails?
為什么我們不能在開發環境中預編譯資產? 我知道sprockets基本上編譯所有資產。
當我們進入生產環境時,我們運行命令:
rake assets:precompile
但是在開發環境中,我們無法為它編譯自己做任何事情。 兩種環境中資產編譯的行為有何不同?
如果要在開發環境中預編譯資源,可以使用以下命令:
RAILS_ENV=development bundle exec rake assets:precompile
您可以使用config / development.rb在開發環境中預編譯資產
config.assets.debug = false
在大多數情況下,您不需要它,因為您的開發過程會更加困難。
每個Web應用程序都包含一些圖像和CSS文件,使其看起來很漂亮,還有一些JavaScript文件來處理用戶交互和行為。 如果資產加載速度加快,Web應用程序應該表現得更好。 有許多策略可以使資產快速加載,例如縮小,壓縮(gzipping),緩存等。
在開發模式下,資產按清單文件中指定的順序作為單獨的文件提供。
這個清單app / assets / javascripts / application.js:
//= require core
//= require projects
//= require tickets
在生產環境中,Sprockets使用上面概述的指紋識別方案。 默認情況下,Rails假設資產已經過預編譯,並且將由Web服務器作為靜態資產提供。
在預編譯階段,MD5從編譯文件的內容生成,並在寫入光盤時插入文件名。 Rails助手使用這些指紋名稱代替清單名稱。
例如:
<%= javascript_include_tag "application" %>
<%= stylesheet_link_tag "application" %>
生成這樣的東西:
<script src="/assets/application-908e25f4bf641868d8683022a5b62f54.js"></script>
<link href="/assets/application-4dd5b109ee3439da54f5bdfd78a80473.css" media="screen"
rel="stylesheet" />
注意:使用Asset Pipeline:不再使用:cache和:concat選項,請從javascript_include_tag和stylesheet_link_tag中刪除這些選項。
指紋識別行為由config.assets.digest初始化選項控制(對於生產,默認為true,對於其他所有選項,默認為false)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.