何时考虑在Rails应用程序中创建自己的Ruby模块?

lor*_*orz 20 ruby module ruby-on-rails

使用Ruby模块,您可以将一组可能在一个地方使用的方法聚集在一起,然后将它们包含在一个类中,就好像您已经在该类中编写它们一样.

rails应用程序中的Ruby模块有哪些实际用途?

如果有人能提到他们实际使用自己的模块的例子,我会很感激,所以我对我应该考虑创建它们的情况有所了解.谢谢.

klo*_*ner 18

1)任何时候我要复制(或基本上复制)一段代码:"哦,我可以剪切/粘贴到另一个控制器......"

2)任何时候我编写的代码很明显将来会被重用.

3)具有特定目的的实体大小的代码,其目的与控制器/模型的主要目的完全不同.这与(2)有些相关,但有时代码不会被重用,但模块有助于组织.


mwi*_*ams 12

您可以将它们放在/ lib目录中,它们将加载您的Rails项目.

例如,您可以查看我的旧项目的repo:Rails项目的lib目录

例如,我有以下模块:

google_charts.rb

Module GCharts
  class GoogleCharts
    def some_method

    end
  end
end
Run Code Online (Sandbox Code Playgroud)

在我的Rails应用程序的任何地方,我都可以访问这些方法.

因此,如果我要从控制器访问它,我只会这样做:

require 'google_charts'

GCharts::GoogleCharts.some_method
Run Code Online (Sandbox Code Playgroud)

  • 也许这是一个暂时的事情,或者只是如此微不足道的事情,我们不想经历使它成为一个完整的插件的麻烦.那时候,这真的只是一个决不会以某种方式真正重要的.作为开发者以及什么会让你开心,这是你的偏好问题. (2认同)

Tob*_*ede 7

我们使用的模块功能与ActiveRecord模型无关,并且未被抽象为插件或gem.

我们的生产代码库中最近的一个示例是用于与Campaign Monitor集成以进行电子邮件列表管理的库.系统的核心使用我们的用户模型,但是与extenrl服务的实际交互是通过位于/ lib的模块抽象的.