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.
- data/.rspec +1 -0
- data/.travis.yml +6 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +36 -0
- data/Guardfile +9 -0
- data/README +0 -0
- data/Rakefile +1 -0
- data/bin/search_logger +12 -0
- data/lib/search_logger/csv_exporter.rb +20 -0
- data/lib/search_logger/exec.rb +131 -0
- data/lib/search_logger/google_parser/result.rb +60 -0
- data/lib/search_logger/google_parser.rb +59 -0
- data/lib/search_logger/persistence.rb +68 -0
- data/lib/search_logger/version.rb +3 -0
- data/lib/search_logger/xml_parser.rb +15 -0
- data/lib/search_logger.rb +11 -0
- data/schema.sql +15 -0
- data/search_logger.gemspec +26 -0
- data/spec/acceptance/google_parser_acceptance_spec.rb +93 -0
- data/spec/acceptance/mysql_to_csv_exportation_acceptance_spec.rb +39 -0
- data/spec/acceptance/persistence_acceptance_spec.rb +26 -0
- data/spec/acceptance/test_acceptance_spec.rb +61 -0
- data/spec/acceptance/xml_parser_acceptance_spec.rb +10 -0
- data/spec/spec_helper.rb +11 -0
- data/spec/support/file_repository/exported_from_persistence.csv +119 -0
- data/spec/support/file_repository/google_result.html +115 -0
- data/spec/support/file_repository/google_result_2.html +636 -0
- data/spec/support/file_repository/rankabove_test.xml +9 -0
- data/spec/support/file_repository/sample_mysql_data.rb +6 -0
- data/spec/unit/google_parser/google_parser_result_spec.rb +79 -0
- data/spec/unit/google_parser_spec.rb +69 -0
- data/spec/unit/persistence_spec.rb +86 -0
- data/spec/unit/shell_exec_spec.rb +28 -0
- data/spec/unit/xml_parser_spec.rb +22 -0
- metadata +152 -0
@@ -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
|