hotoolong's blog

プログラムのことやエンジニアリングに関することを記事にしています。

embed_callbacksに機能追加した

概要

前回の記事embed_callbacksというgemを紹介しました。
こちらの機能を追加したので紹介していきます。

追加した機能

  • メソッドがエラーになったときに処理を呼び出せる
  • メソッドエラーになっても呼び出せる

rescue

これはその名の通りでrescueを設定するとエラー時に呼びされます。
コードを見てもらったほうがわかりやすいかと思うので下記にサンプルを記載しておきます。

require 'embed_callbacks'

class Sample
  include EmbedCallbacks
  set_callback :target, :rescue, :rescue_callback

  def target
    raise 'target'
  end

  def rescue_callback
    puts 'rescue_callback'
  end

end
sample = Sample.new
sample.target

#=> rescue_callback
#=> RuntimeError (target)

encure

こちらも同様にencureになります。
こちらはafterに近いかもしれないですが、
エラーが発生しても必ず呼び出されます。

require 'embed_callbacks'

class Sample
  include EmbedCallbacks
  set_callback :target, :ensure, :ensure_callback

  def target
    puts 'target'
  end

  def ensure_callback
    puts 'ensure_callback'
  end

end
sample = Sample.new
sample.target
#=> target
#=> ensure_callback

その他

RubyGemsへの登録

前回からの進捗はない状態ですが、
slackの#rubygemsで質問してみたところ、同様の問題質問があることを教えてもらいました。
Wrong emails when signup / Problems / Discussion Area - RubyGems.org Support
こちらを見ると SUPPORT STAFF で対応してもらい解決したようです。
一旦サポートにメールを送ってみました。
返信までは時間がかかるようなのでしばらく待ってみようと思います。

まとめ

callbackという感じではないですが、 rescue、ensureを後付で追加したいケースがあり作成してみました。
よかったらつかってみてください。