Как правильно установить Ruby? - PullRequest
7 голосов
/ 10 мая 2011

Я пытаюсь установить строку в классе Net в стандартной библиотеке. Я создал файл с именем patches.rb в папке lib проекта и добавил это

module Net
  class HTTP < Protocol
    module HTTPHeader
      def initialize_http_header(initheader)
        @header = {}
        return unless initheader
        initheader.each do |key, value|
          @header[key.downcase] = [value.strip] rescue ""
        end
      end
    end
  end
end

Но это не работает. Я делаю это правильно? (Это точно соответствует иерархии наследования.)

Редактировать: часть проблемы была в том, что мне пришлось поместить файл в папку инициализаторов. Но все еще вижу ту же ошибку.

1 Ответ

10 голосов
/ 11 мая 2011

Поскольку вещи в каталоге lib/ загружаются только по требованию, вы можете добиться большего успеха, помещая такие патчи в config/initializers/, где они автоматически загружаются после инициализации стека.также сверните определение расширений к чему-то вроде этого:

module Net::HTTP::HTTPHeader
  # ... (redefined methods) ...
end
...