如何解决Elixir:尝试 .. 拯救装饰器
我正在研究 Nebulex.Caching 并使用以下装饰器:
@decorate cacheable(cache: Cache,key: name)
def get_by_name(name,age) do
# your logic (maybe the loader to retrieve the value from the SoR)
end
它完美地工作。但是,当我关闭 Redis 时,它失败并显示 Elixir.Redix.ConnectionError
。这个问题在这里有很好的描述:https://github.com/cabol/nebulex_ecto/issues/6
我尝试编写自己的装饰器并重用 Nebulex.Caching
中的代码:
defmodule Coups.Inventory.Cache.Decorator do
use Decorator.Define,[safe_cacheable: 1]
require Logger
def safe_cacheable(attrs,block,context) do
try do
Nebulex.Caching.cacheable(attrs,context)
rescue Elixir.Redix.ConnectionError ->
quote do
unquote(block)
end
end
end
end
然而,它并没有改变任何东西,也没有捕捉到异常。我怎样才能达到预期的行为?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。