search_logger 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. data/.rspec +1 -0
  2. data/.travis.yml +6 -0
  3. data/Gemfile +3 -0
  4. data/Gemfile.lock +36 -0
  5. data/Guardfile +9 -0
  6. data/README +0 -0
  7. data/Rakefile +1 -0
  8. data/bin/search_logger +12 -0
  9. data/lib/search_logger/csv_exporter.rb +20 -0
  10. data/lib/search_logger/exec.rb +131 -0
  11. data/lib/search_logger/google_parser/result.rb +60 -0
  12. data/lib/search_logger/google_parser.rb +59 -0
  13. data/lib/search_logger/persistence.rb +68 -0
  14. data/lib/search_logger/version.rb +3 -0
  15. data/lib/search_logger/xml_parser.rb +15 -0
  16. data/lib/search_logger.rb +11 -0
  17. data/schema.sql +15 -0
  18. data/search_logger.gemspec +26 -0
  19. data/spec/acceptance/google_parser_acceptance_spec.rb +93 -0
  20. data/spec/acceptance/mysql_to_csv_exportation_acceptance_spec.rb +39 -0
  21. data/spec/acceptance/persistence_acceptance_spec.rb +26 -0
  22. data/spec/acceptance/test_acceptance_spec.rb +61 -0
  23. data/spec/acceptance/xml_parser_acceptance_spec.rb +10 -0
  24. data/spec/spec_helper.rb +11 -0
  25. data/spec/support/file_repository/exported_from_persistence.csv +119 -0
  26. data/spec/support/file_repository/google_result.html +115 -0
  27. data/spec/support/file_repository/google_result_2.html +636 -0
  28. data/spec/support/file_repository/rankabove_test.xml +9 -0
  29. data/spec/support/file_repository/sample_mysql_data.rb +6 -0
  30. data/spec/unit/google_parser/google_parser_result_spec.rb +79 -0
  31. data/spec/unit/google_parser_spec.rb +69 -0
  32. data/spec/unit/persistence_spec.rb +86 -0
  33. data/spec/unit/shell_exec_spec.rb +28 -0
  34. data/spec/unit/xml_parser_spec.rb +22 -0
  35. metadata +152 -0
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <keywords type="array">
3
+ <keyword>seo software</keyword>
4
+ <keyword>ipad</keyword>
5
+ <keyword>muffuletta manhattanization</keyword>
6
+ <keyword>cheap motels</keyword>
7
+ <keyword>שפות תכנות</keyword>
8
+ </keywords>
9
+
@@ -0,0 +1,6 @@
1
+ # encoding: utf-8
2
+ class DummyMysql
3
+ def self.load_data
4
+ [{:id=>726, :searched_keyword=>"amazon", :title=>"This is a title", :url=>"www.github.com", :description=>"First description.", :position=>1, :created_at=>nil}, {:id=>727, :searched_keyword=>"amazon", :title=>"This is the second title", :url=>"www.github.com", :description=>"Second description.", :position=>2, :created_at=>nil}, {:id=>728, :searched_keyword=>"amazon", :title=>"This is the third title", :url=>"www.github.com", :description=>"Third description.", :position=>3, :created_at=>nil}, {:id=>729, :searched_keyword=>"seo software", :title=>"Free SEO Software | The Best PPC & SEO Management Tool -Traffic ...", :url=>"http://www.traffictravis.com/", :description=>"", :position=>1, :created_at=>nil}, {:id=>730, :searched_keyword=>"seo software", :title=>"SEO software - Top 10 ranking guarantee - Search engine ...", :url=>"http://www.ibusinesspromoter.com/seo-tools/top-10-seo-software", :description=>"", :position=>2, :created_at=>nil}, {:id=>731, :searched_keyword=>"seo software", :title=>"SEO Software - Do Your Own Search Engine Optimization | SEO ...", :url=>"http://www.seoscheduler.com/", :description=>"", :position=>3, :created_at=>nil}, {:id=>732, :searched_keyword=>"seo software", :title=>"SEO Software and SEO Tools | Top 10 Rank Guarantee | SEO ...", :url=>"http://www.link-assistant.com/", :description=>"", :position=>4, :created_at=>nil}, {:id=>733, :searched_keyword=>"ipad", :title=>"Apple - iPad 2 - Now with iOS 5 and iCloud.", :url=>"http://www.apple.com/ipad/", :description=>"", :position=>1, :created_at=>nil}, {:id=>734, :searched_keyword=>"ipad", :title=>"Buy iPad 2 Now", :url=>"http://store.apple.com/us/browse/home/shop_ipad/family/ipad", :description=>"", :position=>2, :created_at=>nil}, {:id=>735, :searched_keyword=>"ipad", :title=>"", :url=>"", :description=>"", :position=>3, :created_at=>nil}, {:id=>736, :searched_keyword=>"ipad", :title=>"iPad - Wikipedia, the free encyclopedia", :url=>"http://en.wikipedia.org/wiki/IPad", :description=>"", :position=>4, :created_at=>nil}, {:id=>737, :searched_keyword=>"ipad", :title=>"News for ipad", :url=>"/search?q=ipad&num=2&hl=en&ie=UTF-8&prmd=ivnsr&source=univ&tbm=nws&tbo=u&sa=X&ei=KMMxT4zJCsyisQKgq52UBw&ved=0CEkQqAI", :description=>"", :position=>5, :created_at=>nil}, {:id=>738, :searched_keyword=>"ipad", :title=>"Apple iPad tablet: reviews, news, photos, and videos - CNET.com", :url=>"http://www.cnet.com/apple-ipad/", :description=>"", :position=>6, :created_at=>nil}, {:id=>739, :searched_keyword=>"ipad", :title=>"8 Things That Suck About the iPad", :url=>"http://gizmodo.com/5458382/8-things-that-suck-about-the-ipad", :description=>"", :position=>7, :created_at=>nil}, {:id=>740, :searched_keyword=>"muffuletta manhattanization", :title=>"xml - Ruby doesn't treat hebrew letters well - Stack Overflow", :url=>"http://stackoverflow.com/questions/7332107/ruby-doesnt-treat-hebrew-letters-well", :description=>"", :position=>1, :created_at=>nil}, {:id=>741, :searched_keyword=>"muffuletta manhattanization", :title=>"Ruby doesn't treat hebrew letters well | Ruby on Rails", :url=>"http://rubyonrails.resourcezen.com/ruby-doesn-t-treat-hebrew-letters-well", :description=>"", :position=>2, :created_at=>nil}, {:id=>742, :searched_keyword=>"muffuletta manhattanization", :title=>"Hottest 'hebrew' Answers - Stack Overflow", :url=>"http://stackoverflow.com/tags/hebrew/hot?filter=year", :description=>"", :position=>3, :created_at=>nil}, {:id=>743, :searched_keyword=>"muffuletta manhattanization", :title=>"Hottest 'hebrew' Answers - Facebook Stack Overflow", :url=>"https://facebook.stackoverflow.com/tags/hebrew/hot?filter=year", :description=>"", :position=>4, :created_at=>nil}, {:id=>744, :searched_keyword=>"cheap motels", :title=>"Discount Hotels Motels - Cheap Rooms Online - your key to happy ...", :url=>"http://www.motels.com/", :description=>"", :position=>1, :created_at=>nil}, {:id=>745, :searched_keyword=>"cheap motels", :title=>"Motels Cheap - Discount Motel Rates, Reservation & Guides", :url=>"http://www.motelplanet.com/", :description=>"", :position=>2, :created_at=>nil}, {:id=>746, :searched_keyword=>"cheap motels", :title=>"Hotels, Motels and Inns - Find Cheap Hotels | Travelocity", :url=>"http://www.travelocity.com/Hotels", :description=>"", :position=>3, :created_at=>nil}, {:id=>747, :searched_keyword=>"cheap motels", :title=>"Motel 6 - Find Discount Motels Nationwide & Book Motel Reservations", :url=>"http://www.motel6.com/", :description=>"", :position=>4, :created_at=>nil}, {:id=>748, :searched_keyword=>"שפות תכנות", :title=>"שפת תכנות \u0096 ויקיפדיה‎", :url=>"http://he.wikipedia.org/wiki/%D7%A9%D7%A4%D7%AA_%D7%AA%D7%9B%D7%A0%D7%95%D7%AA", :description=>"", :position=>1, :created_at=>nil}, {:id=>749, :searched_keyword=>"שפות תכנות", :title=>"שפות תכנות \u0096 ויקיפדיה‎", :url=>"http://he.wikipedia.org/wiki/%D7%A9%D7%A4%D7%95%D7%AA_%D7%AA%D7%9B%D7%A0%D7%95%D7%AA", :description=>"", :position=>2, :created_at=>nil}, {:id=>750, :searched_keyword=>"שפות תכנות", :title=>"שפות תכנות‎", :url=>"http://www.underwar.co.il/tag/%D7%A9%D7%A4%D7%95%D7%AA-%D7%AA%D7%9B%D7%A0%D7%95%D7%AA", :description=>"", :position=>3, :created_at=>nil}, {:id=>751, :searched_keyword=>"שפות תכנות", :title=>"פורום שפות תכנות - תפוז פורומים‎", :url=>"http://www.tapuz.co.il/Forums2008/ForumPage.aspx?ForumId=89", :description=>"", :position=>4, :created_at=>nil}, {:id=>752, :searched_keyword=>"seo software", :title=>"Free SEO Software | The Best PPC & SEO Management Tool -Traffic ...", :url=>"http://www.traffictravis.com/", :description=>"", :position=>1, :created_at=>nil}, {:id=>753, :searched_keyword=>"seo software", :title=>"SEO software - Top 10 ranking guarantee - Search engine ...", :url=>"http://www.ibusinesspromoter.com/seo-tools/top-10-seo-software", :description=>"", :position=>2, :created_at=>nil}, {:id=>754, :searched_keyword=>"seo software", :title=>"SEO Software - Do Your Own Search Engine Optimization | SEO ...", :url=>"http://www.seoscheduler.com/", :description=>"", :position=>3, :created_at=>nil}, {:id=>755, :searched_keyword=>"seo software", :title=>"SEO Software and SEO Tools | Top 10 Rank Guarantee | SEO ...", :url=>"http://www.link-assistant.com/", :description=>"", :position=>4, :created_at=>nil}, {:id=>756, :searched_keyword=>"ipad", :title=>"Apple - iPad 2 - Now with iOS 5 and iCloud.", :url=>"http://www.apple.com/ipad/", :description=>"", :position=>1, :created_at=>nil}, {:id=>757, :searched_keyword=>"ipad", :title=>"Buy iPad 2 Now", :url=>"http://store.apple.com/us/browse/home/shop_ipad/family/ipad", :description=>"", :position=>2, :created_at=>nil}, {:id=>758, :searched_keyword=>"ipad", :title=>"", :url=>"", :description=>"", :position=>3, :created_at=>nil}, {:id=>759, :searched_keyword=>"ipad", :title=>"iPad - Wikipedia, the free encyclopedia", :url=>"http://en.wikipedia.org/wiki/IPad", :description=>"", :position=>4, :created_at=>nil}, {:id=>760, :searched_keyword=>"ipad", :title=>"News for ipad", :url=>"/search?q=ipad&num=2&hl=en&ie=UTF-8&prmd=ivnsr&source=univ&tbm=nws&tbo=u&sa=X&ei=UcMxT5_OPKWlsQL8iKiZBw&ved=0CEkQqAI", :description=>"", :position=>5, :created_at=>nil}, {:id=>761, :searched_keyword=>"ipad", :title=>"Apple iPad tablet: reviews, news, photos, and videos - CNET.com", :url=>"http://www.cnet.com/apple-ipad/", :description=>"", :position=>6, :created_at=>nil}, {:id=>762, :searched_keyword=>"ipad", :title=>"8 Things That Suck About the iPad", :url=>"http://gizmodo.com/5458382/8-things-that-suck-about-the-ipad", :description=>"", :position=>7, :created_at=>nil}, {:id=>763, :searched_keyword=>"muffuletta manhattanization", :title=>"xml - Ruby doesn't treat hebrew letters well - Stack Overflow", :url=>"http://stackoverflow.com/questions/7332107/ruby-doesnt-treat-hebrew-letters-well", :description=>"", :position=>1, :created_at=>nil}, {:id=>764, :searched_keyword=>"muffuletta manhattanization", :title=>"Ruby doesn't treat hebrew letters well | Ruby on Rails", :url=>"http://rubyonrails.resourcezen.com/ruby-doesn-t-treat-hebrew-letters-well", :description=>"", :position=>2, :created_at=>nil}, {:id=>765, :searched_keyword=>"muffuletta manhattanization", :title=>"Hottest 'hebrew' Answers - Stack Overflow", :url=>"http://stackoverflow.com/tags/hebrew/hot?filter=year", :description=>"", :position=>3, :created_at=>nil}, {:id=>766, :searched_keyword=>"muffuletta manhattanization", :title=>"Hottest 'hebrew' Answers - Facebook Stack Overflow", :url=>"https://facebook.stackoverflow.com/tags/hebrew/hot?filter=year", :description=>"", :position=>4, :created_at=>nil}, {:id=>767, :searched_keyword=>"cheap motels", :title=>"Discount Hotels Motels - Cheap Rooms Online - your key to happy ...", :url=>"http://www.motels.com/", :description=>"", :position=>1, :created_at=>nil}, {:id=>768, :searched_keyword=>"cheap motels", :title=>"Motels Cheap - Discount Motel Rates, Reservation & Guides", :url=>"http://www.motelplanet.com/", :description=>"", :position=>2, :created_at=>nil}, {:id=>769, :searched_keyword=>"cheap motels", :title=>"Hotels, Motels and Inns - Find Cheap Hotels | Travelocity", :url=>"http://www.travelocity.com/Hotels", :description=>"", :position=>3, :created_at=>nil}, {:id=>770, :searched_keyword=>"cheap motels", :title=>"Motel 6 - Find Discount Motels Nationwide & Book Motel Reservations", :url=>"http://www.motel6.com/", :description=>"", :position=>4, :created_at=>nil}, {:id=>771, :searched_keyword=>"שפות תכנות", :title=>"שפת תכנות \u0096 ויקיפדיה‎", :url=>"http://he.wikipedia.org/wiki/%D7%A9%D7%A4%D7%AA_%D7%AA%D7%9B%D7%A0%D7%95%D7%AA", :description=>"", :position=>1, :created_at=>nil}, {:id=>772, :searched_keyword=>"שפות תכנות", :title=>"שפות תכנות \u0096 ויקיפדיה‎", :url=>"http://he.wikipedia.org/wiki/%D7%A9%D7%A4%D7%95%D7%AA_%D7%AA%D7%9B%D7%A0%D7%95%D7%AA", :description=>"", :position=>2, :created_at=>nil}, {:id=>773, :searched_keyword=>"שפות תכנות", :title=>"שפות תכנות‎", :url=>"http://www.underwar.co.il/tag/%D7%A9%D7%A4%D7%95%D7%AA-%D7%AA%D7%9B%D7%A0%D7%95%D7%AA", :description=>"", :position=>3, :created_at=>nil}, {:id=>774, :searched_keyword=>"שפות תכנות", :title=>"פורום שפות תכנות - תפוז פורומים‎", :url=>"http://www.tapuz.co.il/Forums2008/ForumPage.aspx?ForumId=89", :description=>"", :position=>4, :created_at=>nil}, {:id=>775, :searched_keyword=>"seo software", :title=>"Free SEO Software | The Best PPC & SEO Management Tool -Traffic ...", :url=>"http://www.traffictravis.com/", :description=>"", :position=>1, :created_at=>nil}, {:id=>776, :searched_keyword=>"seo software", :title=>"SEO software - Top 10 ranking guarantee - Search engine ...", :url=>"http://www.ibusinesspromoter.com/seo-tools/top-10-seo-software", :description=>"", :position=>2, :created_at=>nil}, {:id=>777, :searched_keyword=>"seo software", :title=>"SEO Software - Do Your Own Search Engine Optimization | SEO ...", :url=>"http://www.seoscheduler.com/", :description=>"", :position=>3, :created_at=>nil}, {:id=>778, :searched_keyword=>"seo software", :title=>"SEO Software and SEO Tools | Top 10 Rank Guarantee | SEO ...", :url=>"http://www.link-assistant.com/", :description=>"", :position=>4, :created_at=>nil}, {:id=>779, :searched_keyword=>"ipad", :title=>"Apple - iPad 2 - Now with iOS 5 and iCloud.", :url=>"http://www.apple.com/ipad/", :description=>"", :position=>1, :created_at=>nil}, {:id=>780, :searched_keyword=>"ipad", :title=>"Buy iPad 2 Now", :url=>"http://store.apple.com/us/browse/home/shop_ipad/family/ipad", :description=>"", :position=>2, :created_at=>nil}, {:id=>781, :searched_keyword=>"ipad", :title=>"", :url=>"", :description=>"", :position=>3, :created_at=>nil}, {:id=>782, :searched_keyword=>"ipad", :title=>"iPad - Wikipedia, the free encyclopedia", :url=>"http://en.wikipedia.org/wiki/IPad", :description=>"", :position=>4, :created_at=>nil}, {:id=>783, :searched_keyword=>"ipad", :title=>"News for ipad", :url=>"/search?q=ipad&num=2&hl=en&ie=UTF-8&prmd=ivnsr&source=univ&tbm=nws&tbo=u&sa=X&ei=esMxT7CRM6aksQLn49HeBg&ved=0CEkQqAI", :description=>"", :position=>5, :created_at=>nil}, {:id=>784, :searched_keyword=>"ipad", :title=>"Apple iPad tablet: reviews, news, photos, and videos - CNET.com", :url=>"http://www.cnet.com/apple-ipad/", :description=>"", :position=>6, :created_at=>nil}, {:id=>785, :searched_keyword=>"ipad", :title=>"8 Things That Suck About the iPad", :url=>"http://gizmodo.com/5458382/8-things-that-suck-about-the-ipad", :description=>"", :position=>7, :created_at=>nil}, {:id=>786, :searched_keyword=>"muffuletta manhattanization", :title=>"xml - Ruby doesn't treat hebrew letters well - Stack Overflow", :url=>"http://stackoverflow.com/questions/7332107/ruby-doesnt-treat-hebrew-letters-well", :description=>"", :position=>1, :created_at=>nil}, {:id=>787, :searched_keyword=>"muffuletta manhattanization", :title=>"Ruby doesn't treat hebrew letters well | Ruby on Rails", :url=>"http://rubyonrails.resourcezen.com/ruby-doesn-t-treat-hebrew-letters-well", :description=>"", :position=>2, :created_at=>nil}, {:id=>788, :searched_keyword=>"muffuletta manhattanization", :title=>"Hottest 'hebrew' Answers - Stack Overflow", :url=>"http://stackoverflow.com/tags/hebrew/hot?filter=year", :description=>"", :position=>3, :created_at=>nil}, {:id=>789, :searched_keyword=>"muffuletta manhattanization", :title=>"Hottest 'hebrew' Answers - Facebook Stack Overflow", :url=>"https://facebook.stackoverflow.com/tags/hebrew/hot?filter=year", :description=>"", :position=>4, :created_at=>nil}, {:id=>790, :searched_keyword=>"cheap motels", :title=>"Discount Hotels Motels - Cheap Rooms Online - your key to happy ...", :url=>"http://www.motels.com/", :description=>"", :position=>1, :created_at=>nil}, {:id=>791, :searched_keyword=>"cheap motels", :title=>"Motels Cheap - Discount Motel Rates, Reservation & Guides", :url=>"http://www.motelplanet.com/", :description=>"", :position=>2, :created_at=>nil}, {:id=>792, :searched_keyword=>"cheap motels", :title=>"Hotels, Motels and Inns - Find Cheap Hotels | Travelocity", :url=>"http://www.travelocity.com/Hotels", :description=>"", :position=>3, :created_at=>nil}, {:id=>793, :searched_keyword=>"cheap motels", :title=>"Motel 6 - Find Discount Motels Nationwide & Book Motel Reservations", :url=>"http://www.motel6.com/", :description=>"", :position=>4, :created_at=>nil}, {:id=>794, :searched_keyword=>"שפות תכנות", :title=>"שפת תכנות \u0096 ויקיפדיה‎", :url=>"http://he.wikipedia.org/wiki/%D7%A9%D7%A4%D7%AA_%D7%AA%D7%9B%D7%A0%D7%95%D7%AA", :description=>"", :position=>1, :created_at=>nil}, {:id=>795, :searched_keyword=>"שפות תכנות", :title=>"שפות תכנות \u0096 ויקיפדיה‎", :url=>"http://he.wikipedia.org/wiki/%D7%A9%D7%A4%D7%95%D7%AA_%D7%AA%D7%9B%D7%A0%D7%95%D7%AA", :description=>"", :position=>2, :created_at=>nil}, {:id=>796, :searched_keyword=>"שפות תכנות", :title=>"שפות תכנות‎", :url=>"http://www.underwar.co.il/tag/%D7%A9%D7%A4%D7%95%D7%AA-%D7%AA%D7%9B%D7%A0%D7%95%D7%AA", :description=>"", :position=>3, :created_at=>nil}, {:id=>797, :searched_keyword=>"שפות תכנות", :title=>"פורום שפות תכנות - תפוז פורומים‎", :url=>"http://www.tapuz.co.il/Forums2008/ForumPage.aspx?ForumId=89", :description=>"", :position=>4, :created_at=>nil}, {:id=>798, :searched_keyword=>"seo software", :title=>"Free SEO Software | The Best PPC & SEO Management Tool -Traffic ...", :url=>"http://www.traffictravis.com/", :description=>"", :position=>1, :created_at=>nil}, {:id=>799, :searched_keyword=>"seo software", :title=>"SEO software - Top 10 ranking guarantee - Search engine ...", :url=>"http://www.ibusinesspromoter.com/seo-tools/top-10-seo-software", :description=>"", :position=>2, :created_at=>nil}, {:id=>800, :searched_keyword=>"seo software", :title=>"SEO Software - Do Your Own Search Engine Optimization | SEO ...", :url=>"http://www.seoscheduler.com/", :description=>"", :position=>3, :created_at=>nil}, {:id=>801, :searched_keyword=>"seo software", :title=>"SEO Software and SEO Tools | Top 10 Rank Guarantee | SEO ...", :url=>"http://www.link-assistant.com/", :description=>"", :position=>4, :created_at=>nil}, {:id=>802, :searched_keyword=>"ipad", :title=>"Apple - iPad 2 - Now with iOS 5 and iCloud.", :url=>"http://www.apple.com/ipad/", :description=>"", :position=>1, :created_at=>nil}, {:id=>803, :searched_keyword=>"ipad", :title=>"Buy iPad 2 Now", :url=>"http://store.apple.com/us/browse/home/shop_ipad/family/ipad", :description=>"", :position=>2, :created_at=>nil}, {:id=>804, :searched_keyword=>"ipad", :title=>"", :url=>"", :description=>"", :position=>3, :created_at=>nil}, {:id=>805, :searched_keyword=>"ipad", :title=>"iPad - Wikipedia, the free encyclopedia", :url=>"http://en.wikipedia.org/wiki/IPad", :description=>"", :position=>4, :created_at=>nil}, {:id=>806, :searched_keyword=>"ipad", :title=>"News for ipad", :url=>"/search?q=ipad&num=2&hl=en&ie=UTF-8&prmd=ivnsr&source=univ&tbm=nws&tbo=u&sa=X&ei=4sMxT4vGGOXjsQLUtriXBw&ved=0CEkQqAI", :description=>"", :position=>5, :created_at=>nil}, {:id=>807, :searched_keyword=>"ipad", :title=>"Apple iPad tablet: reviews, news, photos, and videos - CNET.com", :url=>"http://www.cnet.com/apple-ipad/", :description=>"", :position=>6, :created_at=>nil}, {:id=>808, :searched_keyword=>"ipad", :title=>"8 Things That Suck About the iPad", :url=>"http://gizmodo.com/5458382/8-things-that-suck-about-the-ipad", :description=>"", :position=>7, :created_at=>nil}, {:id=>809, :searched_keyword=>"muffuletta manhattanization", :title=>"xml - Ruby doesn't treat hebrew letters well - Stack Overflow", :url=>"http://stackoverflow.com/questions/7332107/ruby-doesnt-treat-hebrew-letters-well", :description=>"", :position=>1, :created_at=>nil}, {:id=>810, :searched_keyword=>"muffuletta manhattanization", :title=>"Ruby doesn't treat hebrew letters well | Ruby on Rails", :url=>"http://rubyonrails.resourcezen.com/ruby-doesn-t-treat-hebrew-letters-well", :description=>"", :position=>2, :created_at=>nil}, {:id=>811, :searched_keyword=>"muffuletta manhattanization", :title=>"Hottest 'hebrew' Answers - Stack Overflow", :url=>"http://stackoverflow.com/tags/hebrew/hot?filter=year", :description=>"", :position=>3, :created_at=>nil}, {:id=>812, :searched_keyword=>"muffuletta manhattanization", :title=>"Hottest 'hebrew' Answers - Facebook Stack Overflow", :url=>"https://facebook.stackoverflow.com/tags/hebrew/hot?filter=year", :description=>"", :position=>4, :created_at=>nil}, {:id=>813, :searched_keyword=>"cheap motels", :title=>"Discount Hotels Motels - Cheap Rooms Online - your key to happy ...", :url=>"http://www.motels.com/", :description=>"", :position=>1, :created_at=>nil}, {:id=>814, :searched_keyword=>"cheap motels", :title=>"Motels Cheap - Discount Motel Rates, Reservation & Guides", :url=>"http://www.motelplanet.com/", :description=>"", :position=>2, :created_at=>nil}, {:id=>815, :searched_keyword=>"cheap motels", :title=>"Hotels, Motels and Inns - Find Cheap Hotels | Travelocity", :url=>"http://www.travelocity.com/Hotels", :description=>"", :position=>3, :created_at=>nil}, {:id=>816, :searched_keyword=>"cheap motels", :title=>"Motel 6 - Find Discount Motels Nationwide & Book Motel Reservations", :url=>"http://www.motel6.com/", :description=>"", :position=>4, :created_at=>nil}, {:id=>817, :searched_keyword=>"שפות תכנות", :title=>"שפת תכנות \u0096 ויקיפדיה‎", :url=>"http://he.wikipedia.org/wiki/%D7%A9%D7%A4%D7%AA_%D7%AA%D7%9B%D7%A0%D7%95%D7%AA", :description=>"", :position=>1, :created_at=>nil}, {:id=>818, :searched_keyword=>"שפות תכנות", :title=>"שפות תכנות \u0096 ויקיפדיה‎", :url=>"http://he.wikipedia.org/wiki/%D7%A9%D7%A4%D7%95%D7%AA_%D7%AA%D7%9B%D7%A0%D7%95%D7%AA", :description=>"", :position=>2, :created_at=>nil}, {:id=>819, :searched_keyword=>"שפות תכנות", :title=>"שפות תכנות‎", :url=>"http://www.underwar.co.il/tag/%D7%A9%D7%A4%D7%95%D7%AA-%D7%AA%D7%9B%D7%A0%D7%95%D7%AA", :description=>"", :position=>3, :created_at=>nil}, {:id=>820, :searched_keyword=>"שפות תכנות", :title=>"פורום שפות תכנות - תפוז פורומים‎", :url=>"http://www.tapuz.co.il/Forums2008/ForumPage.aspx?ForumId=89", :description=>"", :position=>4, :created_at=>nil}, {:id=>821, :searched_keyword=>"seo software", :title=>"Free SEO Software | The Best PPC & SEO Management Tool -Traffic ...", :url=>"http://www.traffictravis.com/", :description=>"", :position=>1, :created_at=>nil}, {:id=>822, :searched_keyword=>"seo software", :title=>"SEO software - Top 10 ranking guarantee - Search engine ...", :url=>"http://www.ibusinesspromoter.com/seo-tools/top-10-seo-software", :description=>"", :position=>2, :created_at=>nil}, {:id=>823, :searched_keyword=>"seo software", :title=>"SEO Software - Do Your Own Search Engine Optimization | SEO ...", :url=>"http://www.seoscheduler.com/", :description=>"", :position=>3, :created_at=>nil}, {:id=>824, :searched_keyword=>"seo software", :title=>"SEO Software and SEO Tools | Top 10 Rank Guarantee | SEO ...", :url=>"http://www.link-assistant.com/", :description=>"", :position=>4, :created_at=>nil}, {:id=>825, :searched_keyword=>"ipad", :title=>"Apple - iPad 2 - Now with iOS 5 and iCloud.", :url=>"http://www.apple.com/ipad/", :description=>"", :position=>1, :created_at=>nil}, {:id=>826, :searched_keyword=>"ipad", :title=>"Buy iPad 2 Now", :url=>"http://store.apple.com/us/browse/home/shop_ipad/family/ipad", :description=>"", :position=>2, :created_at=>nil}, {:id=>827, :searched_keyword=>"ipad", :title=>"", :url=>"", :description=>"", :position=>3, :created_at=>nil}, {:id=>828, :searched_keyword=>"ipad", :title=>"iPad - Wikipedia, the free encyclopedia", :url=>"http://en.wikipedia.org/wiki/IPad", :description=>"", :position=>4, :created_at=>nil}, {:id=>829, :searched_keyword=>"ipad", :title=>"News for ipad", :url=>"/search?q=ipad&num=2&hl=en&ie=UTF-8&prmd=ivnsr&source=univ&tbm=nws&tbo=u&sa=X&ei=8ckxT-62LuOesQLo7_mhBw&ved=0CEkQqAI", :description=>"", :position=>5, :created_at=>nil}, {:id=>830, :searched_keyword=>"ipad", :title=>"Apple iPad tablet: reviews, news, photos, and videos - CNET.com", :url=>"http://www.cnet.com/apple-ipad/", :description=>"", :position=>6, :created_at=>nil}, {:id=>831, :searched_keyword=>"ipad", :title=>"8 Things That Suck About the iPad", :url=>"http://gizmodo.com/5458382/8-things-that-suck-about-the-ipad", :description=>"", :position=>7, :created_at=>nil}, {:id=>832, :searched_keyword=>"muffuletta manhattanization", :title=>"xml - Ruby doesn't treat hebrew letters well - Stack Overflow", :url=>"http://stackoverflow.com/questions/7332107/ruby-doesnt-treat-hebrew-letters-well", :description=>"", :position=>1, :created_at=>nil}, {:id=>833, :searched_keyword=>"muffuletta manhattanization", :title=>"Ruby doesn't treat hebrew letters well | Ruby on Rails", :url=>"http://rubyonrails.resourcezen.com/ruby-doesn-t-treat-hebrew-letters-well", :description=>"", :position=>2, :created_at=>nil}, {:id=>834, :searched_keyword=>"muffuletta manhattanization", :title=>"Hottest 'hebrew' Answers - Stack Overflow", :url=>"http://stackoverflow.com/tags/hebrew/hot?filter=year", :description=>"", :position=>3, :created_at=>nil}, {:id=>835, :searched_keyword=>"muffuletta manhattanization", :title=>"Hottest 'hebrew' Answers - Facebook Stack Overflow", :url=>"https://facebook.stackoverflow.com/tags/hebrew/hot?filter=year", :description=>"", :position=>4, :created_at=>nil}, {:id=>836, :searched_keyword=>"cheap motels", :title=>"Discount Hotels Motels - Cheap Rooms Online - your key to happy ...", :url=>"http://www.motels.com/", :description=>"", :position=>1, :created_at=>nil}, {:id=>837, :searched_keyword=>"cheap motels", :title=>"Motels Cheap - Discount Motel Rates, Reservation & Guides", :url=>"http://www.motelplanet.com/", :description=>"", :position=>2, :created_at=>nil}, {:id=>838, :searched_keyword=>"cheap motels", :title=>"Hotels, Motels and Inns - Find Cheap Hotels | Travelocity", :url=>"http://www.travelocity.com/Hotels", :description=>"", :position=>3, :created_at=>nil}, {:id=>839, :searched_keyword=>"cheap motels", :title=>"Motel 6 - Find Discount Motels Nationwide & Book Motel Reservations", :url=>"http://www.motel6.com/", :description=>"", :position=>4, :created_at=>nil}, {:id=>840, :searched_keyword=>"שפות תכנות", :title=>"שפת תכנות \u0096 ויקיפדיה‎", :url=>"http://he.wikipedia.org/wiki/%D7%A9%D7%A4%D7%AA_%D7%AA%D7%9B%D7%A0%D7%95%D7%AA", :description=>"", :position=>1, :created_at=>nil}, {:id=>841, :searched_keyword=>"שפות תכנות", :title=>"שפות תכנות \u0096 ויקיפדיה‎", :url=>"http://he.wikipedia.org/wiki/%D7%A9%D7%A4%D7%95%D7%AA_%D7%AA%D7%9B%D7%A0%D7%95%D7%AA", :description=>"", :position=>2, :created_at=>nil}, {:id=>842, :searched_keyword=>"שפות תכנות", :title=>"שפות תכנות‎", :url=>"http://www.underwar.co.il/tag/%D7%A9%D7%A4%D7%95%D7%AA-%D7%AA%D7%9B%D7%A0%D7%95%D7%AA", :description=>"", :position=>3, :created_at=>nil}, {:id=>843, :searched_keyword=>"שפות תכנות", :title=>"פורום שפות תכנות - תפוז פורומים‎", :url=>"http://www.tapuz.co.il/Forums2008/ForumPage.aspx?ForumId=89", :description=>"", :position=>4, :created_at=>nil}]
5
+ end
6
+ end
@@ -0,0 +1,79 @@
1
+ require "spec_helper"
2
+
3
+ describe SearchLogger::GoogleParser::Result do
4
+ let(:result_double) { File.open('spec/support/file_repository/google_result_2.html').read }
5
+
6
+ describe "parsing a single result", wip: true do
7
+ before do
8
+ @node = Nokogiri::HTML.parse(result_double).css('li.g').first
9
+ end
10
+
11
+ subject { SearchLogger::GoogleParser::Result.new(@node, 10, 'amazon').parse_normal_result }
12
+
13
+ its(:title) { should == "Xovi: mehr als ein SEO Tool - online Marketing (SEO, SEM, Affiliate ..." }
14
+ its(:url) { should == "http://www.xovi.de/" }
15
+ its(:description) { should == "Setzen Sie unsere SEO Software f?r Ihr Online Marketing Budget intelligent und erfolgreich ein. Verlassen Sie sich nicht auf Ihr Bauchgef?hl oder Ihre Erfahrung ..." }
16
+ its(:position) { should == 10 }
17
+ its(:searched_keyword) { should == 'amazon' }
18
+ end
19
+
20
+ describe "#parse" do
21
+ context "normal result" do
22
+ before do
23
+ @node = Nokogiri::HTML.parse(result_double).css('li.g').first
24
+ end
25
+
26
+ subject { SearchLogger::GoogleParser::Result.new(@node, 2, 'amazon').parse }
27
+
28
+ its(:title) { should == "Amazon.com: Online Shopping for Electronics, Apparel, Computers ..." }
29
+ its(:url) { should == "http://www.amazon.com/" }
30
+ its(:description) { should == "Online retailer of books, movies, music and games along with electronics, toys, apparel, sports, tools, groceries and general home and garden items. Region 1 ..." }
31
+ its(:position) { should == 2 }
32
+ its(:searched_keyword) { should == 'amazon' }
33
+ end
34
+
35
+ context "newsbox" do
36
+ before do
37
+ @node = Nokogiri::HTML.parse(result_double).css('li#newsbox').first
38
+ end
39
+
40
+ subject { SearchLogger::GoogleParser::Result.new(@node, 6, 'amazon').parse }
41
+
42
+ its(:title) { should == "Amazon fourth quarter profit falls on heavy expenses" }
43
+ its(:url) { should == "http://www.usatoday.com/tech/news/story/2012-01-31/amazon-earnings/52907866/1" }
44
+ its(:description) { should == "By Roger Yu, USA TODAY Despite rising sales, Amazon, the largest Internet retailer, reported a 57% decline in its fourth-quarter profit due to heavy ..." }
45
+ its(:position) { should == 6 }
46
+ its(:searched_keyword) { should == 'amazon' }
47
+ end
48
+ end
49
+
50
+ describe "#to_ary" do
51
+ context "normal result" do
52
+ before do
53
+ @node = Nokogiri::HTML.parse(result_double).css('li.g').first
54
+ end
55
+
56
+ subject { SearchLogger::GoogleParser::Result.new(@node, 2, 'amazon').parse.as_ary }
57
+
58
+ it "has a title" do
59
+ subject[:title].should == "Amazon.com: Online Shopping for Electronics, Apparel, Computers ..."
60
+ end
61
+
62
+ it "has an url" do
63
+ subject[:url].should == "http://www.amazon.com/"
64
+ end
65
+
66
+ it "has a description" do
67
+ subject[:description].should == "Online retailer of books, movies, music and games along with electronics, toys, apparel, sports, tools, groceries and general home and garden items. Region 1 ..."
68
+ end
69
+
70
+ it "has a position" do
71
+ subject[:position].should == 2
72
+ end
73
+
74
+ it "has a keyword" do
75
+ subject[:searched_keyword].should == 'amazon'
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,69 @@
1
+ require "spec_helper"
2
+
3
+ describe "Google parser", wip: true do
4
+ let(:result_double) { File.open('spec/support/file_repository/google_result_2.html').read }
5
+ subject { SearchLogger::GoogleParser.new(result_double) }
6
+
7
+ it "initialization with a double" do
8
+ subject.result.size.should == result_double.size
9
+ end
10
+
11
+ describe "#per_page" do
12
+ it "set how many results per page there should be" do
13
+ subject.per_page(20).num.should == 20
14
+ end
15
+ end
16
+
17
+ describe "#page" do
18
+ subject { SearchLogger::GoogleParser.new }
19
+
20
+ it "set the current page" do
21
+ subject.per_page(5).page(1).position_offset.should == 1
22
+ subject.per_page(5).page(1).start.should == 0
23
+ subject.per_page(5).page(2).position_offset.should == 6
24
+ subject.per_page(5).page(2).start.should == 5
25
+ subject.per_page(5).page(3).position_offset.should == 11
26
+ subject.per_page(5).page(3).start.should == 10
27
+ end
28
+ end
29
+
30
+ describe "#url" do
31
+ subject { SearchLogger::GoogleParser.new }
32
+
33
+ it "creates the correct url" do
34
+ subject.query('amazon website').per_page(5).page(1)
35
+ subject.url.should == "https://www.google.com/search?q=amazon+website&num=5&hl=en&start=0"
36
+ end
37
+
38
+ it "creates the correct url" do
39
+ subject.query('amazon website').per_page(5).page(2)
40
+ subject.url.should == "https://www.google.com/search?q=amazon+website&num=5&hl=en&start=5"
41
+ end
42
+
43
+ it "creates the correct url" do
44
+ subject.query('amazon website').per_page(5).page(3)
45
+ subject.url.should == "https://www.google.com/search?q=amazon+website&num=5&hl=en&start=10"
46
+ end
47
+ end
48
+
49
+ describe "#search" do
50
+ it "calls Result correctly" do
51
+ result_object = double("Result", parse: nil)
52
+ result_object.stub(:new).with(anything, an_instance_of(Fixnum), an_instance_of(String)).and_return(result_object)
53
+ result_object.should_receive(:parse)
54
+ subject.search(result_object)
55
+ end
56
+
57
+ it "is an array" do
58
+ subject.search.should be_kind_of Array
59
+ end
60
+
61
+ it "returns Result object" do
62
+ subject.search.first.should be_kind_of SearchLogger::GoogleParser::Result
63
+ end
64
+
65
+ it "has 100 results" do
66
+ subject.search.size.should == 100
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,86 @@
1
+ require "spec_helper"
2
+
3
+ describe SearchLogger::Persistence do
4
+ let(:data_to_save) {
5
+ [ {searched_keyword: "amazon", title: "This is a title", description: "First description.", url: "www.github.com", position: 1},
6
+ {searched_keyword: "amazon", title: "This is the second title", description: "Second description.", url: "www.github.com", position: 2},
7
+ {searched_keyword: "amazon", title: "This is the third title", description: "Third description.", url: "www.github.com", position: 3}
8
+ ]
9
+ }
10
+
11
+ before do
12
+ @persistence = SearchLogger::Persistence.new
13
+ end
14
+
15
+ describe "#data" do
16
+ it "has the correct value" do
17
+ @persistence.data(data_to_save).data.should == data_to_save
18
+ end
19
+ end
20
+
21
+ describe "#table" do
22
+ it "sets the table to work with" do
23
+ @persistence.table("whatever").table.should == "whatever"
24
+ end
25
+ end
26
+
27
+ describe "#load_data" do
28
+ it "triggers mysql2" do
29
+ @mysql2 = double("mysql2")
30
+ @mysql2.stub_chain(:query, :each)
31
+ @mysql2.should_receive(:query).with(an_instance_of(String))
32
+ @persistence.table('my_table').load_data(@mysql2)
33
+ end
34
+ end
35
+
36
+ describe "#load_to_sql" do
37
+ it "creates the correct sql query" do
38
+ @persistence.table('my_table').load_to_sql.should == "SELECT * FROM my_table"
39
+ end
40
+ end
41
+
42
+ describe "#save" do
43
+ it "triggers mysql2" do
44
+ @mysql2 = double("mysql2")
45
+ @mysql2.should_receive(:query).with(an_instance_of(String))
46
+ @persistence.table('my_table').save(@mysql2)
47
+ end
48
+ end
49
+
50
+ describe "#save_to_sql" do
51
+ it "creates the correct sql query when one record" do
52
+ data = {
53
+ searched_keyword: "amazon",
54
+ title: "This is a title",
55
+ description: "First description.",
56
+ url: "www.github.com",
57
+ position: 1
58
+ }
59
+
60
+ @persistence.data(data).table('my_table').save_to_sql.should ==
61
+ "INSERT INTO my_table (searched_keyword, title, description, url, position) VALUES ('amazon', 'This is a title', 'First description.', 'www.github.com', '1')"
62
+ end
63
+
64
+ it "creates the correct sql query when two records" do
65
+ data = [
66
+ {
67
+ searched_keyword: "amazon",
68
+ title: "This's a title",
69
+ description: "First description.",
70
+ url: "www.github.com",
71
+ position: 1
72
+ },
73
+ {
74
+ searched_keyword: "amazon",
75
+ title: "This is a title",
76
+ description: "First description.",
77
+ url: "www.github.com",
78
+ position: 1
79
+ }
80
+ ]
81
+
82
+ @persistence.data(data).table('my_table').save_to_sql.should ==
83
+ "INSERT INTO my_table (searched_keyword, title, description, url, position) VALUES ('amazon', 'This\\'s a title', 'First description.', 'www.github.com', '1'), ('amazon', 'This is a title', 'First description.', 'www.github.com', '1')"
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,28 @@
1
+ require "spec_helper"
2
+
3
+ describe SearchLogger::Exec, wip: true do
4
+ let(:valid_argv){ [File.expand_path("../../support/file_repository/exported_from_persistence.csv", __FILE__)] }
5
+ let(:invalid_argv){ ["invalid_file/path.rb"] }
6
+
7
+ module Kernel
8
+ def puts(str); nil; end
9
+ end
10
+
11
+ context "initializing with a valid file" do
12
+ subject { SearchLogger::Exec.new(valid_argv) }
13
+
14
+ it "should initialize if an existent file was specified" do
15
+ subject.should be_true
16
+ end
17
+
18
+ it "should initialize if a file was specified" do
19
+ subject.argv.should == valid_argv
20
+ end
21
+ end
22
+
23
+ context "initializing with an invalid file" do
24
+ it "should not initialize" do
25
+ lambda { SearchLogger::Exec.new(invalid_argv) }.should raise_error SystemExit
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,22 @@
1
+ # encoding: utf-8
2
+ require "spec_helper"
3
+
4
+ describe "XML parser" do
5
+ let(:xml_file) { 'spec/support/file_repository/rankabove_test.xml' }
6
+
7
+ subject { @parser = SearchLogger::XmlParser.new(xml_file) }
8
+
9
+ it "#new" do
10
+ subject.file.size.should == File.open(xml_file).size
11
+ end
12
+
13
+ context "#parse" do
14
+ it "without argument" do
15
+ subject.parse.should == ['seo software', 'ipad', 'muffuletta manhattanization', 'cheap motels', 'שפות תכנות']
16
+ end
17
+
18
+ it "with argument" do
19
+ subject.parse('keywords keyword').should == ['seo software', 'ipad', 'muffuletta manhattanization', 'cheap motels', 'שפות תכנות']
20
+ end
21
+ end
22
+ end
metadata ADDED
@@ -0,0 +1,152 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: search_logger
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - kurko
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-02-08 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: &70232194582280 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *70232194582280
25
+ - !ruby/object:Gem::Dependency
26
+ name: guard
27
+ requirement: &70232194596560 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *70232194596560
36
+ - !ruby/object:Gem::Dependency
37
+ name: nokogiri
38
+ requirement: &70232194593460 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70232194593460
47
+ - !ruby/object:Gem::Dependency
48
+ name: httpclient
49
+ requirement: &70232194604540 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *70232194604540
58
+ - !ruby/object:Gem::Dependency
59
+ name: mysql2
60
+ requirement: &70232194602600 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: *70232194602600
69
+ description: This gem read a XML file, searching for each one of the keywords. Then,
70
+ all results are saved into MySQL and later exported to CSV. This is a concept app.
71
+ email:
72
+ - chavedomundo@gmail.com
73
+ executables:
74
+ - search_logger
75
+ extensions: []
76
+ extra_rdoc_files: []
77
+ files:
78
+ - .rspec
79
+ - .travis.yml
80
+ - Gemfile
81
+ - Gemfile.lock
82
+ - Guardfile
83
+ - README
84
+ - Rakefile
85
+ - bin/search_logger
86
+ - lib/search_logger.rb
87
+ - lib/search_logger/csv_exporter.rb
88
+ - lib/search_logger/exec.rb
89
+ - lib/search_logger/google_parser.rb
90
+ - lib/search_logger/google_parser/result.rb
91
+ - lib/search_logger/persistence.rb
92
+ - lib/search_logger/version.rb
93
+ - lib/search_logger/xml_parser.rb
94
+ - schema.sql
95
+ - search_logger.gemspec
96
+ - spec/acceptance/google_parser_acceptance_spec.rb
97
+ - spec/acceptance/mysql_to_csv_exportation_acceptance_spec.rb
98
+ - spec/acceptance/persistence_acceptance_spec.rb
99
+ - spec/acceptance/test_acceptance_spec.rb
100
+ - spec/acceptance/xml_parser_acceptance_spec.rb
101
+ - spec/spec_helper.rb
102
+ - spec/support/file_repository/exported_from_persistence.csv
103
+ - spec/support/file_repository/google_result.html
104
+ - spec/support/file_repository/google_result_2.html
105
+ - spec/support/file_repository/rankabove_test.xml
106
+ - spec/support/file_repository/sample_mysql_data.rb
107
+ - spec/unit/google_parser/google_parser_result_spec.rb
108
+ - spec/unit/google_parser_spec.rb
109
+ - spec/unit/persistence_spec.rb
110
+ - spec/unit/shell_exec_spec.rb
111
+ - spec/unit/xml_parser_spec.rb
112
+ homepage: ''
113
+ licenses: []
114
+ post_install_message:
115
+ rdoc_options: []
116
+ require_paths:
117
+ - lib
118
+ required_ruby_version: !ruby/object:Gem::Requirement
119
+ none: false
120
+ requirements:
121
+ - - ! '>='
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ required_rubygems_version: !ruby/object:Gem::Requirement
125
+ none: false
126
+ requirements:
127
+ - - ! '>='
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ requirements: []
131
+ rubyforge_project: search_logger
132
+ rubygems_version: 1.8.11
133
+ signing_key:
134
+ specification_version: 3
135
+ summary: Searches Google and saves results.
136
+ test_files:
137
+ - spec/acceptance/google_parser_acceptance_spec.rb
138
+ - spec/acceptance/mysql_to_csv_exportation_acceptance_spec.rb
139
+ - spec/acceptance/persistence_acceptance_spec.rb
140
+ - spec/acceptance/test_acceptance_spec.rb
141
+ - spec/acceptance/xml_parser_acceptance_spec.rb
142
+ - spec/spec_helper.rb
143
+ - spec/support/file_repository/exported_from_persistence.csv
144
+ - spec/support/file_repository/google_result.html
145
+ - spec/support/file_repository/google_result_2.html
146
+ - spec/support/file_repository/rankabove_test.xml
147
+ - spec/support/file_repository/sample_mysql_data.rb
148
+ - spec/unit/google_parser/google_parser_result_spec.rb
149
+ - spec/unit/google_parser_spec.rb
150
+ - spec/unit/persistence_spec.rb
151
+ - spec/unit/shell_exec_spec.rb
152
+ - spec/unit/xml_parser_spec.rb