繁体   English   中英

我应该在rails应用程序中将自己的“模块”放在哪里?

[英]Where should I place my own “module” within rails application?

我的rails应用程序中的某些功能看起来更好,就好像它是一个单独的“模块”,应该通过require访问。 例如,假设它是计算斐波纳契数的函数。

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

我应该把它放在哪里?

放置可重用代码的地方就在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

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

编辑:在史蒂夫的评论之后,删除了关于不得不要求文件的一点。 另外,从我的一些代码中删除了一对夫妇:P

RoR项目中有一个lib目录,非常适合这个目的 - 我在那里以“库”的形式放置了常见的代码。 从将ActiveRecord类扩展到可重用的实用程序方法的任何东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM