search_logger 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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