我创建了一个服务类,唯一的工作就是在LinkedIn上获取该人的姓名。我使用Mechanize
来实现这一目标。
class LinkedinProfile
attr_reader :page
def initialize(url)
@page = url
end
def run
agent = Mechanize.new
agent.log = Mechanize.new 'mech.log'
agent.user_agent_alias = 'Mac Safari'
linkedin_page = agent.get(@page)
first_name ||= linkedin_page.at(".fn").text.split(" ", 2)[0].strip if linkedin_page.at(".fn")
end
end
我的假设是ruby返回最后一行,但在这种情况下我错了。我在运行
后试图找到一种方法来检索它liprofile = LinkedinProfile.new('url')
基本上类似于
liprofile.first_name
是首选,因此我需要一种新方法,但我不确定如何实现这一目标。
答案 0 :(得分:1)
你应该这样打电话:
liprofile = LinkedinProfile.new('url').run
您永远不会运行实际提取配置文件信息的方法,只会初始化类。
此外,没有必要,但服务方法通常使用call
(而不是run
方法)实现一致性。
答案 1 :(得分:0)
你需要做的事情
如下所示
class LinkedinProfile
attr_reader :page, :first_name
def initialize(url)
@page = url
@first_name = nil
self.run
end
def run
agent = Mechanize.new
agent.log = Mechanize.new 'mech.log'
agent.user_agent_alias = 'Mac Safari'
linkedin_page = agent.get(@page)
first_name ||= linkedin_page.at(".fn").text.split(" ", 2)[0].strip if linkedin_page.at(".fn")
end
end