1
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

この一口はレーキタスクの中にあります。rakeタスクを実行すると、次のようにコンソールウィンドウがリアルタイムで更新されます。

キーワード。

キーワード..。

キーワード.....見つかりません

何が起こっているのか正確にはわかりません#%dか?ドットの印刷を複数回行うにはどうすればよいですか?

4

1 に答える 1

7

ドットは、の4行目(または任意の行)で印刷されていませんrank_forsearch.each_responseそれらは、数行前に渡されたブロックによって印刷されています。

では#%d#は単なるa#であり、%dは「ここで整数値を補間する」ことを意味するC風のフォーマットコードです。

于 2012-04-28T21:58:36.370 に答える