2012-07-02 130 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