2012-02-13 7 views
1

私はレールアプリケーションの外にある部分的にレンダリングされているコンテンツを表示するレールアプリケーションを持っていますサーバ。レールを外部レールアプリからキャッシュするのをやめたり、キャッシュをタスクでクリアしたりするにはどうすればいいですか?

これはすべてうまく表示されますが、この点は、他の人がレールアプリケーションを再起動する必要なく、このフォルダにコンテンツをプッシュアップできるようにすることでした。展開と表示は問題ありませんが、コンテンツはキャッシュされているため、サーバーが再起動されるまで更新されません。

私の見解では:

<% cache("frag_key") do %> 
     <%= render :partial => "#{@content_path}.rhtml" %> 
    <% end %> 

のRakeタスク

namespace :cache do 
     desc 'Clear memcache' 
     task :clear => :environment do 
     Rails.cache.delete('frag_key') 
     end 
    end 

です私は部分的に呼び出しの周りの断片を作成し、コンテンツが展開されたときにそれを削除するにはrakeタスクを作成してみましたこれらの特定のファイルのキャッシュを停止する方法はありますか? 私のソリューションは理論的にうまくいかなければならないと私は何か間違っていますか? 何か助けていただければ幸いです。

編集:memcacheを使用していないことにも注意してください。

答えて

-1

あなたのソリューションは動作しません。ファイルを実際にレンダリングしたい場合は、アプリを再起動するかキャッシングを無効にする必要があります。キャッシングを無効にすると、アプリのパフォーマンスが大幅に低下します。

あなたができることは、単に部分ファイルを外部ファイルとして扱い、標準IO操作でディスクから読み取ることです。いくつかのレールコードを実行する必要があるか、アプリケーションの仕様にアクセスする必要がある場合、このアプローチは動作しません。

josévalimsの優れた書籍「Crafting Railsアプリケーション」のビューコードをデータベースに保存する方法についてお読みになりました。おそらく、これはあなたの問題に対する適切な解決策を見つける方法のいくつかのアイデアを提供するかもしれません。

関連する問題