2012-11-22 55 views
3

我有一個Rails應用程序,它可以加載開發中的所有資產。Rails應用程序在生產中不使用預編譯的資產

<link rel="stylesheet" href="/assets/reset.css" type="text/css" media="screen" title="no title" /> 
<link rel="stylesheet" href="/assets/text.css" type="text/css" media="screen" title="no title" /> 
<link rel="stylesheet" href="/assets/buttons.css" type="text/css" media="screen" title="no title" /> 
<link rel="stylesheet" href="/assets/theme-default.css" type="text/css" media="screen" title="no title" /> 
<link rel="stylesheet" href="/assets/login.css" type="text/css" media="screen" title="no title" /> 
<link rel="stylesheet" href="/assets/notify.css" type="text/css" media="screen" title="no title" /> 

而在生產服務器上,它仍然使用上面的代碼來加載CSS。不應該使用/assets/applicaiton.css文件嗎?我運行了rake資源:在生產環境中手動執行預編譯任務,我可以看到它已在/ public/assets文件夾中創建了所需的文件。

那麼,我需要做些什麼來告訴Rails使用壓縮文件?

我production.rb看起來是這樣的: -

# Disable Rails's static asset server (Apache or nginx will already do this) 
    config.serve_static_assets = true 

# Compress JavaScripts and CSS 
config.assets.compress = true 

# Don't fallback to assets pipeline if a precompiled asset is missed 
config.assets.compile = false 

# Generate digests for assets URLs 
config.assets.digest = true 

回答

2

您應該使用stylesheet_link_tag助手調用CSS文件是這樣的:

= stylesheet_link_tag "application", :media => "all" 

,插入你的樣式表應用樣式表文件中如:

= require reset 
= require text 
= require button 
... 

修改然後您的production.rb文件設置co nfig.assets.compile爲真

# Disable Rails's static asset server (Apache or nginx will already do this) 
config.serve_static_assets = true 

# Compress JavaScripts and CSS 
config.assets.compress = true 

# Don't fallback to assets pipeline if a precompiled asset is missed 
config.assets.compile = true 

# Generate digests for assets URLs 
config.assets.digest = true 

「應該工作」

+0

我會盡力的,謝謝。如果我不希望生產模式壓縮文件,我需要做什麼?所以他們會像他們處於開發模式一樣服務?這是一個後端應用程序,只有少數人會使用,所以真的不想被這些複雜問題困擾。 –

相關問題