問題タブ [sweeper]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3153 参照

ruby-on-rails - Rails 3 キャッシング: アクションおよびフラグメント キャッシングでスイーパーを使用してキャッシュを期限切れにするにはどうすればよいですか?

レストランのメニューを表示するページに取り組んでいます。私は 2 つのモデルを持っています: FoodMenu has_many :products と Product belongs_to :food_menu です。どちらのモデルのコントローラーも持っていません。代わりに、「pages_controller.rb」を使用して、各 FoodMenu とその製品を「menu」アクションで表示しています。

メニュー ページ (localhost:3000/menus) でアクション キャッシュを使用したいのですが、これは機能していますが、製品を更新、作成、または破棄するときにキャッシュを期限切れにすることができません。

「pages_controller.rb」の上部には、次のものがあります。

http://guides.rubyonrails.org/caching_with_rails.html#sweepersのサンプル コードを使用して、 app/sweepers に Product モデルと FoodMenu モデルの個別のスイーパーを作成しようとしましたが、うまくいきませんでした。次に、コントローラーが使用するすべてのモデルをスイーパーが監視することになっている SO エントリを読み込んだので、Product モデルと FoodMenu モデルの両方を監視し、"メニュー」アクション。それもうまくいきませんでした。私は何を間違っていますか?「pages_sweeper.rb」で私が今持っているものは次のとおりです。

0 投票する
1 に答える
389 参照

ruby-on-rails - Rails: スイーパーでコントローラー変数にアクセスする

したがって、Rails Sweeper に関して変更する必要があるコードがいくつかあります。

問題は、スイーパー内で Cookie とパラメーター ハッシュにアクセスできないように見えるにもかかわらず、当社の一部の統合環境では正常に表示されることに気付きました。ただし、ローカルマシンでは機能しません。だから私の質問は:

  1. Sweeper 内で params / cookie にアクセスするにはどうすればよいですか?
  2. それが不可能な場合、代わりに何をしますか?

ありがとう

0 投票する
1 に答える
215 参照

ruby-on-rails-3 - このシナリオでレールスイーパーを呼び出す方法は?

以下のコードからわかるように。アクションをキャッシュしていshowます。show action には次のメソッドもありますView.create_for(@song)

View.create_for(@song)が呼び出されると、それぞれのキャッシュがクリアされるようにしたいと思います。

これについてどうすればいいですか?Viewモデルでレール スイーパーを手動で呼び出す必要がありますか? もしそうなら、どのように?

私のコントローラー:

マイスイーパー:

0 投票する
1 に答える
1166 参照

ruby-on-rails - Rails 3.2:有効期限が切れた直後に新しいページキャッシュを事前にレンダリング (ベイク) しますか?

caches_page特定のコントローラー/アクションを使用するアプリケーションがあります。キャッシュを期限切れにするために、スイーパーを使用します。全体として、これは標準的なソリューションです。

ただし、一部の変更により、サーバーで要求が殺到する可能性があるため (プッシュ通知が送信され、クライアント デバイスが新しいデータをフェッチするようになる可能性があるため)、キャッシュを事前にレンダリングできるようにしたいと考えています。もちろん、最初のリクエストが自動的にキャッシュに書き込まれるのを待つこともできますが、この場合、リクエストが来ること、多くのリクエストがある可能性、およびそれらが近くにある可能性があることを知っています-同時に。というわけで、キャッシュを用意したいと思います。

複雑さを増すために、更新は通常の Web ページを介して行われ、ほとんどがスキャフォールディングされた標準のコントローラーで処理されますが、キャッシュしたい「ページ」は、API として機能するまったく異なるコントローラーの JSON 応答です。

では、スイーパー (またはキャッシュ期限切れの更新を処理するコントローラー) から新しいページ キャッシュをトリガーして、すぐに書き込むにはどうすればよいでしょうか?

別の言い方をすると、あるコントローラーから別のコントローラーへの内部要求を行うにはどうすればよいですか?


編集:以下に示すようなことをしてしまいました。それほどエレガントではありませんが、効果的です

0 投票する
2 に答える
449 参照

ruby-on-rails - キャッシング:間違ったパスとページは期限切れになりません

単純なキャッシング(ruby 1.9.2、rails 3.1.3、開発環境)に問題があります:

development.rb:

スイーパー:

コントローラー:

ページは正しいディレクトリにキャッシュされ、アクションは必要に応じてスイーパーアクションをトリガーしますが、ページの有効期限は切れておらず、サーバーはキャッシュされたページをデフォルトの場所から取得しようとしています。

なぜ何かアイデアはありますか?構成に問題がありますか?

0 投票する
1 に答える
1192 参照

ruby-on-rails - レールがスイーパーを見つけられないのはなぜですか?

私は自分のコントローラーに持っています:

アプリ内に/sweepersというディレクトリを作成しようとしましたが、機能しませんでした。モデル内で/ cacheフォルダーを作成しようとしましたが(これを例として使用しているブログがあります)、機能しませんでした。

私のスイーパーは次のようになります。

終わり

サーバーを起動しようとすると、次のようになります。

なぜうまくいかなかったのですか?また、(レンダリング方法の)ビューのみのキャッシュを期限切れにする方法はありますか?私はその場でビューを生成しています。たとえば、views / officialios/a.html.rbにあるビューのキャッシュを期限切れにできると非常に便利です。

私が何をしているのか知りたければ、それは簡単です。フォームを使用してビューを生成し、そのビュー(またはそのコード)を更新したいときに本番環境にいるとき、キャッシュが原因でビューが更新されないため、フォームを「更新」するたびに手動でキャッシュをリセットする必要があります。

ありがとう。

0 投票する
4 に答える
2224 参照

ruby-on-rails - モデルまたは Resque ワーカーでフラグメント キャッシュをどのように期限切れにしますか?

以下の引用を引用しましたが、これにはある程度の意味があります。

「キャッシュされたページとフラグメントは通常、モデルの状態に依存します。キャッシュは、どのアクションが関連するモデルを作成、変更、または破棄するかを気にしません。そのため、通常のオブザーバーを使用することは、キャッシュを期限切れにするための最良の選択のようです。」

例えば。モデルを更新する resque ワーカーがあります。モデルが更新/作成されたときに有効期限が切れるフラグメント キャッシュが必要です。これは掃除機ではできません。

ただし、オブザーバーを使用すると、モデルまたは Resque ジョブで次のようなものが必要になります。

モデル自体はキャッシングについて認識すべきではありません。これは、MVCの原則を破り、将来的に醜い結果につながります。

0 投票する
1 に答える
440 参照

ruby-on-rails - Rails 3.1 異なる名前空間のコントローラーメソッドのスイーパー

全て、

Rails 3.1 アプリにキャッシングを追加しようとしています。スイーパーはデフォルトの名前空間に存在し、管理者の名前空間に存在するコントローラーがあります。

たとえば、Admin 名前空間に BooksController があり、このコントローラの share メソッドが実行されるたびに、ブック キャッシュをスイープしたいと考えています。このメソッドに after_books_share という名前を付けようとしましたが、メソッドが呼び出されません。

0 投票する
1 に答える
1103 参照

ruby-on-rails-3 - 記事が更新されたときにホームページのキャッシュを期限切れにするにはどうすればよいですか?

新しい記事が公開されたときに、スイーパーを使用してホームページのインデックスアクションをクリアしようとしています。

ホームページキャッシュは開発環境で正常に機能しており、1分後に期限切れになります。ただし、記事が保存されると、スイーパーアクションはトリガーされません。

どこかで間違っているか、ホームページのキャッシュを期限切れにするために別のアプローチが必要です。

私のアプリはActiveAdminを使用して記事を更新し、Dalli for Memcacheを使用します(Herokuを使用するため)。

0 投票する
1 に答える
137 参照

ruby-on-rails - 作成時に Rails キャッシュ スイーパーが失敗する

私はコントローラーを持っています:

とスイーパー:

そして得ています:

私が推測している問題は、スイーパーが after_save と呼ばれているためです。新しいレコードでは、更新または削除時にのみスイープするように具体的に言ったにもかかわらず、破棄するものは何もありません。

(例として、モデルの名前を明らかに「The Model」に変更しました)