2010-08-13 55 views
1

我想知道在我的Rails應用程序將打開現有的類,並添加或重寫新功能的地方像下面的猴子補丁代碼。我希望此代碼儘快可用於所有實例。是否自動加載這樣做的正確方法並將調用放入environment.rb?在哪裏把紅寶石對象擴展

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

如果您使用的是rails 2.3.x,那麼放置它們的標準位置是在config/initializers目錄中的文件中。 Rails會在啓動過程中儘早加載這些文件。

+0

謝謝,如何在運行測試時,我是否需要在test_helper中添加任何代碼來初始化此代碼? – dagda1 2010-08-13 08:41:11

+0

這些初始化器將在測試套件加載時運行。 config/initialiers中的文件針對所有環境運行 – 2010-08-13 08:54:16