Я не вижу назначения в вашем коде, поэтому этот код не будет выдавать эту ошибку.Если вы беспокоитесь о том, что некоторые из них равны нулю, подумайте о том, чтобы преобразовать код в методы, поскольку, когда они равны нулю, вы получите хороший след стека:
def a
# wherever you get a from
end
def b
a.b
end
# ...
def d(key)
c.d["key"]
end
def e(key)
d.e["key"]
end
e("foo") = "value"
Да, это излишне, поэтомулучший способ - убедиться, что вы не возвращаете nils там, где вы этого не ожидаете, но если вам нужна хорошая трассировка стека из журналов, это поможет.