1

「generate_random_string」、「generate_random_user_agent」など、さまざまなライブラリから呼び出される静的メソッドを定義する最もエレガントな方法はどれですか?

ベストプラクティスは何ですか?

4

1 に答える 1

2

私が見たベスト プラクティスには次のようなものがあります。

  • それらを入れmodule/lib/
  • アプリケーション コードの残りの部分にmixinとして含めます。
  • 独自の rspec (または使用するテスト ツール) を使用して完全にテストされていることを確認してください。

ある時点でそれらを独自の 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 に答える