Ваша ошибка приведения, вероятно, связана с тем, что p1 или p2 не является строковым типом. Интерполяция строк в Ruby поможет вам:
def test(p1, p2)
logger.info "calling test with p1=#{p1} p2=#{p2}"
end
Вот как это работает: ruby вызывает to_s
для любых переменных в строке (обозначается #{}
), которые преобразуют их в строку. У каждого объекта в ruby есть этот метод, поэтому вам не нужно беспокоиться об этом. Надеюсь, это поможет!
ОБНОВЛЕНИЕ: Это был простой, но интересный вопрос, потому что в нем есть нечто большее, чем кажется на первый взгляд (например, трансформаторы). То, как Ruby делает это, фактически открывает двери для функциональности, которую вы можете использовать в своих собственных классах. Я превратил ответ в пост в блоге с примерами кода и более подробным объяснением:
Интерполяция строки Ruby