微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Elixir:尝试 .. 拯救装饰器

如何解决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 举报,一经查实,本站将立刻删除。