0

current_server_hostたとえば、アプリケーションが現在実行されている現在のホストを返すメソッド を作成したいと思います。

lib / Utility.rb:

module Utility
  def current_server_host
    request.env['HTTP_HOST']
  end
end

何も含める必要がなく、経由で電話をかけることができるプロジェクト全体で利用できるようにするにはどうすればよい Utility.current_server_hostですか?

呼び出す必要のあるクラス(モデル/コントローラー/ビュー)に固有にする方法を教えてくださいinclude

RoR3.2以降について回答してください。

ありがとう!

4

1 に答える 1

1

ユーティリティメソッドを別のクラスのクラスメソッドとして使用できるようにするには、extendを使用します。

class Widget
  extend Utility
end

# provides
Widget.current_server_host

rubyモジュールは、クラスを拡張できるのと同じ方法でそれ自体を拡張できます。

module Utility
  extend self

  def current_server_host
    request.env['HTTP_HOST']
  end
end

# provides
Utility.current_server_host

クラスのインスタンスにUtilityメソッドを提供する場合は、次を使用します。

class Widget
  include Utility
end

widget = Widget.new
widget.current_server_host
于 2012-09-22T23:05:13.300 に答える