例如:
require 'net/http'
uri = URI('http://example.com/some_path?query=string')
Net::HTTP.start(uri.host, uri.port) do |http|
request = Net::HTTP::Get.new uri
response = http.request request # Net::HTTPResponse object
end
摆脱Net::HTTP
的正确/擦除方法是什么?即HTTP::Get.new()
或Get.new()
答案 0 :(得分:17)
如果您想缩短它们,可以只导入该命名空间:
Net::HTTP.start(...)
include Net
# HTTP.start(...)
当你积极进口时要小心,因为如果你被带走,它可能会引起你班上的冲突。
另一种方法是创建别名:
HTTP = Net::HTTP
Get = Net::HTTP::Get
“正确”的方法就是把它拼出来,不要太过于慌张。典型的Ruby程序会将这种低级行为隐藏在抽象层之下,因此它很少有大问题。
答案 1 :(得分:5)
我希望这个例子能澄清事情。
module Foo
def foo
"foo"
end
end
class Bar
include Foo
def bar
"bar"
end
end
Bar.new.foo # foo
Bar.new.bar # bar
class Baz
extend Foo
self.def baz
"baz"
end
end
Baz.foo # foo
Baz.baz # baz
确保在使用导入或扩展时知道自己在做什么。您最终可能会覆盖一个您可能不想覆盖的方法。
答案 2 :(得分:2)
require 'net/http'
uri = URI('http://example.com/some_path?query=string')
httpns = Net::HTTP
def get(uri)
httpns::Get.new uri
end
http.start(uri.host, uri.port) do |http|
request = get uri
response = http.request request # Net::HTTPResponse object
end
在你班上。