absinthe middleware/3FunWithFlags.enabled?
コールバック内で(ref fwf )を使用しようとしていますが、次のエラーが発生しました。
(ArgumentError) argument error
(stdlib) :ets.lookup(:fun_with_flags_cache, :some_flag)
Stacktrace:
│ lib/fun_with_flags/store/cache.ex:35: FunWithFlags.Store.Cache.get/1
│ lib/fun_with_flags/store.ex:12: FunWithFlags.Store.lookup/1
│ lib/fun_with_flags.ex:77: FunWithFlags.enabled?/2
あまり試していません。問題が発生している場所を絞り込みました。:some_flag record
(またはおそらくテーブル) が作成される前にミドルウェアがコンパイル:fun_with_flags_cache
され、レコード/テーブルがないために失敗したと思います。
このリンクは言う:
フラグ情報を Redis またはリレーショナル DB (Ecto を使用した PostgreSQL または MySQL) に保存して、異なるノード間での永続化と同期を行いますが、高速検索のために ETS テーブルにローカル キャッシュも保持します。ノードでフラグが追加または切り替えられると、他のノードは PubSub を介して通知され、ローカルの ETS キャッシュをリロードします。
次の構成でETSを無効にしようとしました:
config :fun_with_flags, :cache,
enabled: false,
しかし、私は働きませんでした。:(
これが私がそれをどのように使用しているかの例です:
defmodule MyApp.Schema do
use Absinthe.Schema
...
def middleware(middleware, field, object) do
FunWithFlags.enabled?(:some_flag) # <-- (ArgumentError) argument error (stdlib) :ets.lookup...
...
end
end
ありがとう!