2009-12-07 34 views
8

我的rails应用程序中的一些功能看起来更好,好像它是一个单独的“模块”,应该通过require来访问它。例如,假设它是计算斐波那契数的函数。我应该在轨道应用程序中放置自己的“模块”?

该功能独立于Rails应用程序,可以在其他项目中重用,因此不应将其存储在应用程序控制器和模型附近,我想。但由于我不打算将它分解为单独的项目,因此将其放置到vendor文件夹似乎不是正确的事情。

我应该把它放在哪里呢?

回答

6

放置可重复使用的代码的位置在lib目录中。但是您不需要require任何东西,因为lib已经在加载路径中,并且它的内容将在初始化期间加载。

如果您需要扩展现有类,请先定义您的模块,然后将其作为消息发送给您希望扩展的类,例如,

module MyExtensions 
    def self.included base 
    base.instance_eval do 
     def my_new_method 
     … 
     end 
    end 
    end 
end 

ActiveRecord::Base.send :include, MyExtensions 
2

我会经常把东西放在lib,事实证明lib下的任何东西都在加载路径中,根本不需要是require d。

编辑:史蒂夫的评论后,删除了关于必须要求文件的位。此外,除去一对夫妇从我的一些代码,需要:P

+1

您不需要在'lib'中的文件,因为它在加载路径 –

+0

那我不知道。谢谢。 – rfunduk

2

有一个LIB目录回报率的项目,其非常适合用于此目的 - 我把代码共用位在“库”的存在形式。将ActiveRecord类扩展为可重用的实用方法的任何内容。

相关问题