task('google:rankings' => :environment) do
def find_item uri, query
search = Google::Search::Web.new do |search|
search.query = query
search.size = :large
search.each_response { print '.'; $stdout.flush }
end
search.find { |item| item.uri.downcase.include?(uri.downcase) }
end
def rank_for query, domain
print "%35s " % query
if item = find_item(domain, query)
puts " #%d" % (item.index + 1)
else
puts " Not found"
end
end
Campaign.all.each do |campaign|
campaign.keywords.each do |keyword|
rank_for keyword.set, Domain.find(campaign.domain_id).name if (keyword.set)
end
end
end
Run Code Online (Sandbox Code Playgroud)
这个小窍门是一个耙子任务.当rake任务运行时,控制台窗口会实时更新,如下所示:
关键字.
关键字......
关键字.....未找到
我不清楚发生了什么事#%d
?如何使点的打印多次发生?
点不是由第4行(或任何行)打印的rank_for
.它们是由search.each_response
早先传递给几行的块打印出来的.
在#%d
,#
它只是一个#
而且%d
是一个C-ish格式代码,意思是"在这里插入一个整数值".