例如,我想创建一个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 +。
谢谢!
答案 0 :(得分:1)
要将Utility方法作为另一个类中的类方法使用,请使用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方法,请使用include:
class Widget
include Utility
end
widget = Widget.new
widget.current_server_host