2011-10-13 6 views
5

私はRails 3.1.0のアプリケーションをpassengerproductionの環境で実行していますが、アプリケーションでプロフィール画像を変更できるセクションがあります。私のコントローラでファイルをアップロードし、rmagickで画像のサイズを変えたら、image_tagで新しい画像をレンダリングしますが、サーバを再起動するまでアプリケーションは画像を表示しません。Rails、サーバが再起動するまでrmagickによってアップロードされた新しい画像を認識しないアセット

私は何を取得することは、私は、サーバーを再起動する場合は、画像が表示されますが、明らかに私は一度のサーバを再起動することはできません、ユーザーが新しいイメージをアップロードNo route matches [GET] "assets/path/to/image.png"

です。

アセットを適切に維持する方法をどのように解決できますか?

+0

更新答え – Tilo

答えて

6

Railsのアセットパイプラインは、背景、アイコン、バナーなどの構造/デザインイメージ用です。動的資産はパブリックディレクトリに入れてください

静的資産をNginxやApacheなどのWebサーバから提供するか、Railsアプリケーションの公開ディレクトリに配置することをお勧めします。

これはあなたの問題を解決するはずです。 rmagick/carrierwaveなどの画像をアップロードする静的資産や、好きな宝石のための別のパスを作成します。

アセットパイプラインは、起動時に存在するイメージのみを認識します。静的/アップロードされたアセットを別々のディレクトリに分離し、ウェブサーバから直接配信することで、より迅速になるはずです。

あなたの設定でこのような何かをする必要があります:

# Disable Rails's static asset server (Apache or nginx will already do this) 
config.serve_static_assets = false 

# Compress JavaScripts and CSS 
config.assets.compress = true 

# Don't fallback to assets pipeline if a precompiled asset is missed 
config.assets.compile = false 

# Generate digests for assets URLs 
config.assets.digest = true 

# UNCOMMENT the header that your server uses for sending files 
# config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache 
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx 

より一般:

http://railscasts.com/episodes/279-understanding-the-asset-pipeline

http://guides.rubyonrails.org/asset_pipeline.html

Rails 3.1: Should File Uploads be added to asset pipeline?

すると、IMAサービスを提供についてアセットパイプラインの外側GES:

http://mrjaba.posterous.com/rails-31-asset-pipeline-with-nginx-and-passen

http://trackingrails.com/posts/rails-31-and-asset-pipeline-problems-with-apache

http://pastebin.com/kC4Ba40U

https://github.com/defunkt/resque/issues/418

+0

..以下のような状況は、私は私の 'のRails 3.1.0'アプリケーションを配備していますということです私のWebサーバーのルート上にあるので、私はファイルを提供する別の方法はありませんが、このトラフをアプリケーションにするには、後でCDNまたはAmを使用しますアゾンのS3だが今はレールアプリケーションを使って画像を提供しているだろうが、私はレール3のデフォルトとして提供されるアセットを無効にする方法を見たが、現在はアセットを使って作業し、 、ありがとう。 –

+0

でも、これはRailsの外でも可能です(例: ApacheやNginxのWebサーバーに、Railsにルートがない追加のディレクトリを提供するように指示します。 – Tilo

+0

Apacheに関する情報がありますか?私は今、私のドメインのルート '/'でアプリケーションを提供しているので、ありがとう。 –