問題タブ [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 投票する
3 に答える
2740 参照

ruby-on-rails - Rails で RSpec を使用してスイーパーをテストする

スイーパーが適切に呼び出されていることを確認したいので、次のようなものを追加してみました。

しかし、私はただ得ます:

テスト構成でキャッシュをオンにしようとしましたが、違いはありませんでした。

0 投票する
7 に答える
6333 参照

ruby-on-rails - Rails では、モデルのみのセットアップで Sweeper が呼び出されません

私はページキャッシュを使用して静的なhtml出力を保存しているRailsアプリに取り組んでいます。キャッシングは正常に機能します。ただし、キャッシュの有効期限が切れるのに問題があります。

私の問題の一部は、コントローラーからキャッシュを期限切れにしないためだと思います。これに必要なすべてのアクションは、モデル内で処理されています。これは実行可能であるように思われますが、私が見つけたモデルベースのキャッシュの有効期限への言及はすべて古くなっているように見えるか、そうでなければ機能していません。

私のenvironment.rbファイルで、私は呼び出しています

そして、/sweepers フォルダーに LinkSweeper ファイルがあります。

では、モデルを更新したときにキャッシュされたページが削除されないのはなぜですか? (プロセス: スクリプト/コンソールを使用して、データベースからアイテムを選択して保存していますが、対応するページはキャッシュから削除されていません)、通常は呼び出される Link モデルの特定のメソッドも呼び出しています。スイーパー。どちらも機能しません。

問題がある場合、キャッシュされたファイルは Links テーブルのキー値から md5 ハッシュされたものです。キャッシュされたページは、/l/45ed4aade64d427...99919cba2bd90f.html のような形式で保存されます。

基本的に、スイーパーは実際にはリンクを監視していないように見えます。また、environment.rb の config.active_record.observers にスイーパーを単純に追加することもできるかもしれないと読みました (こちら) が、それではうまくいかなかったようです (そして、app/sweepers の load_path がenvironment.rb でそれを回避しました)。

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

ruby-on-rails - アクション キャッシングが呼び出されているのがわかっても、正しく期限切れにならない

いくつかのアクション キャッシュを期限切れにするはずのスイーパーがあります。デバッガーは expire_action の呼び出しの直前に停止しますが、実際にはアクションが期限切れになるわけではありません。何が起こっているのでしょうか?

関連するスイーパーとコントローラーは次のとおりです。

#company_sweeper.rb (「モデル」ディレクトリ内)

#reports_controller.rb

有効期限が切れていないことを私が知る方法は、完全なレポートが古いデータを返し、ほぼ瞬時に応答することです。変ですよね?

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

ruby-on-rails - rails-caches_actionexpire_action

キャッシュされたアクションを期限切れにしたいのですが、正しい参照を生成する方法を考えました。

したがって、ホストが欠落していることを除いて、これはほとんど問題ありません。これをexpire_actionメソッドに提供するにはどうすればよいですか?

前もって感謝します。

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

ruby-on-rails - Railsスイーパーは異なるコントローラー間で機能しますか?

サイトインデックスでアクションキャッシングが機能していて、正常に機能するSiteSweeperを設定しています。

ただし、パブリッシャーが保存または破棄されるたびに/ admin/sitesを期限切れにしたいです。PublisherSweeperにこのようなものでサイトインデックスを期限切れにすることは可能ですか?

さまざまなパブリッシャーアクション内でexpire_action'/admin/sites'を呼び出すことができることを知っています。スイーパーにこの機能があるかどうか疑問に思っています(コントローラーを少しきれいに保つため)。

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

ruby-on-rails - Rails Caching: パラメータを必要とするアクションにスイーパーを使用する

ページの更新を処理するためにスイーパーを使用しようとしています。インデックス アクションの更新などについては、すべて正常に動作します...しかし、スイーパーがページ パラメータを解釈できないようです。以下のコードの何が問題なのか誰か教えていただければ、とても感謝しています。

コントローラ:

# これによりキャッシュが作成されますが、更新はされません (これまで)。expire_page コマンドを (スイーパーの代わりに) アクションに直接配置すると、正常に動作します

スイーパー:

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

ruby-on-rails - スイーパーが呼び出されたときに Rails が cache/.html ページを削除しない

Rails の Sweeper とキャッシングに問題があります。

/cache の .html ファイルは、最初のビューで生成されています。

Sweeper アクションは、必要に応じて呼び出されています。

ただし、スイーパー アクションは /cache から .html ページを削除していません。

以下のコードは、私の /controllers および /sweepers ディレクトリから取り除かれています。両方のputs行がログに記録されているので、正常に実行されていることがわかります.expireコマンドはファイルを削除していないようです.

誰でも私がどこで笑えるか考えていますか?

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

ruby-on-rails - キャッシュの有効期限が設定されたモジュールをスイーパーに含めるにはどうすればよいですか?

Rails アプリケーションには次のスイーパーがあります。

「ExpireOptions」というモジュールへの after_update、after_delete、および after_create コールバックを抽出したいと考えています。

モジュール次のようになります (「expire_options」メソッドは元のスイーパーの後ろに残ります):

ただし、キャッシュの有効期限は、スイーパー内でメソッドを明示的に定義した場合にのみ機能します。これらのコールバック メソッドをモジュールに抽出し、引き続き機能させる簡単な方法はありますか?

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

ruby-on-rails - Railsスイーパーで名前付きルートにアクセスするにはどうすればよいですか?

フォークされたプロセスでURLを開くことによってキャッシュを再加熱するスイーパーがあります。これらのURLのホストをハードコーディングするのは簡単ですが、環境に基づいて動的に変更する必要があります。

このためにグローバル/環境変数を設定できることは知っていますが、名前付きルートを使用したいと思います。これを行う方法はありますか?

(名前付きルートをそこに配置しようとしましたが、実行時に解決されないことを明確にする必要があります。)

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

ruby-on-rails-3 - has_and_belongs_to_manyアソシエーション用のRails3キャッシュスイーパー

Rails3アプリケーションでモデル化された次の関係があります。

「SkillsUser」モデルは、ユーザーとスキルの間の多対多の関連付けを表します。このように、ユーザーが新しいスキルを追加し、そのスキルが「スキル」テーブル(つまり「Java」)にすでに存在すると言った場合、既存のスキルとユーザーの関係をskills_usersテーブルに作成するだけです。すべて良い。

ユーザービュー内に、スキルのリストを表示します。そして、私はそれらのスキルを包み込んだフラグメントキャッシングブロックを持っています。

別の編集ページで、ユーザーはスキルを追加または削除できます。このアクションは、skills_usersレコードを作成または削除するだけです。そして、これが発生した場合、スキルがユーザービューに適切に表示されるように、フラグメントキャッシュを無効にする必要があります。

そこで、skills_usersの関係を観察することが人生の目的であるCacheSweeperを作成しました。コントローラは次のとおりです。

そして、これがスイーパーです:

問題は、skills_usersレコードを追加または削除した後(SkillsControllerで「作成」または「破棄」した後)、スイーパーが呼び出されないことです。私のプロジェクトでは他のスイーパーが働いていますが、それらのどれも多対多の関連を観察していません。

それでは、私の質問は、「has_and_belongs_to_many」の関連付けを監視するためにCacheSweeperをどのように作成するかということです。