Ruby의 학급 방법을 의뢰할 때 SingleForwardable를 사용합니다

2673 단어 RubyDelegate
에서 오다Rubby2.70 참조 안내서 > 라이브러리 일람 > forwardable 라이브러리 > SingleFordable 모듈.

결론


학급 방법의 의뢰SingleForwardable에서 사용할 수 있다(조사해도 한꺼번에 나오지 않기 때문에 필기.
예제
require 'forwardable'

class Implementation
  def self.service
    puts "serviced!"
  end
end

module Facade
  extend SingleForwardable
  def_delegator :Implementation, :service
end

Facade.service # => serviced!

구체적 예


예를 들어 Bugsnaggem을 사용하고 싶은데 직접 사용하면 나중에 센트리로 갈아타기 어려워 BugReport 모듈을 준비해 랩을 잘 쓰고 싶은 경우 학급 방법을 의뢰할 수 있다.
Bugsnag의 예
module BugReport
  extend SingleForwardable
  def_delegator :Bugsnag, :notify
end

BugReport.notify # Bugsnag.notify が実行される
라일스를 사용한 경우ActiveSupportdelegate도 사용할 수 있다.
delegate의 예
module BugReport
  class << self
    delegate :notify, to: :Bugsnag
  end
end

BugReport.notify # Bugsnag.notify が実行される
의뢰, 편리하네요

좋은 웹페이지 즐겨찾기