Sha256: 471680c01f9d561a277d8dc05519122f96602fbec4522f1989e38bf39a8a0599

Contents?: true

Size: 1.19 KB

Versions: 28

Compression:

Stored size: 1.19 KB

Contents

require 'rest-core/middleware'

class RestCore::Defaults
  def self.members; [:defaults]; end
  include RestCore::Middleware

  # 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

  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

  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
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
rest-core-3.6.0 lib/rest-core/middleware/defaults.rb
rest-core-3.5.92 lib/rest-core/middleware/defaults.rb
rest-core-3.5.91 lib/rest-core/middleware/defaults.rb
rest-core-3.5.9 lib/rest-core/middleware/defaults.rb
rest-core-3.5.8 lib/rest-core/middleware/defaults.rb
rest-core-3.5.7 lib/rest-core/middleware/defaults.rb
rest-core-3.5.6 lib/rest-core/middleware/defaults.rb
rest-core-3.5.5 lib/rest-core/middleware/defaults.rb
rest-core-3.5.4 lib/rest-core/middleware/defaults.rb
rest-core-3.5.3 lib/rest-core/middleware/defaults.rb
rest-core-3.5.2 lib/rest-core/middleware/defaults.rb
rest-core-3.5.1 lib/rest-core/middleware/defaults.rb
rest-core-3.5.0 lib/rest-core/middleware/defaults.rb
rest-core-3.4.1 lib/rest-core/middleware/defaults.rb
rest-core-3.4.0 lib/rest-core/middleware/defaults.rb
rest-core-3.3.3 lib/rest-core/middleware/defaults.rb
rest-core-3.3.2 lib/rest-core/middleware/defaults.rb
rest-core-3.3.1 lib/rest-core/middleware/defaults.rb
rest-core-3.3.0 lib/rest-core/middleware/defaults.rb
rest-core-3.2.0 lib/rest-core/middleware/defaults.rb