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

P S*_*ved 8 ruby-on-rails

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

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

我应该把它放在哪里?

Ste*_*ham 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
Run Code Online (Sandbox Code Playgroud)