Так довольно просто, но я не могу найти ответ.
Скажем, у меня есть объект, выгруженный в YAML как таковой:
page:
page_url: http://www.stackoverflow.com/
created_at: "2011-08-10T11:00:19Z"
website_id: 1
updated_at: "2011-08-10T11:00:19Z"
id: 1
Hash
Я знаю из дампа, что это хеш с использованием .class и что заголовок страницы. Я могу ссылаться на любой из ключей, как вы это обычно делаете. Как, черт возьми, вы получили название или название хэша? и то же самое для массивов?
результаты object.methods
Hash
presence
zip
find_index
invert
silence_stderr
enum_slice
deep_merge
load
gem
require_dependency
extract!
minmax
encode64
rehash
debugger
methods
send
assert_valid_keys
replace
values_at
empty?
group_by
diff
taint
instance_variable_defined?
shift
stringify_keys
take
to_param
to_yaml
key?
find_all
update
silence_stream
as_json
singleton_class
keys
require
many?
min_by
each_cons
entries
to_hash
singleton_methods
instance_eval
require_library_or_gem
to_json
first
require_or_load
nil?
b64encode
take_while
select
deep_merge!
with_options
extractable_options?
exclude?
max_by
enum_cons
deep_symbolize_keys
protected_methods
instance_exec
display
sort
store
returning
tainted?
method
delete_if
include?
stringify_keys!
untaint
instance_of?
merge!
symbolize_keys
drop
equal?
suppress
reject
merge
minmax_by
sum
to_set
yaml_initialize
hash
private_methods
all?
sort_by
default_proc
to_query
silence_warnings
`
require_association
kind_of?
freeze
acts_like?
drop_while
eql?
indexes
html_safe?
collect
id
reverse_merge
slice
reject!
grep
each_value
instance_values
with_warnings
any?
public_methods
breakpoint
symbolize_keys!
object_id
is_a?
has_key?
cycle
indices
to_options
except!
map
member?
tap
type
fetch
with_indifferent_access
each_with_index
decode64
count
each_key
instance_variable_names
enable_warnings
one?
instance_variables
try
__id__
frozen?
suppress_warnings
clear
load_dependency
to_enum
to_yaml_properties
has_value?
to_a
respond_to?
each_with_object
each
taguri
inject
slice!
class
encode_json
reverse_update
length
enum_with_index
instance_variable_get
each_pair
copy_instance_variables_from
none?
taguri=
find
==
__send__
===
enum_for
min
to_options!
extend
value?
to_s
default
index_by
index
size
reduce
blank?
unloadable
to_yaml_style
default=
clone
reverse_each
decode_b
=~
instance_variable_set
detect
values
to_xml
max
each_slice
inspect
[]
class_eval
present?
duplicable?
reverse_merge!
except
partition
delete
[]=
dup
* На ключи и ключи
нельзя ссылаться по какой-либо причине. наблюдать
puts object.keys
возвращает
undefined method `keys' for nil:NilClass
puts object.key
возвращает
undefined method `key' for #<Hash:0x103aeb0b0>
Решение: вы, ребята, будете ненавидеть это. Я исправил проблему, запустив
sudo gem update
Без шуток. Обновил ruby 1.8.7 до 1.8.7 и все. задача решена. Я никогда не делал ничего сумасшедшего с моей установкой ruby, но, похоже, что-то там смешалось с хэшем. или, возможно, это была очень редкая ошибка. Я не могу найти ничего в следе обновления, который вызвал бы это. Спасибо всем, кто помог.