1

Rails 3.2.2 と Ruby 1.9.2 を使用していますが、本番環境でアセットを提供できません。Web アプリケーション用のサーバーの構成についてはあまり経験がありません。

applictation.html.erb に次のコードがあります。

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

app/assets/images/ に 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ですが、初心者にとってはかなり密集しています。

何を試すことができますか?私が読んだことの1つは、「提供する前に何らかの前処理を行う必要があるファイルには、app/assetsを使用する必要があります。本番環境では、Railsはデフォルトでこれらのファイルをpublic/assetsにプリコンパイルします。」しかし、実際には、それが私のためにそれを行っていることはわかりません。それが問題ですか?ありがとう!

4

1 に答える 1

1

Railsガイドのこのセクションをチェックしてください:http://guides.rubyonrails.org/asset_pipeline.html#in-production

基本的に、2つのオプションがあります。

  1. アセットをプリコンパイルするbundle exec rake assets:precompile
  2. ライブコンパイル:config.assets.compile = true

また、レイアウトとビューでヘルパーimage_tagを作成するために使用する必要<img>があります。これは、コンパイル前のフェーズで、コンパイルされたファイルのコンテンツからMD5が生成され、ディスクに書き込まれるときにファイル名に挿入されるためです。

于 2012-07-02T17:55:44.010 に答える