Sha256: cbe0dd8a1292f3340766907693e4c55477063e5f7dafb7433e2b680125db1ee6
Contents?: true
Size: 795 Bytes
Versions: 3
Compression:
Stored size: 795 Bytes
Contents
module Pickle module Injector def self.inject(session_class, options = {}) target = options[:into] || ActionController::Integration::Session session_method = options[:name] || session_class.name.underscore.gsub('/','_') session_options = options[:options] || {} # create a session object on demand (in target) target.send(:define_method, session_method) do instance_variable_get("@#{session_method}") || instance_variable_set("@#{session_method}", session_class.new(session_options)) end # delegate session methods to the session object (in target) delegate_methods = session_class.public_instance_methods - Object.instance_methods target.delegate *(delegate_methods + [{:to => session_method}]) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
ianwhite-pickle-0.1.2 | lib/pickle/injector.rb |
ianwhite-pickle-0.1.3 | lib/pickle/injector.rb |
ianwhite-pickle-0.1.4 | lib/pickle/injector.rb |