2012-07-02 125 views
1

使用Rails 3.2.2和ruby 1.9.2我無法在生產中爲資產提供服務。在爲webapps配置服務器方面沒有真正的經驗。Rails 3不能在apache服務器上爲生產資產提供服務

我在applictation.html.erb下面的代碼,

<a href="/"><img src="/assets/topbar.png" border="0" alt="My LOGO"></a> 

我把應用程序/資產/圖像/ topbar.png。它在開發模式下按預期工作,當png出現時顯示,如果刪除png則不顯示。

它不顯示在生產中。到目前爲止,我們已經完成了以下工作。該應用程序確實運行,但不顯示上述資產。

<VirtualHost *:8081> 
    ServerName dev.mycompany.com:8081 
     DocumentRoot /var/www/vhosts/dev.mycompany.com/webapps/ 
#  PassengerAppRoot /var/www/vhosts/dev.mycompany.com/webapps/testapp/public 
# PassengerLogLevel 3 

     RackBaseURI /myRailsTest 
     <Directory /var/www/vhosts/dev.mycompany.com/webapps/myRailsTest> 
       AllowOverride all 
       Allow from all 
       Options -MultiViews 
      <IfModule mod_php5.c> 
        php_admin_flag engine on 
        php_admin_flag safe_mode on 
      </IfModule> 
     </Directory> 
</VirtualHost> 

我需要做更多的事情來配置Apache服務器嗎?我正在閱讀:http://guides.rubyonrails.org/asset_pipeline.html,但發現它對於新手來說非常密集。

我該怎麼辦?我讀到的一件事是:「你應該使用應用程序/資產來處理必須經過一些預處理的文件,在生產中,Rails預先將這些文件預編譯爲公共/資產。」但實際上,我看不到它是爲我做的。這是問題嗎?謝謝!

+0

在服務器上嘗試類似RAILS_ENV =生產耙子資產:預編譯 – thisfeller

+0

謝謝,非常有幫助。 – dt1000

回答

1

退房導軌導向的這一部分:http://guides.rubyonrails.org/asset_pipeline.html#in-production

基本上,你有兩個選擇:

  1. 預編譯資產bundle exec rake assets:precompile
  2. 直播編譯:config.assets.compile = true

你應該使用image_tag在你的位置創建<img>幫手因爲在預編譯階段,MD5是從編譯文件的內容中生成的,並在寫入光盤時插入到文件名中。

+0

謝謝image_tag是我的情況的關鍵。謝謝! – dt1000