1

定义从不同库调用的静态方法(例如“generate_random_string”、“generate_random_user_agent”)最优雅的方式是什么?

最佳实践是什么?

4

1 回答 1

2

我见过的最佳实践包括:

  • 把它们放在module一个/lib/
  • 将它们作为mixins包含在您的应用程序代码的其余部分中。
  • 确保使用他们自己的 rspecs(或您使用的任何测试工具)对它们进行彻底测试。

计划它们,就好像您可能在某个时候想要将它们分离到自己的 gem 中,或者可能在某个时候将它们作为服务提供。这并不意味着从一开始就将它们设计为单独的服务,但一定要确保它们不依赖于应用程序中的任何其他代码。

一些基本代码可能类似于:

module App::Services

  def generate_random_string
    #  ...
  end   
  def generate_random_user_agent
    #  ...
  end   
end

然后在您的模型或控制器代码(或任何地方)中,您可以像这样包含它们:

class MyModelClass < ActiveRecord::Base
  include App::Services

  def do_something_here
    foo = random_string
    # whatever...
  end

  def random_string
    generate_random_string
  end

end

请注意,我将调用隔离generate_random_string在它自己的方法中,因此它可以在模型类中使用,但可能很容易被其他方法切换出来。(这可能比您想要的多一步。)

于 2012-05-13T20:23:27.057 回答