9. /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12/lib/active_support/
core_ext/hash/keys.rb:25:in `symbolize_keys': You blew it, dumbass (RuntimeError)
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activerecord-3.2.12/lib/
active_record/connection_adapters/abstract/connection_specification.rb:45:in `resolve_hash_connection'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activerecord-3.2.12/lib/
active_record/connection_adapters/abstract/connection_specification.rb:41:in `resolve_string_connection'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activerecord-3.2.12/lib/
active_record/connection_adapters/abstract/connection_specification.rb:25:in `spec'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activerecord-3.2.12/lib/
active_record/connection_adapters/abstract/connection_specification.rb:130:in `establish_connection'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activerecord-3.2.12/lib/
active_record/railtie.rb:82:in `block (2 levels) in <class:Railtie>'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12/lib/
active_support/lazy_load_hooks.rb:36:in `instance_eval'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12/lib/
active_support/lazy_load_hooks.rb:36:in `execute_hook'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12/lib/
active_support/lazy_load_hooks.rb:26:in `block in on_load'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12/lib/
active_support/lazy_load_hooks.rb:25:in `each'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12/lib/
active_support/lazy_load_hooks.rb:25:in `on_load'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activerecord-3.2.12/lib/
active_record/railtie.rb:74:in `block in <class:Railtie>'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
initializable.rb:30:in `instance_exec'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
initializable.rb:30:in `run'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
initializable.rb:55:in `block in run_initializers'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
initializable.rb:54:in `each'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
initializable.rb:54:in `run_initializers'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
application.rb:136:in `initialize!'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
railtie/configurable.rb:30:in `method_missing'
from /Volumes/Valinor/Users/evan/Development/Ruby/apps/tracks/config/environment.rb:5:in `<top
(required)>'
from /Volumes/Valinor/Users/evan/Development/Ruby/apps/tracks/spec/spec_helper.rb:3:in `require'
from /Volumes/Valinor/Users/evan/Development/Ruby/apps/tracks/spec/spec_helper.rb:3:in `<top
Friday, August 9, 13
10. /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12/lib/active_support/
core_ext/hash/keys.rb:25:in `symbolize_keys': You blew it, dumbass (RuntimeError)
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activerecord-3.2.12/lib/
active_record/connection_adapters/abstract/connection_specification.rb:45:in `resolve_hash_connection'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activerecord-3.2.12/lib/
active_record/connection_adapters/abstract/connection_specification.rb:41:in `resolve_string_connection'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activerecord-3.2.12/lib/
active_record/connection_adapters/abstract/connection_specification.rb:25:in `spec'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activerecord-3.2.12/lib/
active_record/connection_adapters/abstract/connection_specification.rb:130:in `establish_connection'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activerecord-3.2.12/lib/
active_record/railtie.rb:82:in `block (2 levels) in <class:Railtie>'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12/lib/
active_support/lazy_load_hooks.rb:36:in `instance_eval'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12/lib/
active_support/lazy_load_hooks.rb:36:in `execute_hook'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12/lib/
active_support/lazy_load_hooks.rb:26:in `block in on_load'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12/lib/
active_support/lazy_load_hooks.rb:25:in `each'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12/lib/
active_support/lazy_load_hooks.rb:25:in `on_load'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activerecord-3.2.12/lib/
active_record/railtie.rb:74:in `block in <class:Railtie>'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
initializable.rb:30:in `instance_exec'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
initializable.rb:30:in `run'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
initializable.rb:55:in `block in run_initializers'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
initializable.rb:54:in `each'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
initializable.rb:54:in `run_initializers'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
application.rb:136:in `initialize!'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
railtie/configurable.rb:30:in `method_missing'
from /Volumes/Valinor/Users/evan/Development/Ruby/apps/tracks/config/environment.rb:5:in `<top
(required)>'
from /Volumes/Valinor/Users/evan/Development/Ruby/apps/tracks/spec/spec_helper.rb:3:in `require'
from /Volumes/Valinor/Users/evan/Development/Ruby/apps/tracks/spec/spec_helper.rb:3:in `<top
Friday, August 9, 13
11. /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12/lib/active_support/
core_ext/hash/keys.rb:25:in `symbolize_keys': You blew it, dumbass (RuntimeError)
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activerecord-3.2.12/lib/
active_record/connection_adapters/abstract/connection_specification.rb:45:in `resolve_hash_connection'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activerecord-3.2.12/lib/
active_record/connection_adapters/abstract/connection_specification.rb:41:in `resolve_string_connection'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activerecord-3.2.12/lib/
active_record/connection_adapters/abstract/connection_specification.rb:25:in `spec'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activerecord-3.2.12/lib/
active_record/connection_adapters/abstract/connection_specification.rb:130:in `establish_connection'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activerecord-3.2.12/lib/
active_record/railtie.rb:82:in `block (2 levels) in <class:Railtie>'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12/lib/
active_support/lazy_load_hooks.rb:36:in `instance_eval'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12/lib/
active_support/lazy_load_hooks.rb:36:in `execute_hook'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12/lib/
active_support/lazy_load_hooks.rb:26:in `block in on_load'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12/lib/
active_support/lazy_load_hooks.rb:25:in `each'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12/lib/
active_support/lazy_load_hooks.rb:25:in `on_load'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activerecord-3.2.12/lib/
active_record/railtie.rb:74:in `block in <class:Railtie>'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
initializable.rb:30:in `instance_exec'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
initializable.rb:30:in `run'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
initializable.rb:55:in `block in run_initializers'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
initializable.rb:54:in `each'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
initializable.rb:54:in `run_initializers'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
application.rb:136:in `initialize!'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
railtie/configurable.rb:30:in `method_missing'
from /Volumes/Valinor/Users/evan/Development/Ruby/apps/tracks/config/environment.rb:5:in `<top
(required)>'
from /Volumes/Valinor/Users/evan/Development/Ruby/apps/tracks/spec/spec_helper.rb:3:in `require'
from /Volumes/Valinor/Users/evan/Development/Ruby/apps/tracks/spec/spec_helper.rb:3:in `<top
Friday, August 9, 13
12. /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12/lib/active_support/
core_ext/hash/keys.rb:25:in `symbolize_keys': You blew it, dumbass (RuntimeError)
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activerecord-3.2.12/lib/
active_record/connection_adapters/abstract/connection_specification.rb:45:in `resolve_hash_connection'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activerecord-3.2.12/lib/
active_record/connection_adapters/abstract/connection_specification.rb:41:in `resolve_string_connection'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activerecord-3.2.12/lib/
active_record/connection_adapters/abstract/connection_specification.rb:25:in `spec'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activerecord-3.2.12/lib/
active_record/connection_adapters/abstract/connection_specification.rb:130:in `establish_connection'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activerecord-3.2.12/lib/
active_record/railtie.rb:82:in `block (2 levels) in <class:Railtie>'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12/lib/
active_support/lazy_load_hooks.rb:36:in `instance_eval'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12/lib/
active_support/lazy_load_hooks.rb:36:in `execute_hook'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12/lib/
active_support/lazy_load_hooks.rb:26:in `block in on_load'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12/lib/
active_support/lazy_load_hooks.rb:25:in `each'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12/lib/
active_support/lazy_load_hooks.rb:25:in `on_load'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activerecord-3.2.12/lib/
active_record/railtie.rb:74:in `block in <class:Railtie>'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
initializable.rb:30:in `instance_exec'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
initializable.rb:30:in `run'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
initializable.rb:55:in `block in run_initializers'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
initializable.rb:54:in `each'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
initializable.rb:54:in `run_initializers'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
application.rb:136:in `initialize!'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/railties-3.2.12/lib/rails/
railtie/configurable.rb:30:in `method_missing'
from /Volumes/Valinor/Users/evan/Development/Ruby/apps/tracks/config/environment.rb:5:in `<top
(required)>'
from /Volumes/Valinor/Users/evan/Development/Ruby/apps/tracks/spec/spec_helper.rb:3:in `require'
from /Volumes/Valinor/Users/evan/Development/Ruby/apps/tracks/spec/spec_helper.rb:3:in `<top
Friday, August 9, 13
22. JUST OPEN THAT FILE
Don’t be intimidated ... it’s all just Ruby
Friday, August 9, 13
23. JUST OPEN THAT FILE
~/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12/lib/active_support/
core_ext/hash/keys.rb:25:in `symbolize_keys': You blew it, dumbass (RuntimeError)
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/
activerecord-3.2.12/lib/active_record/connection_adapters/abstract/
connection_specification.rb:45:in `resolve_hash_connection'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/
activerecord-3.2.12/lib/active_record/connection_adapters/abstract/
connection_specification.rb:41:in `resolve_string_connection'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/
Don’t be intimidated ... it’s all just Ruby
Friday, August 9, 13
24. JUST OPEN THAT FILE
~/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12/lib/active_support/
core_ext/hash/keys.rb:25:in `symbolize_keys': You blew it, dumbass (RuntimeError)
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/
activerecord-3.2.12/lib/active_record/connection_adapters/abstract/
connection_specification.rb:45:in `resolve_hash_connection'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/
activerecord-3.2.12/lib/active_record/connection_adapters/abstract/
connection_specification.rb:41:in `resolve_string_connection'
from /Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/
$ vim ~evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/activesupport-3.2.12
Don’t be intimidated ... it’s all just Ruby
Friday, August 9, 13
31. WHAT’S THIS VALUE?
#activesupport-3.2.12/lib/active_support/core_ext/hash
class Hash
# Return a new hash with all keys converted to symbols, as
# long as they respond to +to_sym+.
#
# { 'name' => 'Rob', 'years' => '28' }.symbolize_keys
# #=> { :name => "Rob", :years => "28" }
def symbolize_keys
dup.symbolize_keys!
end
alias_method :to_options, :symbolize_keys
alias_method :to_options!, :symbolize_keys!
# Validate all keys in a hash match *valid keys, raising
ArgumentError on a mismatch.
# Note that keys are NOT treated indifferently, meaning if you
use strings for keys but assert symbols
Friday, August 9, 13
32. WHAT’S THIS VALUE?
#activesupport-3.2.12/lib/active_support/core_ext/hash
class Hash
# Return a new hash with all keys converted to symbols, as
# long as they respond to +to_sym+.
#
# { 'name' => 'Rob', 'years' => '28' }.symbolize_keys
# #=> { :name => "Rob", :years => "28" }
def symbolize_keys
dup.symbolize_keys!
end
alias_method :to_options, :symbolize_keys
alias_method :to_options!, :symbolize_keys!
# Validate all keys in a hash match *valid keys, raising
ArgumentError on a mismatch.
# Note that keys are NOT treated indifferently, meaning if you
use strings for keys but assert symbols
Friday, August 9, 13
33. WHAT’S THIS VALUE?
#activesupport-3.2.12/lib/active_support/core_ext/hash
class Hash
# Return a new hash with all keys converted to symbols, as
# long as they respond to +to_sym+.
#
# { 'name' => 'Rob', 'years' => '28' }.symbolize_keys
# #=> { :name => "Rob", :years => "28" }
def symbolize_keys
p self
dup.symbolize_keys!
end
alias_method :to_options, :symbolize_keys
alias_method :to_options!, :symbolize_keys!
# Validate all keys in a hash match *valid keys, raising
ArgumentError on a mismatch.
# Note that keys are NOT treated indifferently, meaning if you
Friday, August 9, 13
35. OUTPUT AND STOP
#activesupport-3.2.12/lib/active_support/core_ext/hash
class Hash
# Return a new hash with all keys converted to symbols, as
# long as they respond to +to_sym+.
#
# { 'name' => 'Rob', 'years' => '28' }.symbolize_keys
# #=> { :name => "Rob", :years => "28" }
def symbolize_keys
raise self # stop running!
dup.symbolize_keys!
end
alias_method :to_options, :symbolize_keys
alias_method :to_options!, :symbolize_keys!
# Validate all keys in a hash match *valid keys, raising
ArgumentError on a mismatch.
# Note that keys are NOT treated indifferently, meaning if you
Friday, August 9, 13
36. ADD A CONDITION
#activesupport-3.2.12/lib/active_support/core_ext/hash
class Hash
# Return a new hash with all keys converted to symbols, as
# long as they respond to +to_sym+.
#
# { 'name' => 'Rob', 'years' => '28' }.symbolize_keys
# #=> { :name => "Rob", :years => "28" }
def symbolize_keys
raise self if <some condition>
dup.symbolize_keys!
end
alias_method :to_options, :symbolize_keys
alias_method :to_options!, :symbolize_keys!
# Validate all keys in a hash match *valid keys, raising
ArgumentError on a mismatch.
# Note that keys are NOT treated indifferently, meaning if you
Friday, August 9, 13
37. KEEP TRACK OF LOCATION
#activesupport-3.2.12/lib/active_support/core_ext/hash
class Hash
# Return a new hash with all keys converted to symbols, as
# long as they respond to +to_sym+.
#
# { 'name' => 'Rob', 'years' => '28' }.symbolize_keys
# #=> { :name => "Rob", :years => "28" }
def symbolize_keys
p __FILE__, __LINE__
dup.symbolize_keys!
end
alias_method :to_options, :symbolize_keys
alias_method :to_options!, :symbolize_keys!
# Validate all keys in a hash match *valid keys, raising
ArgumentError on a mismatch.
# Note that keys are NOT treated indifferently, meaning if you
Friday, August 9, 13
38. LABEL WITH LOCATION
#activesupport-3.2.12/lib/active_support/core_ext/hash
class Hash
# Return a new hash with all keys converted to symbols, as
# long as they respond to +to_sym+.
#
# { 'name' => 'Rob', 'years' => '28' }.symbolize_keys
# #=> { :name => "Rob", :years => "28" }
def symbolize_keys
p “#{__FILE__}:#{__LINE__}” => self
dup.symbolize_keys!
end
alias_method :to_options, :symbolize_keys
alias_method :to_options!, :symbolize_keys!
# Validate all keys in a hash match *valid keys, raising
ArgumentError on a mismatch.
# Note that keys are NOT treated indifferently, meaning if you
Friday, August 9, 13
39. TAG WITH A NAME
#activesupport-3.2.12/lib/active_support/core_ext/hash
class Hash
# Return a new hash with all keys converted to symbols, as
# long as they respond to +to_sym+.
#
# { 'name' => 'Rob', 'years' => '28' }.symbolize_keys
# #=> { :name => "Rob", :years => "28" }
def symbolize_keys
p :broken_hash => self
dup.symbolize_keys!
end
alias_method :to_options, :symbolize_keys
alias_method :to_options!, :symbolize_keys!
# Validate all keys in a hash match *valid keys, raising
ArgumentError on a mismatch.
# Note that keys are NOT treated indifferently, meaning if you
Friday, August 9, 13
40. CLEAN IT UP
#activesupport-3.2.12/lib/active_support/core_ext/hash
class Hash
# Return a new hash with all keys converted to symbols, as
# long as they respond to +to_sym+.
#
# { 'name' => 'Rob', 'years' => '28' }.symbolize_keys
# #=> { :name => "Rob", :years => "28" }
def symbolize_keys
require ‘pp’
pp self
dup.symbolize_keys!
end
alias_method :to_options, :symbolize_keys
alias_method :to_options!, :symbolize_keys!
# Validate all keys in a hash match *valid keys, raising
ArgumentError on a mismatch.
Friday, August 9, 13
43. HOW DID I GET HERE?
#activesupport-3.2.12/lib/active_support/core_ext/hash
class Hash
# Return a new hash with all keys converted to symbols, as
# long as they respond to +to_sym+.
#
# { 'name' => 'Rob', 'years' => '28' }.symbolize_keys
# #=> { :name => "Rob", :years => "28" }
def symbolize_keys
require ‘pp’
pp caller[0..10]
dup.symbolize_keys!
end
alias_method :to_options, :symbolize_keys
alias_method :to_options!, :symbolize_keys!
# Validate all keys in a hash match *valid keys, raising
ArgumentError on a mismatch.
Friday, August 9, 13
44. “DOES THIS FILE LOAD?”
module SomePossiblyIncludedMonkeyPatch
def change_important_class_behavior
# ...
# ...
end
def obscure_some_key_method
# ...
# ...
end
end
Friday, August 9, 13
45. “DOES THIS FILE LOAD?”
raise “Yes, somebody required me”
module SomePossiblyIncludedMonkeyPatch
def change_important_class_behavior
# ...
# ...
end
def obscure_some_key_method
# ...
# ...
end
end
Friday, August 9, 13
55. YOUR GEMFILE
source 'http://rubygems.org'
gem 'rails', '3.2.12'
gem 'rack', '~> 1.4.0'
gem 'rake'
gem "will_paginate"
gem 'devise'
group :development, :test do
gem 'rspec'
gem 'rspec-rails'
gem 'factory_girl_rails'
gem 'debugger'
end
Friday, August 9, 13
56. IN THE CODE
class Hash
# Return a new hash with all keys converted to symbols, as
# long as they respond to +to_sym+.
#
# { 'name' => 'Rob', 'years' => '28' }.symbolize_keys
# #=> { :name => "Rob", :years => "28" }
def symbolize_keys
debugger
dup.symbolize_keys!
end
alias_method :to_options, :symbolize_keys
alias_method :to_options!, :symbolize_keys!
# Validate all keys in a hash match *valid keys, raising
ArgumentError on a mismatch.
# Note that keys are NOT treated indifferently, meaning if you
use strings for keys but assert symbols
Friday, August 9, 13
62. WHO ARE YOU?
(rdb:1) eval dup.class
#activesupport-3.2.12/lib/active_support/core_ext/hash
class Hash
def symbolize_keys
debugger
dup.symbolize_keys!
end
Friday, August 9, 13
63. WHO ARE YOU?
(rdb:1) eval dup.class
Hash
#activesupport-3.2.12/lib/active_support/core_ext/hash
class Hash
def symbolize_keys
debugger
dup.symbolize_keys!
end
Friday, August 9, 13
70. WHO CAN I CALL?
(rdb:1) eval self.methods.grep(/merge/)
Friday, August 9, 13
71. WHO CAN I CALL?
(rdb:1) eval self.methods.grep(/merge/)
[:deep_merge!, :reverse_merge!, :merge!, :merge, :deep_merge,
:reverse_merge, :merge_resultset]
Friday, August 9, 13
73. WHO DO YOU INCLUDE?
(rdb:1) pp dup.class.included_modules
Friday, August 9, 13
74. WHO DO YOU INCLUDE?
(rdb:1) pp dup.class.included_modules
[SimpleCov::HashMergeHelper,
JSON::Ext::Generator::GeneratorMethods::Hash,
Enumerable,
RSpec::Steps::ClassMethods,
JSON::Ext::Generator::GeneratorMethods::Object,
ActiveSupport::Dependencies::Loadable,
PP::ObjectMixin,
Kernel]
Friday, August 9, 13
76. AT THE COMMAND-LINE
-H (show filename)
-n (show line number)
-r (recurse directories)
-i (ignore case -- use carefully)
$ grep -Hnir <pattern> <path>
Friday, August 9, 13
95. WHO DO YOU INCLUDE?
#activesupport-3.2.12/lib/active_support/core_ext/hash
class Hash
# ... snip ...
def symbolize_keys
debugger
dup.symbolize_keys!
end
# ... snip ...
end
Friday, August 9, 13
96. WHO DO YOU INCLUDE?
(rdb:1) pp self.class.included_modules
[SimpleCov::HashMergeHelper,
JSON::Ext::Generator::GeneratorMethods::Hash,
Enumerable,
RSpec::Steps::ClassMethods,
JSON::Ext::Generator::GeneratorMethods::Object,
ActiveSupport::Dependencies::Loadable,
PP::ObjectMixin,
Kernel]
Friday, August 9, 13
97. WHO DEFINED THAT METHOD?
(rdb:1) eval self.method(:merge_resultset).owner
Friday, August 9, 13
98. WHO DEFINED THAT METHOD?
(rdb:1) eval self.method(:merge_resultset).owner
SimpleCov::HashMergeHelper
Friday, August 9, 13
100. BUT DEFINED WHERE?
(rdb:1) pp self.method(:merge_resultset).source_location
["~/evan/.rvm/gems/ruby-1.9.3-p327-fast@tracks/gems/
simplecov-0.5.4/lib/simplecov/merge_helpers.rb", 25]
Friday, August 9, 13
102. EVEN WORKS ON
DYNAMIC METHODS!
#/spec/controllers/invoices_controller_spec.rb
require 'spec_helper'
describe InvoicesController do
debugger
describe "as an admin" do
before(:each) do
authenticate(:admin)
Friday, August 9, 13
103. EVEN WORKS ON
DYNAMIC METHODS!
(rdb:1) eval method(:example).source_location
Friday, August 9, 13
104. EVEN WORKS ON
DYNAMIC METHODS!
(rdb:1) eval method(:example).source_location
["/Volumes/Valinor/Users/evan/.rvm/gems/ruby-1.9.3-p327-
fast@tracks/gems/rspec-core-2.13.1/lib/rspec/core/
example_group.rb", 61]
Friday, August 9, 13
105. WHERE TO LOOK NEXT
•Pry (https://github.com/pry/pry)
•API Docs: http://www.ruby-doc.org/core-2.0
• Kernel
• Module
• Method
Friday, August 9, 13