2012-04-28 10 views
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 

この楽しい時間は、レーキの中にあります。レーキタスクが実行されると、リアルタイムでコンソールウィンドウが次のように更新されます。ルビ構文は何を意味しますか?

キーワード。

キーワード...

キーワード.....私は#%dで何が起こっているかについて、正確には明らかではないよ

を見つけていませんか?どのようにドットの印刷を何回も繰り返すのですか?

答えて

7

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

#だけ#あり、%d「は、ここで整数値を補間」を意味C-ISH形式コードです。

+0

私はちょうどそれを自分で見た。その場合%35sは何ですか? – Jake

+2

@Jake%sは文字列を取ることを意味し、35は35文字に右揃えします。 – sepp2k

関連する問題