Skip to content

Instantly share code, notes, and snippets.

@justincampbell
Created May 1, 2014 18:20
Show Gist options
  • Save justincampbell/11458092 to your computer and use it in GitHub Desktop.
Save justincampbell/11458092 to your computer and use it in GitHub Desktop.
class Thing
def foo(first, bar: 123)
__callee__ # => :foo
__dir__ # => "/private/var/folders/gz/5xvm5fkx79bdr3bnbchj68980000gn/T/seeing_is_believing_temp_dir20140501-76590-1yme1ex"
__id__ # => 70335328646640
__method__ # => :foo
binding # => #<Binding:0x007ff0708ee7d0>
caller # => ["/var/folders/gz/5xvm5fkx79bdr3bnbchj68980000gn/T/seeing_is_believing_temp_dir20140501-76590-1yme1ex/program.rb:29:in `<main>'"]
caller_locations # => ["/var/folders/gz/5xvm5fkx79bdr3bnbchj68980000gn/T/seeing_is_believing_temp_dir20140501-76590-1yme1ex/program.rb:29:in `<main>'"]
local_variables # => [:first, :bar, :args]
object_id # => 70335328646640
method(__method__).arity # => 1
method(__method__).parameters # => [[:req, :first], [:key, :bar]]
method(__method__).name # => :foo
method(__method__).name == __method__ # => true
method(__method__).owner # => Thing
method(__method__).receiver # => #<Thing:0x007ff0708eebe0>
method(__method__).receiver == self # => true
method(__method__).source_location # => ["/var/folders/gz/5xvm5fkx79bdr3bnbchj68980000gn/T/seeing_is_believing_temp_dir20140501-76590-1yme1ex/program.rb", 2]
args = (local_variables - [:args]).inject({}) { |hash, name|
hash[name] = instance_eval(name.to_s); hash
}
args # => {:first=>1, :bar=>123}
end
end
Thing.new.foo 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment