Rails 3无法从apache服务器为生产中的资产提供服务

时间:2012-07-02 17:34:40

标签: ruby-on-rails assets production

使用Rails 3.2.2和ruby 1.9.2,我无法在生产中提供资产。在为webapps配置服务器方面没有经验。

我在applictation.html.erb中有以下代码,

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

我把topbar.png放在app / assets / images /中。它在开发模式下按预期工作,在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,但发现新手非常密集。

我可以尝试什么?我读到的一件事是:“你应该将app / assets用于必须在服务之前进行一些预处理的文件。在生产中,Rails默认将这些文件预编译为public / assets。”但实际上,我无法看到它对我这样做。那是问题吗?谢谢!

1 个答案:

答案 0 :(得分:1)

查看导轨指南的这一部分:http://guides.rubyonrails.org/asset_pipeline.html#in-production

基本上,您有两个选择:

  1. 使用bundle exec rake assets:precompile
  2. 预编译资产
  3. 实时编译:{{1​​}}
  4. 您应该使用config.assets.compile = true在布局和视图中创建image_tag帮助器,因为在预编译阶段,MD5是从编译文件的内容生成的,并插入到文件名中被写入光盘。