class RestCore::Defaults

Public Class Methods

members() click to toggle source
# File lib/rest-core/middleware/defaults.rb, line 4
def self.members; [:defaults]; end

Public Instance Methods

method_missing(msg, *args, &block) click to toggle source

the use of singleton_class is making serialization hard! def initialize app, defaults

super
singleton_class.module_eval do
  defaults.each{ |(key, value)|
    define_method(key) do |env|
      if value.respond_to?(:call)
        value.call
      else
        value
      end
    end
  }
end

end

Calls superclass method
# File lib/rest-core/middleware/defaults.rb, line 23
def method_missing msg, *args, &block
  env = args.first
  if env.kind_of?(Hash) && (d = defaults(env)) && d.key?(msg)
    defaults(env)[msg]
  else
    super
  end
end
respond_to_missing?(msg, include_private=false) click to toggle source
Calls superclass method
# File lib/rest-core/middleware/defaults.rb, line 32
def respond_to_missing? msg, include_private=false
  # since psych would call respond_to? before setting up
  # instance variables when restoring ruby objects, we might
  # be accessing undefined ivars in that case even all ivars are
  # defined in initialize. we can't avoid this because we can't
  # use singleton_class (otherwise we can't serialize this)
  return super unless instance_variable_defined?(:@defaults)
  if (d = defaults({})) && d.key?(msg)
    true
  else
    super
  end
end