1

使用 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。” 但实际上,我看不出它是为我做的。那是问题吗?谢谢!

4

1 回答 1

1

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

基本上,您有两个选择:

  1. 预编译你的资产bundle exec rake assets:precompile
  2. 现场编译:config.assets.compile = true

您应该使用在布局和​​视图image_tag中创建<img>帮助程序,因为在预编译阶段会从已编译文件的内容生成 MD5,并在将文件写入光盘时插入文件名。

于 2012-07-02T17:55:44.010 回答