Я пытаюсь смоделировать обработку OpenID в моих тестах на огурец. Для этого я использую следующий метод:
def set_result_of_openid_authentication(result_type, profile_data = nil)
ActionController::Base.class_eval "
def begin_open_id_authentication(identity_url, options = {})
yield [OpenIdAuthentication::Result.new('#{result_type}'.to_sym), identity_url, #{profile_data}]
end
"
end
# example usage
set_result_of_openid_authentication :successful, 'email' => 'dhofstet@example.com'
Это прекрасно работает с Ruby 1.9.2, но с Ruby 1.8.7 я получаю следующую ошибку компиляции:
(eval):5:in `set_result_of_openid_authentication': compile error
(eval):3: syntax error, unexpected tIVAR, expecting kDO or '{' or '('
...identity_url, emaildhofstet@example.com]
По какой-то причине хеш не сохраняется ... Есть ли обходной путь, чтобы он работал с обоими Рубинами?
Спасибо.