2010-08-13 3 views
1

Я хотел бы знать, где положить код исправления обезьяны, как показано ниже в моем приложении rails, который откроет существующие классы и добавит или переопределит новые функции. Я хочу, чтобы этот код был доступен для всех экземпляров как можно скорее. Является ли автозагрузка правильным способом для этого и помещением вызова в environment.rb?Где разместить расширения ruby ​​object

class Class 
    def attr_initializer(*attributes) 
    attr_reader *attributes 
    class_eval <<-RUBY 
     def initialize(#{attributes.join(', ')}) 
     #{attributes.map{ |attribute| "@#{attribute}" }.join(', ')} = #{attributes.join(', ')} 
     end 
    RUBY 
    end 
end 

ответ

2

Если вы используете рельсы 2.3.x то стандартное место, чтобы поместить их в пределах файла в директории конфигурации/инициализаторов. Rails загрузит эти файлы в начале процесса загрузки.

+0

Спасибо, а как насчет при запуске тестов, нужно ли добавить код в test_helper для инициализации этого кода? – dagda1

+0

Эти инициализаторы будут запускаться при загрузке тестового набора. Файлы в config/initialiers запускаются для всех сред –

Смежные вопросы