例如,我想创建一个current_server_host
方法,该方法返回应用程序当前正在运行的当前主机。
lib/utility.rb:
module Utility
def current_server_host
request.env['HTTP_HOST']
end
end
如何使其在整个项目范围内可用,我不需要包含任何内容,但可以通过Utility.current_server_host
调用?
如何使其特定于需要调用include
的类(模型/控制器/视图)?
请回答 RoR 3.2+。
谢谢!
若要使实用工具方法可用作另一个类中的类方法,请使用 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
如果要为类的实例提供实用工具方法,请使用包括:
class Widget
include Utility
end
widget = Widget.new
widget.current_server_host