module Cistern::Request

Attributes

cistern[R]

Public Class Methods

cistern_request(cistern, klass, name) click to toggle source
# File lib/cistern/request.rb, line 21
  def self.cistern_request(cistern, klass, name)
    unless klass.name || klass.cistern_method
      fail ArgumentError, "can't turn anonymous class into a Cistern request"
    end

    method = <<-EOS
      def #{name}(*args)
        #{klass}.new(self).call(*args)
      end
    EOS


    cistern::Mock.module_eval method, __FILE__, __LINE__
    cistern::Real.module_eval method, __FILE__, __LINE__
  end
new(cistern) click to toggle source
# File lib/cistern/request.rb, line 55
def initialize(cistern)
  @cistern = cistern
end
service_request(*args) click to toggle source
# File lib/cistern/request.rb, line 37
def self.service_request(*args)
  Cistern.deprecation(
    '#service_request is deprecated.  Please use #cistern_request',
    caller[0]
  )
  cistern_request(*args)
end

Public Instance Methods

call(*args) click to toggle source
# File lib/cistern/request.rb, line 59
def call(*args)
  dispatch(*args)
end
mock(*) click to toggle source
# File lib/cistern/request.rb, line 67
def mock(*)
  raise NotImplementedError
end
real(*) click to toggle source
# File lib/cistern/request.rb, line 63
def real(*)
  raise NotImplementedError
end
service() click to toggle source
# File lib/cistern/request.rb, line 47
def service
  Cistern.deprecation(
    '#service is deprecated.  Please use #cistern',
    caller[0]
  )
  @cistern
end

Protected Instance Methods

dispatch(*args) click to toggle source

@fixme remove _{mock,real} methods and call {mock,real} directly before 3.0 release.

# File lib/cistern/request.rb, line 74
def dispatch(*args)
  to = cistern.mocking? ? :mock : :real

  legacy_method = :"_#{to}"

  if respond_to?(legacy_method)
    Cistern.deprecation(
      '#_mock is deprecated.  Please use #mock and/or #call. See https://github.com/lanej/cistern#request-dispatch',
      caller[0]
    )

    public_send(legacy_method, *args)
  else
    public_send(to, *args)
  end
end