我目前正在制作一个简单的ruby gem,它可以从一个存在的api中获取数据并按需显示它。
require 'net/http'
module SimpleGem
@@api= 'http://api.example.com'
def self.exec
reponse = Net::HTTP.get(URI.parse(@@api))
result = JSON.parse(reponse)
end
end
访问数据的基本方法是
demo = SimpleGem.exec()
演示[:标题]
我想把它作为对象处理,所以我可以访问这样的数据:
demo = SimpleGem.exec()
demo.title
demo.description
感谢
答案 0 :(得分:1)
首先,您需要设计一个具有支持属性/属性的对象。因此,在您的情况下,标题和描述是您的对象SimpleGem的属性。下一步是使用构造函数或访问器(getters / setters)来填充对象。
class SimpleGemObject
#constructor
def initialize(title,description)
@title = title
@description = description
end
#accessor methods
def title=title
@title = title
end
def description=description
@description = description
end
end
这为您提供了一个很好的起点,您可以在ruby here
中阅读更多关于面向对象原则的内容<强>更新强> 无论您采用构造方法还是访问方法,它都取决于您。以下是构造函数方法的示例:
def self.exec
reponse = Net::HTTP.get(URI.parse(@@api))
result = JSON.parse(reponse)
sampleObject = SampleObject.new(result[:title], result[:description])
end
您的self.exec现在将返回SampleObject类型的对象。现在,当您调用demo = Sample.exec时,您将能够根据需要访问标题和描述属性:
demo.title
demo.description
答案 1 :(得分:0)
我现在无法测试,但也许这可以帮助你
# your module
require 'ostruct'
...
def exec
reponse = Net::HTTP.get(URI.parse(@@api))
OpenStruct.new(JSON.parse(reponse))
end