Разница между Rails 2.2 и 2.3.5? ActionMailer.Utils - PullRequest
0 голосов
/ 23 февраля 2010

Я бы подумал, что это разница в Ruby, но я использую ту же самую версию Ruby 1.8.7. Это связано с этим постом (чтобы ответить «зачем тебе это?»). Этот код работает в 2.2.2

Loading development environment (Rails 2.2.2)
>> module ActionMailer
>> Utils.normalize_new_lines("blah")
>> end

но в 2.3.5 не получается

Loading development environment (Rails 2.3.5)
>> module ActionMailer
>> Utils.normalize_new_lines("blah")
>> end
NoMethodError: undefined method `normalize_new_lines' for ActionMailer::Utils:Module
from (irb):2

Что нового в 2.3.5, что это не получится? Метод есть в 2.3.5, так что это работает

Loading development environment (Rails 2.3.5)
>> include ActionMailer
>> include Utils
>> normalize_new_lines("blah")

Я понимаю, что это, вероятно, важное отличие Rails.

1 Ответ

3 голосов
/ 23 февраля 2010

Похоже, код изменился с версия 2.2 на версия 2.3.5

старый:

module ActionMailer
  module Utils #:nodoc:
    def normalize_new_lines(text)
      text.to_s.gsub(/\r\n?/, "\n")
    end
    module_function :normalize_new_lines
  end
end

новый:

module ActionMailer
  module Utils #:nodoc:
    def normalize_new_lines(text)
      text.to_s.gsub(/\r\n?/, "\n")
    end
  end
end

Полагаю, вы могли бы восстановить старое поведение, вызвав module_function самостоятельно:

$ script/console
Loading development environment (Rails 2.3.5)
>> module ActionMailer
>> module Utils
>> module_function :normalize_new_lines
>> end
>> Utils.normalize_new_lines("blah")
>> end
=> "blah"
>> 

РЕДАКТИРОВАТЬ : Или еще лучше, просто включите модуль (для Simone )

>> include ActionMailer::Utils

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...