Я обновляю кодовую базу с 1,8 до 1,9. Я сталкиваюсь с парой мест в своем коде (только спецификации, не уверен, что это совпадение), где есть проблемы с блоками, у которых нет переменной. Задание им фиктивной переменной решает проблему. Вот пример:
На фабрике заводских девушек это работает под 1.8:
Factory.define :thing do |t|
t.price { 1 - 0.01*rand(10) }
end
Менее 1,9, rand(10)
возвращает nil
. Очень странно. Я ломал голову над тем, почему внутри квартала будет другая среда. Дело в том, что rand
даже не из стандартной библиотеки - это из основного языка! Так что на самом деле не существует способа, чтобы окружающая среда имела значение.
Потом я вспомнил, что некоторые другие места в моих спецификациях ломались из-за блоков без переменных, поэтому по какой-то причине я бросил туда один, и вот, это сработало.
Factory.define :thing do |t|
t.price { |dummy| 1 - 0.01*rand(10) }
end
Что здесь происходит?