私の開発マシンでは正常に動作するアプリがありますが、実稼働サーバーでは壊れたリンクを使用して、Paperclip Gem を使用して提供される画像を提供します。
本番環境は Linux(Debian)、Apache、Passenger で、Capistrano でデプロイしています。
アプリは次の場所に保存されます (capistrano を使用してデプロイされたアプリの現在のバージョンのパブリック フォルダーを指すシンボリック リンク)。
/var/www/apps/root/appname
ただし、実稼働サーバーでアクセスしようとすると、Apache エラー ログに、検索中のパスとして次のように表示されます。
/var/www/apps/root/system
ただし、正しいパスは次のとおりです。
/var/www/apps/appname/shared/system
私が利用できるオプションの 1 つは、システムを正しいパスに導くシンボリック リンクをルートに作成することですが、同じルート ディレクトリに別のアプリをデプロイする場合に備えて、これを行いたくありません。
このリクエストの URL は Rails によって生成されますが、静的リソース (画像ファイル) をフェッチするのは Apache であるため、config/environments/production.rb に以下を配置してみました。
ENV["RAILS_RELATIVE_URL_ROOT"] = '/appname/'
これにより、私が経験した他のすべてのパスの問題が解決されましたが、レールが (Paperclip gem を介して) URL を生成するときに、それを使用していないようです。
Paperclip が正しいパスを使用し、本番環境でのみ使用するように設定するにはどうすればよいですか?