calagator 0.0.1.pre1

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 (384) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +23 -0
  3. data/README.md +75 -0
  4. data/Rakefile +12 -0
  5. data/app/assets/images/confused-alligator-sm.png +0 -0
  6. data/app/assets/images/disk.png +0 -0
  7. data/app/assets/images/edit.png +0 -0
  8. data/app/assets/images/external_sites/epdx.png +0 -0
  9. data/app/assets/images/external_sites/external.gif +0 -0
  10. data/app/assets/images/external_sites/facebook.png +0 -0
  11. data/app/assets/images/external_sites/foursquare.png +0 -0
  12. data/app/assets/images/external_sites/gowalla.png +0 -0
  13. data/app/assets/images/external_sites/lanyrd.png +0 -0
  14. data/app/assets/images/external_sites/meetup.png +0 -0
  15. data/app/assets/images/external_sites/plancast.png +0 -0
  16. data/app/assets/images/external_sites/shizzow.png +0 -0
  17. data/app/assets/images/external_sites/upcoming.png +0 -0
  18. data/app/assets/images/external_sites/yelp.png +0 -0
  19. data/app/assets/images/feed.png +0 -0
  20. data/app/assets/images/heart.png +0 -0
  21. data/app/assets/images/icon_ical.gif +0 -0
  22. data/app/assets/images/information.png +0 -0
  23. data/app/assets/images/nav_marker.gif +0 -0
  24. data/app/assets/images/nav_marker.png +0 -0
  25. data/app/assets/images/plus.png +0 -0
  26. data/app/assets/images/redx.png +0 -0
  27. data/app/assets/images/site-icon.png +0 -0
  28. data/app/assets/images/spinner.gif +0 -0
  29. data/app/assets/images/star.png +0 -0
  30. data/app/assets/images/subnav_marker.gif +0 -0
  31. data/app/assets/images/subnav_marker.png +0 -0
  32. data/app/assets/images/tag_blue.png +0 -0
  33. data/app/assets/images/tag_icons/angular.png +0 -0
  34. data/app/assets/images/tag_icons/beer.png +0 -0
  35. data/app/assets/images/tag_icons/bitcoin.png +0 -0
  36. data/app/assets/images/tag_icons/free.png +0 -0
  37. data/app/assets/images/tag_icons/golang.png +0 -0
  38. data/app/assets/images/tag_icons/html.png +0 -0
  39. data/app/assets/images/tag_icons/javascript.png +0 -0
  40. data/app/assets/images/tag_icons/linux.png +0 -0
  41. data/app/assets/images/tag_icons/php.png +0 -0
  42. data/app/assets/images/tag_icons/pizza.png +0 -0
  43. data/app/assets/images/tag_icons/python.png +0 -0
  44. data/app/assets/images/tag_icons/rails.png +0 -0
  45. data/app/assets/images/tag_icons/ruby.png +0 -0
  46. data/app/assets/images/tag_icons/sass.png +0 -0
  47. data/app/assets/images/tag_icons/swift.png +0 -0
  48. data/app/assets/images/transmit_blue.png +0 -0
  49. data/app/assets/images/weekday_background.gif +0 -0
  50. data/app/assets/javascripts/calagator.js +18 -0
  51. data/app/assets/javascripts/calagator/forms.js +60 -0
  52. data/app/assets/stylesheets/calagator.scss +8 -0
  53. data/app/assets/stylesheets/calagator/common.scss +14 -0
  54. data/app/assets/stylesheets/calagator/datepicker.scss +177 -0
  55. data/app/assets/stylesheets/calagator/errors.css +110 -0
  56. data/app/assets/stylesheets/calagator/forms.scss +4 -0
  57. data/app/assets/stylesheets/calagator/reset.css +40 -0
  58. data/app/assets/stylesheets/calagator/theme.css +0 -0
  59. data/app/controllers/calagator/admin_controller.rb +27 -0
  60. data/app/controllers/calagator/application_controller.rb +82 -0
  61. data/app/controllers/calagator/events_controller.rb +171 -0
  62. data/app/controllers/calagator/site_controller.rb +35 -0
  63. data/app/controllers/calagator/sources_controller.rb +94 -0
  64. data/app/controllers/calagator/venues_controller.rb +133 -0
  65. data/app/controllers/calagator/versions_controller.rb +20 -0
  66. data/app/helpers/calagator/application_helper.rb +128 -0
  67. data/app/helpers/calagator/events_helper.rb +184 -0
  68. data/app/helpers/calagator/google_event_export_helper.rb +67 -0
  69. data/app/helpers/calagator/mapping_helper.rb +103 -0
  70. data/app/helpers/calagator/sources_helper.rb +10 -0
  71. data/app/helpers/calagator/tags_helper.rb +42 -0
  72. data/app/helpers/calagator/time_range_helper.rb +166 -0
  73. data/app/models/calagator/event.rb +246 -0
  74. data/app/models/calagator/event/cloner.rb +39 -0
  75. data/app/models/calagator/event/ical_renderer.rb +155 -0
  76. data/app/models/calagator/event/overview.rb +45 -0
  77. data/app/models/calagator/event/saver.rb +58 -0
  78. data/app/models/calagator/event/search.rb +72 -0
  79. data/app/models/calagator/event/search_engine.rb +28 -0
  80. data/app/models/calagator/event/search_engine/apache_sunspot.rb +106 -0
  81. data/app/models/calagator/event/search_engine/sql.rb +107 -0
  82. data/app/models/calagator/source.rb +115 -0
  83. data/app/models/calagator/source/importer.rb +46 -0
  84. data/app/models/calagator/source/parser.rb +128 -0
  85. data/app/models/calagator/source/parser/facebook.rb +67 -0
  86. data/app/models/calagator/source/parser/hcal.rb +108 -0
  87. data/app/models/calagator/source/parser/http_authentication_required_error.rb +6 -0
  88. data/app/models/calagator/source/parser/ical.rb +186 -0
  89. data/app/models/calagator/source/parser/meetup.rb +72 -0
  90. data/app/models/calagator/source/parser/not_found.rb +9 -0
  91. data/app/models/calagator/source/parser/plancast.rb +59 -0
  92. data/app/models/calagator/venue.rb +161 -0
  93. data/app/models/calagator/venue/geocoder.rb +51 -0
  94. data/app/models/calagator/venue/search.rb +63 -0
  95. data/app/models/calagator/venue/search_engine.rb +24 -0
  96. data/app/models/calagator/venue/search_engine/apache_sunspot.rb +85 -0
  97. data/app/models/calagator/venue/search_engine/sql.rb +68 -0
  98. data/app/models/event/search_engine/base.rb +0 -0
  99. data/app/observers/calagator/cache_observer.rb +37 -0
  100. data/app/views/calagator/admin/events.html.erb +28 -0
  101. data/app/views/calagator/admin/index.html.erb +8 -0
  102. data/app/views/calagator/events/_feed_item.html.erb +62 -0
  103. data/app/views/calagator/events/_form.html.erb +63 -0
  104. data/app/views/calagator/events/_gcal_reminder.html.erb +1 -0
  105. data/app/views/calagator/events/_hcal.html.erb +41 -0
  106. data/app/views/calagator/events/_item.html.erb +120 -0
  107. data/app/views/calagator/events/_list.html.erb +30 -0
  108. data/app/views/calagator/events/_list_item.html.erb +37 -0
  109. data/app/views/calagator/events/_search_section.html.erb +15 -0
  110. data/app/views/calagator/events/_subnav.html.erb +13 -0
  111. data/app/views/calagator/events/_table.html.erb +74 -0
  112. data/app/views/calagator/events/duplicates.html.erb +58 -0
  113. data/app/views/calagator/events/edit.html.erb +3 -0
  114. data/app/views/calagator/events/index.atom.builder +32 -0
  115. data/app/views/calagator/events/index.html.erb +51 -0
  116. data/app/views/calagator/events/index.kml.erb +20 -0
  117. data/app/views/calagator/events/new.html.erb +7 -0
  118. data/app/views/calagator/events/search.html.erb +25 -0
  119. data/app/views/calagator/events/show.html.erb +81 -0
  120. data/app/views/calagator/site/_appropriateness_message.html.erb +15 -0
  121. data/app/views/calagator/site/_description.html.erb +3 -0
  122. data/app/views/calagator/site/about.html.erb +7 -0
  123. data/app/views/calagator/site/defunct.html.erb +15 -0
  124. data/app/views/calagator/site/export.html.erb +4 -0
  125. data/app/views/calagator/site/index.html.erb +40 -0
  126. data/app/views/calagator/site/opensearch.xml.builder +8 -0
  127. data/app/views/calagator/sources/_subnav.html.erb +0 -0
  128. data/app/views/calagator/sources/edit.html.erb +12 -0
  129. data/app/views/calagator/sources/import.html.erb +10 -0
  130. data/app/views/calagator/sources/index.html.erb +22 -0
  131. data/app/views/calagator/sources/new.html.erb +32 -0
  132. data/app/views/calagator/sources/show.html.erb +16 -0
  133. data/app/views/calagator/venues/_form.html.erb +57 -0
  134. data/app/views/calagator/venues/_subnav.html.erb +10 -0
  135. data/app/views/calagator/venues/duplicates.html.erb +65 -0
  136. data/app/views/calagator/venues/edit.html.erb +3 -0
  137. data/app/views/calagator/venues/index.html.erb +93 -0
  138. data/app/views/calagator/venues/index.kml.erb +15 -0
  139. data/app/views/calagator/venues/map.html.erb +4 -0
  140. data/app/views/calagator/venues/new.html.erb +5 -0
  141. data/app/views/calagator/venues/show.html.erb +113 -0
  142. data/app/views/calagator/versions/_chooser.html.erb +28 -0
  143. data/app/views/calagator/versions/_edit_with_chooser.html.erb +16 -0
  144. data/app/views/layouts/calagator/application.html.erb +110 -0
  145. data/config/deploy/local.rb +37 -0
  146. data/config/deploy/lucca.rb +33 -0
  147. data/config/initializers/dates.rb +7 -0
  148. data/config/initializers/formtastic.rb +82 -0
  149. data/config/initializers/geokit.rb +74 -0
  150. data/config/initializers/ics_renderer.rb +6 -0
  151. data/config/initializers/load_tag_model_extensions.rb +3 -0
  152. data/config/initializers/mime_types.rb +9 -0
  153. data/config/initializers/observers.rb +1 -0
  154. data/config/initializers/search_engine.rb +4 -0
  155. data/config/initializers/set_default_url_host.rb +5 -0
  156. data/config/initializers/time_get_zone.rb +8 -0
  157. data/config/locales/en.yml +5 -0
  158. data/config/routes.rb +55 -0
  159. data/config/secrets.yml.blag +75 -0
  160. data/config/sunspot.yml +23 -0
  161. data/db/development.sqlite3 +0 -0
  162. data/db/development.sqlite3.bak +0 -0
  163. data/db/development.sqlite3.old +0 -0
  164. data/db/development~20111112@110950.sqlite3 +0 -0
  165. data/db/migrate/001_create_events.rb +17 -0
  166. data/db/migrate/002_create_venues.rb +17 -0
  167. data/db/migrate/003_create_sources.rb +16 -0
  168. data/db/migrate/004_add_detailed_fields_to_venue.rb +19 -0
  169. data/db/migrate/005_add_end_time_to_events.rb +9 -0
  170. data/db/migrate/006_add_source_id_to_events.rb +9 -0
  171. data/db/migrate/008_add_source_id_to_venues.rb +10 -0
  172. data/db/migrate/009_add_duplicate_of_column_to_venues.rb +9 -0
  173. data/db/migrate/010_add_duplicate_of_column_to_events.rb +9 -0
  174. data/db/migrate/011_change_lat_long_type.rb +12 -0
  175. data/db/migrate/012_add_source_reimport.rb +9 -0
  176. data/db/migrate/013_change_end_time_to_duration.rb +11 -0
  177. data/db/migrate/014_remove_format_type_from_source.rb +9 -0
  178. data/db/migrate/015_create_updates.rb +15 -0
  179. data/db/migrate/016_remove_next_update_from_source.rb +9 -0
  180. data/db/migrate/20080705163959_change_duration_to_end_time.rb +11 -0
  181. data/db/migrate/20080705164959_create_tags_and_taggings.rb +28 -0
  182. data/db/migrate/20081011181519_create_versioned_events.rb +25 -0
  183. data/db/migrate/20081011193124_create_versioned_venues.rb +32 -0
  184. data/db/migrate/20081115190515_add_rrule_to_events.rb +15 -0
  185. data/db/migrate/20090912082129_create_versions.rb +18 -0
  186. data/db/migrate/20110219205156_add_closed_flag_to_venues.rb +9 -0
  187. data/db/migrate/20110220001008_add_wifi_flag_to_venues.rb +9 -0
  188. data/db/migrate/20110220011427_add_access_notes_to_venues.rb +9 -0
  189. data/db/migrate/20110220031117_add_events_count_to_venues.rb +8 -0
  190. data/db/migrate/20110604174521_add_venue_details_to_events.rb +9 -0
  191. data/db/migrate/20110717231316_acts_as_taggable_on_migration.rb +50 -0
  192. data/db/migrate/20120709092821_cleanup.rb +14 -0
  193. data/db/migrate/20120831234448_specify_venues_latitude_and_longitude_precision.rb +11 -0
  194. data/db/migrate/20150206085809_remove_updates.rb +13 -0
  195. data/db/migrate/20150207231355_add_locked_status_to_events.rb +5 -0
  196. data/db/production.sqlite3 +0 -0
  197. data/db/schema.rb +102 -0
  198. data/db/seeds.rb +16 -0
  199. data/db/test.sqlite3 +0 -0
  200. data/db/test2.sqlite3 +0 -0
  201. data/lib/calagator.rb +30 -0
  202. data/lib/calagator/blacklist_validator.rb +69 -0
  203. data/lib/calagator/decode_html_entities_hack.rb +33 -0
  204. data/lib/calagator/duplicate_checking.rb +133 -0
  205. data/lib/calagator/duplicate_checking/controller_actions.rb +38 -0
  206. data/lib/calagator/duplicate_checking/duplicate_finder.rb +83 -0
  207. data/lib/calagator/duplicate_checking/duplicate_squasher.rb +74 -0
  208. data/lib/calagator/engine.rb +30 -0
  209. data/lib/calagator/strip_whitespace.rb +19 -0
  210. data/lib/calagator/tag_model_extensions.rb +104 -0
  211. data/lib/calagator/url_prefixer.rb +9 -0
  212. data/lib/calagator/version.rb +3 -0
  213. data/lib/generators/calagator/install_generator.rb +39 -0
  214. data/lib/generators/calagator/templates/config/calagator.rb +26 -0
  215. data/lib/generators/calagator/templates/config/secrets.yml.sample +83 -0
  216. data/lib/secrets_reader.rb +76 -0
  217. data/lib/tasks/spec_db.rake +53 -0
  218. data/lib/tasks/sunspot_reindex_calagator.rake +6 -0
  219. data/lib/tasks/sunspot_solr_restart_enhancements.rake +19 -0
  220. data/lib/tasks/update_counter_caches.rake +13 -0
  221. data/lib/templates/erb/scaffold/_form.html.erb +11 -0
  222. data/lib/theme_reader.rb +17 -0
  223. data/lib/wait_for_solr.rb +25 -0
  224. data/spec/controllers/calagator/application_controller_spec.rb +47 -0
  225. data/spec/controllers/calagator/events_controller_spec.rb +794 -0
  226. data/spec/controllers/calagator/site_controller_spec.rb +59 -0
  227. data/spec/controllers/calagator/sources_controller_spec.rb +439 -0
  228. data/spec/controllers/calagator/venues_controller_spec.rb +319 -0
  229. data/spec/controllers/calagator/versions_controller_spec.rb +82 -0
  230. data/spec/controllers/squash_many_duplicates_examples.rb +49 -0
  231. data/spec/dummy/Gemfile +39 -0
  232. data/spec/dummy/Gemfile.lock +195 -0
  233. data/spec/dummy/README.rdoc +261 -0
  234. data/spec/dummy/Rakefile +7 -0
  235. data/spec/dummy/app/assets/images/rails.png +0 -0
  236. data/spec/dummy/app/assets/javascripts/application.js +16 -0
  237. data/spec/dummy/app/assets/stylesheets/application.css +14 -0
  238. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  239. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  240. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  241. data/spec/dummy/config.ru +4 -0
  242. data/spec/dummy/config/application.rb +62 -0
  243. data/spec/dummy/config/boot.rb +6 -0
  244. data/spec/dummy/config/database.yml +25 -0
  245. data/spec/dummy/config/environment.rb +5 -0
  246. data/spec/dummy/config/environments/development.rb +37 -0
  247. data/spec/dummy/config/environments/production.rb +67 -0
  248. data/spec/dummy/config/environments/test.rb +37 -0
  249. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  250. data/spec/dummy/config/initializers/calagator.rb +26 -0
  251. data/spec/dummy/config/initializers/inflections.rb +15 -0
  252. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  253. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  254. data/spec/dummy/config/initializers/session_store.rb +8 -0
  255. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  256. data/spec/dummy/config/locales/en.yml +5 -0
  257. data/spec/dummy/config/routes.rb +59 -0
  258. data/spec/dummy/config/secrets.yml +83 -0
  259. data/spec/dummy/db/development.sqlite3 +0 -0
  260. data/spec/dummy/db/migrate/20150309023304_create_events.calagator.rb +18 -0
  261. data/spec/dummy/db/migrate/20150309023305_create_venues.calagator.rb +18 -0
  262. data/spec/dummy/db/migrate/20150309023306_create_sources.calagator.rb +17 -0
  263. data/spec/dummy/db/migrate/20150309023307_add_detailed_fields_to_venue.calagator.rb +20 -0
  264. data/spec/dummy/db/migrate/20150309023308_add_end_time_to_events.calagator.rb +10 -0
  265. data/spec/dummy/db/migrate/20150309023309_add_source_id_to_events.calagator.rb +10 -0
  266. data/spec/dummy/db/migrate/20150309023310_add_source_id_to_venues.calagator.rb +11 -0
  267. data/spec/dummy/db/migrate/20150309023311_add_duplicate_of_column_to_venues.calagator.rb +10 -0
  268. data/spec/dummy/db/migrate/20150309023312_add_duplicate_of_column_to_events.calagator.rb +10 -0
  269. data/spec/dummy/db/migrate/20150309023313_change_lat_long_type.calagator.rb +13 -0
  270. data/spec/dummy/db/migrate/20150309023314_add_source_reimport.calagator.rb +10 -0
  271. data/spec/dummy/db/migrate/20150309023315_change_end_time_to_duration.calagator.rb +12 -0
  272. data/spec/dummy/db/migrate/20150309023316_remove_format_type_from_source.calagator.rb +10 -0
  273. data/spec/dummy/db/migrate/20150309023317_create_updates.calagator.rb +16 -0
  274. data/spec/dummy/db/migrate/20150309023318_remove_next_update_from_source.calagator.rb +10 -0
  275. data/spec/dummy/db/migrate/20150309023319_change_duration_to_end_time.calagator.rb +12 -0
  276. data/spec/dummy/db/migrate/20150309023320_create_tags_and_taggings.calagator.rb +29 -0
  277. data/spec/dummy/db/migrate/20150309023321_create_versioned_events.calagator.rb +26 -0
  278. data/spec/dummy/db/migrate/20150309023322_create_versioned_venues.calagator.rb +33 -0
  279. data/spec/dummy/db/migrate/20150309023323_add_rrule_to_events.calagator.rb +16 -0
  280. data/spec/dummy/db/migrate/20150309023324_create_versions.calagator.rb +19 -0
  281. data/spec/dummy/db/migrate/20150309023325_add_closed_flag_to_venues.calagator.rb +10 -0
  282. data/spec/dummy/db/migrate/20150309023326_add_wifi_flag_to_venues.calagator.rb +10 -0
  283. data/spec/dummy/db/migrate/20150309023327_add_access_notes_to_venues.calagator.rb +10 -0
  284. data/spec/dummy/db/migrate/20150309023328_add_events_count_to_venues.calagator.rb +9 -0
  285. data/spec/dummy/db/migrate/20150309023329_add_venue_details_to_events.calagator.rb +10 -0
  286. data/spec/dummy/db/migrate/20150309023330_acts_as_taggable_on_migration.calagator.rb +51 -0
  287. data/spec/dummy/db/migrate/20150309023331_cleanup.calagator.rb +15 -0
  288. data/spec/dummy/db/migrate/20150309023332_specify_venues_latitude_and_longitude_precision.calagator.rb +12 -0
  289. data/spec/dummy/db/migrate/20150309023333_remove_updates.calagator.rb +14 -0
  290. data/spec/dummy/db/migrate/20150309023334_add_locked_status_to_events.calagator.rb +6 -0
  291. data/spec/dummy/db/schema.rb +95 -0
  292. data/spec/dummy/db/seeds.rb +7 -0
  293. data/spec/dummy/db/test.sqlite3 +0 -0
  294. data/spec/dummy/doc/README_FOR_APP +2 -0
  295. data/spec/dummy/log/development.log +273 -0
  296. data/spec/dummy/public/404.html +26 -0
  297. data/spec/dummy/public/422.html +26 -0
  298. data/spec/dummy/public/500.html +25 -0
  299. data/spec/dummy/public/favicon.ico +0 -0
  300. data/spec/dummy/public/robots.txt +5 -0
  301. data/spec/dummy/script/rails +6 -0
  302. data/spec/dummy/test/performance/browsing_test.rb +12 -0
  303. data/spec/dummy/test/test_helper.rb +13 -0
  304. data/spec/factories.rb +93 -0
  305. data/spec/features/add_event_spec.rb +99 -0
  306. data/spec/features/add_venue_spec.rb +34 -0
  307. data/spec/features/admin_auth_spec.rb +22 -0
  308. data/spec/features/admin_lock_event_spec.rb +41 -0
  309. data/spec/features/import_events_from_feed_spec.rb +43 -0
  310. data/spec/features/managing_event_spec.rb +111 -0
  311. data/spec/features/managing_venue_spec.rb +71 -0
  312. data/spec/features/search_event_spec.rb +27 -0
  313. data/spec/helpers/calagator/application_helper_spec.rb +82 -0
  314. data/spec/helpers/calagator/events_helper_spec.rb +172 -0
  315. data/spec/helpers/calagator/google_event_export_helper_spec.rb +70 -0
  316. data/spec/helpers/calagator/sources_helper_spec.rb +12 -0
  317. data/spec/helpers/calagator/tags_helper_spec.rb +85 -0
  318. data/spec/helpers/calagator/time_range_helper_spec.rb +59 -0
  319. data/spec/lib/calagator/blacklist_validator_spec.rb +65 -0
  320. data/spec/lib/calagator/decode_html_entities_hack_spec.rb +54 -0
  321. data/spec/lib/calagator/settings_spec.rb +20 -0
  322. data/spec/lib/calagator/url_prefixer_spec.rb +33 -0
  323. data/spec/lib/secrets_reader_spec.rb +65 -0
  324. data/spec/models/calagator/event/cloner_spec.rb +43 -0
  325. data/spec/models/calagator/event/overview_spec.rb +79 -0
  326. data/spec/models/calagator/event/search_spec.rb +103 -0
  327. data/spec/models/calagator/event_search_spec.rb +149 -0
  328. data/spec/models/calagator/event_spec.rb +859 -0
  329. data/spec/models/calagator/source/parser_facebook_spec.rb +73 -0
  330. data/spec/models/calagator/source/parser_hcal_spec.rb +69 -0
  331. data/spec/models/calagator/source/parser_ical_non_standard_spec.rb +91 -0
  332. data/spec/models/calagator/source/parser_ical_spec.rb +322 -0
  333. data/spec/models/calagator/source/parser_meetup_spec.rb +69 -0
  334. data/spec/models/calagator/source/parser_plancast_spec.rb +53 -0
  335. data/spec/models/calagator/source/parser_spec.rb +238 -0
  336. data/spec/models/calagator/source_spec.rb +135 -0
  337. data/spec/models/calagator/venue/search_spec.rb +92 -0
  338. data/spec/models/calagator/venue_search_spec.rb +124 -0
  339. data/spec/models/calagator/venue_spec.rb +346 -0
  340. data/spec/models/tag_spec.rb +35 -0
  341. data/spec/rails_helper.rb +39 -0
  342. data/spec/spec_helper.rb +140 -0
  343. data/spec/support/disable_geocoding.rb +1 -0
  344. data/spec/support/http_samples.rb +5 -0
  345. data/spec/support/samples/facebook.json +23 -0
  346. data/spec/support/samples/hcal_basic.xml +6 -0
  347. data/spec/support/samples/hcal_dup_event_dup_venue.xml +13 -0
  348. data/spec/support/samples/hcal_event_duplicates_fixture.xml +13 -0
  349. data/spec/support/samples/hcal_event_wo_lat_and_long.xml +14 -0
  350. data/spec/support/samples/hcal_multiple.xml +16 -0
  351. data/spec/support/samples/hcal_same_event_twice_with_different_venues.xml +12 -0
  352. data/spec/support/samples/hcal_single.xml +8 -0
  353. data/spec/support/samples/hcal_two_identical_events.xml +14 -0
  354. data/spec/support/samples/hcal_upcoming_v1.html +412 -0
  355. data/spec/support/samples/hcal_upcoming_v2.html +749 -0
  356. data/spec/support/samples/hcal_upcoming_v3.html +685 -0
  357. data/spec/support/samples/hcal_upcoming_v4.html +761 -0
  358. data/spec/support/samples/ical_apple.ics +22 -0
  359. data/spec/support/samples/ical_apple_v3.ics +37 -0
  360. data/spec/support/samples/ical_basic.ics +15 -0
  361. data/spec/support/samples/ical_basic_with_duration.ics +16 -0
  362. data/spec/support/samples/ical_event_with_squashed_venue.ics +12 -0
  363. data/spec/support/samples/ical_eventful_many.ics +504 -0
  364. data/spec/support/samples/ical_gmt.ics +12 -0
  365. data/spec/support/samples/ical_google.ics +786 -0
  366. data/spec/support/samples/ical_multiple_calendars.ics +111 -0
  367. data/spec/support/samples/ical_upcoming.ics +36 -0
  368. data/spec/support/samples/ical_upcoming_many.ics +682 -0
  369. data/spec/support/samples/ical_upcoming_v2.ics +43 -0
  370. data/spec/support/samples/ical_z.ics +10 -0
  371. data/spec/support/samples/meetup.ics +16 -0
  372. data/spec/support/samples/meetup.json +31 -0
  373. data/spec/support/samples/plancast.ics +59 -0
  374. data/spec/support/samples/plancast.json +51 -0
  375. data/spec/support/samples/plancast_with_missing_venue.json +39 -0
  376. data/spec/support/samples/upcoming_v1.xml +8 -0
  377. data/spec/support/samples/upcoming_v2_with_invalid_utc_dates.xml +8 -0
  378. data/spec/support/time_convenience_methods.rb +8 -0
  379. data/spec/support/time_zones.rb +12 -0
  380. data/spec/support/url_helpers.rb +5 -0
  381. data/spec/support/wait_for_ajax.rb +15 -0
  382. data/spec/support/webmock.rb +8 -0
  383. data/spec/travis_spec.rb +7 -0
  384. metadata +1194 -0
@@ -0,0 +1,10 @@
1
+ # This migration comes from calagator (originally 20110219205156)
2
+ class AddClosedFlagToVenues < ActiveRecord::Migration
3
+ def self.up
4
+ add_column :venues, :closed, :boolean, :default => false
5
+ end
6
+
7
+ def self.down
8
+ remove_column :venues, :closed
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ # This migration comes from calagator (originally 20110220001008)
2
+ class AddWifiFlagToVenues < ActiveRecord::Migration
3
+ def self.up
4
+ add_column :venues, :wifi, :boolean, :default => false
5
+ end
6
+
7
+ def self.down
8
+ remove_column :venues, :wifi
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ # This migration comes from calagator (originally 20110220011427)
2
+ class AddAccessNotesToVenues < ActiveRecord::Migration
3
+ def self.up
4
+ add_column :venues, :access_notes, :text
5
+ end
6
+
7
+ def self.down
8
+ remove_column :venues, :access_notes
9
+ end
10
+ end
@@ -0,0 +1,9 @@
1
+ # This migration comes from calagator (originally 20110220031117)
2
+ class AddEventsCountToVenues < ActiveRecord::Migration
3
+ def self.up
4
+ add_column :venues, :events_count, :integer
5
+ end
6
+ def self.down
7
+ remove_column :venues, :events_count
8
+ end
9
+ end
@@ -0,0 +1,10 @@
1
+ # This migration comes from calagator (originally 20110604174521)
2
+ class AddVenueDetailsToEvents < ActiveRecord::Migration
3
+ def self.up
4
+ add_column :events, :venue_details, :text
5
+ end
6
+
7
+ def self.down
8
+ remove_column :events, :venue_details
9
+ end
10
+ end
@@ -0,0 +1,51 @@
1
+ # This migration comes from calagator (originally 20110717231316)
2
+ class ActsAsTaggableOnMigration < ActiveRecord::Migration
3
+ def self.up
4
+ # We already have a Tag model with a name
5
+ # create_table :tags do |t|
6
+ # t.string :name
7
+ # end
8
+
9
+ # We already have a Taggings model with tag_id, taggable_id and taggable_type
10
+ # so we'll just add the tagger, context, and created_at columns.
11
+ add_column :taggings, :tagger_id, :integer
12
+ add_column :taggings, :tagger_type, :string
13
+ add_column :taggings, :context, :string
14
+ add_column :taggings, :created_at, :datetime
15
+
16
+ # We need to set the context on all existing tags to "tags" for them to be recognized
17
+ execute "UPDATE taggings SET context='tags' WHERE context IS NULL"
18
+
19
+ # create_table :taggings do |t|
20
+ # t.references :tag
21
+
22
+ # # You should make sure that the column created is
23
+ # # long enough to store the required class names.
24
+ # t.references :taggable, :polymorphic => true
25
+ # t.references :tagger, :polymorphic => true
26
+
27
+ # t.string :context
28
+
29
+ # t.datetime :created_at
30
+ # end
31
+
32
+ remove_index :taggings, :column => ["tag_id", "taggable_id", "taggable_type"]
33
+ add_index :taggings, :tag_id
34
+ add_index :taggings, [:taggable_id, :taggable_type, :context]
35
+ end
36
+
37
+ def self.down
38
+ remove_index :taggings, :tag_id
39
+ remove_index :taggings, :column => [:taggable_id, :taggable_type, :context]
40
+
41
+ remove_column :taggings, :tagger_id
42
+ remove_column :taggings, :tagger_type
43
+ remove_column :taggings, :context
44
+ remove_column :taggings, :created_at
45
+
46
+ add_index "taggings", ["tag_id", "taggable_id", "taggable_type"], :name => "index_taggings_on_tag_id_and_taggable_id_and_taggable_type", :unique => true
47
+
48
+ # drop_table :taggings
49
+ # drop_table :tags
50
+ end
51
+ end
@@ -0,0 +1,15 @@
1
+ # This migration comes from calagator (originally 20120709092821)
2
+ class Cleanup < ActiveRecord::Migration
3
+ # Remove obsolete tables and columns that may have been left behind by other migrations.
4
+ def self.up
5
+ if ActiveRecord::Base.connection.columns('venues').map(&:name).include?("version")
6
+ remove_column :venues, :version
7
+ end
8
+
9
+ %w[event_versions venue_versions].each do |table|
10
+ if ActiveRecord::Base.connection.tables.include?(table)
11
+ drop_table table
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,12 @@
1
+ # This migration comes from calagator (originally 20120831234448)
2
+ class SpecifyVenuesLatitudeAndLongitudePrecision < ActiveRecord::Migration
3
+ def up
4
+ change_column :venues, :latitude, :decimal, :precision => 7, :scale => 4
5
+ change_column :venues, :longitude, :decimal, :precision => 7, :scale => 4
6
+ end
7
+
8
+ def down
9
+ change_column :venues, :latitude, :decimal
10
+ change_column :venues, :longitude, :decimal
11
+ end
12
+ end
@@ -0,0 +1,14 @@
1
+ # This migration comes from calagator (originally 20150206085809)
2
+ class RemoveUpdates < ActiveRecord::Migration
3
+ def up
4
+ drop_table :updates
5
+ end
6
+
7
+ def down
8
+ create_table :updates do |t|
9
+ t.integer "source_id"
10
+ t.text "status"
11
+ t.timestamps
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,6 @@
1
+ # This migration comes from calagator (originally 20150207231355)
2
+ class AddLockedStatusToEvents < ActiveRecord::Migration
3
+ def change
4
+ add_column :events, :locked, :boolean, :default => false
5
+ end
6
+ end
@@ -0,0 +1,95 @@
1
+ # encoding: UTF-8
2
+ # This file is auto-generated from the current state of the database. Instead
3
+ # of editing this file, please use the migrations feature of Active Record to
4
+ # incrementally modify your database, and then regenerate this schema definition.
5
+ #
6
+ # Note that this schema.rb definition is the authoritative source for your
7
+ # database schema. If you need to create the application database on another
8
+ # system, you should be using db:schema:load, not running all the migrations
9
+ # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
+ # you'll amass, the slower it'll run and the greater likelihood for issues).
11
+ #
12
+ # It's strongly recommended to check this file into your version control system.
13
+
14
+ ActiveRecord::Schema.define(:version => 20150309023334) do
15
+
16
+ create_table "events", :force => true do |t|
17
+ t.string "title"
18
+ t.text "description"
19
+ t.datetime "start_time"
20
+ t.integer "venue_id"
21
+ t.string "url"
22
+ t.datetime "created_at", :null => false
23
+ t.datetime "updated_at", :null => false
24
+ t.integer "source_id"
25
+ t.integer "duplicate_of_id"
26
+ t.datetime "end_time"
27
+ t.string "rrule"
28
+ t.text "venue_details"
29
+ t.boolean "locked", :default => false
30
+ end
31
+
32
+ create_table "sources", :force => true do |t|
33
+ t.string "title"
34
+ t.string "url"
35
+ t.datetime "imported_at"
36
+ t.datetime "created_at", :null => false
37
+ t.datetime "updated_at", :null => false
38
+ t.boolean "reimport"
39
+ end
40
+
41
+ create_table "taggings", :force => true do |t|
42
+ t.integer "tag_id", :null => false
43
+ t.integer "taggable_id", :null => false
44
+ t.string "taggable_type", :null => false
45
+ t.integer "tagger_id"
46
+ t.string "tagger_type"
47
+ t.string "context"
48
+ t.datetime "created_at"
49
+ end
50
+
51
+ add_index "taggings", ["tag_id"], :name => "index_taggings_on_tag_id"
52
+ add_index "taggings", ["taggable_id", "taggable_type", "context"], :name => "index_taggings_on_taggable_id_and_taggable_type_and_context"
53
+
54
+ create_table "tags", :force => true do |t|
55
+ t.string "name", :null => false
56
+ end
57
+
58
+ add_index "tags", ["name"], :name => "index_tags_on_name", :unique => true
59
+
60
+ create_table "venues", :force => true do |t|
61
+ t.string "title"
62
+ t.text "description"
63
+ t.string "address"
64
+ t.string "url"
65
+ t.datetime "created_at", :null => false
66
+ t.datetime "updated_at", :null => false
67
+ t.string "street_address"
68
+ t.string "locality"
69
+ t.string "region"
70
+ t.string "postal_code"
71
+ t.string "country"
72
+ t.decimal "latitude", :precision => 7, :scale => 4
73
+ t.decimal "longitude", :precision => 7, :scale => 4
74
+ t.string "email"
75
+ t.string "telephone"
76
+ t.integer "source_id"
77
+ t.integer "duplicate_of_id"
78
+ t.boolean "closed", :default => false
79
+ t.boolean "wifi", :default => false
80
+ t.text "access_notes"
81
+ t.integer "events_count"
82
+ end
83
+
84
+ create_table "versions", :force => true do |t|
85
+ t.string "item_type", :null => false
86
+ t.integer "item_id", :null => false
87
+ t.string "event", :null => false
88
+ t.string "whodunnit"
89
+ t.text "object"
90
+ t.datetime "created_at"
91
+ end
92
+
93
+ add_index "versions", ["item_type", "item_id"], :name => "index_versions_on_item_type_and_item_id"
94
+
95
+ end
@@ -0,0 +1,7 @@
1
+ # This file should contain all the record creation needed to seed the database with its default values.
2
+ # The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
3
+ #
4
+ # Examples:
5
+ #
6
+ # cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])
7
+ # Mayor.create(name: 'Emanuel', city: cities.first)
@@ -0,0 +1,2 @@
1
+ Use this README file to introduce your application and point to useful places in the API for learning more.
2
+ Run "rake doc:app" to generate API documentation for your models, controllers, helpers, and libraries.
@@ -0,0 +1,273 @@
1
+ ** SecretsReader - Couldn't find 'config/secrets.yml'
2
+ Connecting to database specified by database.yml
3
+ ** SecretsReader - loaded 'config/secrets.yml'
4
+ Connecting to database specified by database.yml
5
+  (0.9ms) select sqlite_version(*)
6
+  (1.2ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL)
7
+  (0.8ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
8
+  (0.1ms) SELECT "schema_migrations"."version" FROM "schema_migrations"
9
+ Migrating to CreateEvents (20150309023304)
10
+  (0.0ms) begin transaction
11
+  (0.3ms) CREATE TABLE "events" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "description" text, "start_time" datetime, "venue_id" integer, "url" varchar(255), "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
12
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023304')
13
+  (0.7ms) commit transaction
14
+ Migrating to CreateVenues (20150309023305)
15
+  (0.0ms) begin transaction
16
+  (0.2ms) CREATE TABLE "venues" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "description" text, "address" varchar(255), "url" varchar(255), "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
17
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023305')
18
+  (0.7ms) commit transaction
19
+ Migrating to CreateSources (20150309023306)
20
+  (0.0ms) begin transaction
21
+  (0.3ms) CREATE TABLE "sources" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "url" varchar(255), "format_type" varchar(255), "imported_at" datetime, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
22
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023306')
23
+  (0.6ms) commit transaction
24
+ Migrating to AddDetailedFieldsToVenue (20150309023307)
25
+  (0.0ms) begin transaction
26
+  (0.3ms) ALTER TABLE "venues" ADD "street_address" varchar(255)
27
+  (0.1ms) ALTER TABLE "venues" ADD "locality" varchar(255)
28
+  (0.1ms) ALTER TABLE "venues" ADD "region" varchar(255)
29
+  (0.1ms) ALTER TABLE "venues" ADD "postal_code" varchar(255)
30
+  (0.1ms) ALTER TABLE "venues" ADD "country" varchar(255)
31
+  (0.1ms) ALTER TABLE "venues" ADD "latitude" float
32
+  (0.1ms) ALTER TABLE "venues" ADD "longitude" float
33
+  (0.1ms) ALTER TABLE "venues" ADD "email" varchar(255)
34
+  (0.1ms) ALTER TABLE "venues" ADD "telephone" varchar(255)
35
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023307')
36
+  (0.6ms) commit transaction
37
+ Migrating to AddEndTimeToEvents (20150309023308)
38
+  (0.0ms) begin transaction
39
+  (0.2ms) ALTER TABLE "events" ADD "end_time" datetime
40
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023308')
41
+  (0.6ms) commit transaction
42
+ Migrating to AddSourceIdToEvents (20150309023309)
43
+  (0.0ms) begin transaction
44
+  (0.2ms) ALTER TABLE "events" ADD "source_id" integer
45
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023309')
46
+  (0.6ms) commit transaction
47
+ Migrating to AddSourceIdToVenues (20150309023310)
48
+  (0.0ms) begin transaction
49
+  (0.2ms) ALTER TABLE "venues" ADD "source_id" integer
50
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023310')
51
+  (0.6ms) commit transaction
52
+ Migrating to AddDuplicateOfColumnToVenues (20150309023311)
53
+  (0.0ms) begin transaction
54
+  (0.3ms) ALTER TABLE "venues" ADD "duplicate_of_id" integer
55
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023311')
56
+  (0.4ms) commit transaction
57
+ Migrating to AddDuplicateOfColumnToEvents (20150309023312)
58
+  (0.0ms) begin transaction
59
+  (0.2ms) ALTER TABLE "events" ADD "duplicate_of_id" integer
60
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023312')
61
+  (0.6ms) commit transaction
62
+ Migrating to ChangeLatLongType (20150309023313)
63
+  (0.0ms) begin transaction
64
+  (1.1ms) CREATE TEMPORARY TABLE "altered_venues" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "description" text, "address" varchar(255), "url" varchar(255), "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "street_address" varchar(255), "locality" varchar(255), "region" varchar(255), "postal_code" varchar(255), "country" varchar(255), "latitude" float, "longitude" float, "email" varchar(255), "telephone" varchar(255), "source_id" integer, "duplicate_of_id" integer)
65
+  (0.0ms) SELECT * FROM "venues"
66
+  (0.3ms) DROP TABLE "venues"
67
+  (0.1ms) CREATE TABLE "venues" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "description" text, "address" varchar(255), "url" varchar(255), "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "street_address" varchar(255), "locality" varchar(255), "region" varchar(255), "postal_code" varchar(255), "country" varchar(255), "latitude" decimal(15,10), "longitude" float, "email" varchar(255), "telephone" varchar(255), "source_id" integer, "duplicate_of_id" integer) 
68
+  (0.0ms) SELECT * FROM "altered_venues"
69
+  (0.3ms) DROP TABLE "altered_venues"
70
+  (0.2ms) CREATE TEMPORARY TABLE "altered_venues" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "description" text, "address" varchar(255), "url" varchar(255), "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "street_address" varchar(255), "locality" varchar(255), "region" varchar(255), "postal_code" varchar(255), "country" varchar(255), "latitude" decimal(15,10), "longitude" float, "email" varchar(255), "telephone" varchar(255), "source_id" integer, "duplicate_of_id" integer)
71
+  (0.1ms) SELECT * FROM "venues"
72
+  (0.5ms) DROP TABLE "venues"
73
+  (0.2ms) CREATE TABLE "venues" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "description" text, "address" varchar(255), "url" varchar(255), "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "street_address" varchar(255), "locality" varchar(255), "region" varchar(255), "postal_code" varchar(255), "country" varchar(255), "latitude" decimal(15,10), "longitude" decimal(15,10), "email" varchar(255), "telephone" varchar(255), "source_id" integer, "duplicate_of_id" integer) 
74
+  (0.1ms) SELECT * FROM "altered_venues"
75
+  (0.1ms) DROP TABLE "altered_venues"
76
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023313')
77
+  (1.4ms) commit transaction
78
+ Migrating to AddSourceReimport (20150309023314)
79
+  (0.0ms) begin transaction
80
+  (0.3ms) ALTER TABLE "sources" ADD "reimport" boolean
81
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023314')
82
+  (0.6ms) commit transaction
83
+ Migrating to ChangeEndTimeToDuration (20150309023315)
84
+  (0.0ms) begin transaction
85
+  (0.4ms) ALTER TABLE "events" ADD "duration" integer
86
+  (0.3ms) CREATE TEMPORARY TABLE "altered_events" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "description" text, "start_time" datetime, "venue_id" integer, "url" varchar(255), "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "end_time" datetime, "source_id" integer, "duplicate_of_id" integer, "duration" integer)
87
+  (0.1ms) SELECT * FROM "events"
88
+  (0.9ms) DROP TABLE "events"
89
+  (0.2ms) CREATE TABLE "events" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "description" text, "start_time" datetime, "venue_id" integer, "url" varchar(255), "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "source_id" integer, "duplicate_of_id" integer, "duration" integer) 
90
+  (0.1ms) SELECT * FROM "altered_events"
91
+  (0.2ms) DROP TABLE "altered_events"
92
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023315')
93
+  (1.2ms) commit transaction
94
+ Migrating to RemoveFormatTypeFromSource (20150309023316)
95
+  (0.1ms) begin transaction
96
+  (0.3ms) CREATE TEMPORARY TABLE "altered_sources" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "url" varchar(255), "format_type" varchar(255), "imported_at" datetime, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "reimport" boolean) 
97
+  (0.1ms) SELECT * FROM "sources"
98
+  (0.5ms) DROP TABLE "sources"
99
+  (0.2ms) CREATE TABLE "sources" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "url" varchar(255), "imported_at" datetime, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "reimport" boolean)
100
+  (0.1ms) SELECT * FROM "altered_sources"
101
+  (0.2ms) DROP TABLE "altered_sources"
102
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023316')
103
+  (1.0ms) commit transaction
104
+ Migrating to CreateUpdates (20150309023317)
105
+  (0.1ms) begin transaction
106
+  (0.5ms) CREATE TABLE "updates" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "source_id" integer, "status" text, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
107
+  (0.2ms) ALTER TABLE "sources" ADD "next_update" datetime
108
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023317')
109
+  (1.0ms) commit transaction
110
+ Migrating to RemoveNextUpdateFromSource (20150309023318)
111
+  (0.1ms) begin transaction
112
+  (0.3ms) CREATE TEMPORARY TABLE "altered_sources" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "url" varchar(255), "imported_at" datetime, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "reimport" boolean, "next_update" datetime) 
113
+  (0.1ms) SELECT * FROM "sources"
114
+  (0.4ms) DROP TABLE "sources"
115
+  (0.3ms) CREATE TABLE "sources" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "url" varchar(255), "imported_at" datetime, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "reimport" boolean)
116
+  (0.1ms) SELECT * FROM "altered_sources"
117
+  (0.2ms) DROP TABLE "altered_sources"
118
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023318')
119
+  (1.0ms) commit transaction
120
+ Migrating to ChangeDurationToEndTime (20150309023319)
121
+  (0.0ms) begin transaction
122
+  (0.6ms) ALTER TABLE "events" ADD "end_time" datetime
123
+  (0.3ms) CREATE TEMPORARY TABLE "altered_events" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "description" text, "start_time" datetime, "venue_id" integer, "url" varchar(255), "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "source_id" integer, "duplicate_of_id" integer, "duration" integer, "end_time" datetime) 
124
+  (0.1ms) SELECT * FROM "events"
125
+  (1.0ms) DROP TABLE "events"
126
+  (0.3ms) CREATE TABLE "events" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "description" text, "start_time" datetime, "venue_id" integer, "url" varchar(255), "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "source_id" integer, "duplicate_of_id" integer, "end_time" datetime)
127
+  (0.1ms) SELECT * FROM "altered_events"
128
+  (0.3ms) DROP TABLE "altered_events"
129
+  (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023319')
130
+  (1.1ms) commit transaction
131
+ Migrating to CreateTagsAndTaggings (20150309023320)
132
+  (0.1ms) begin transaction
133
+  (0.7ms) CREATE TABLE "tags" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255) NOT NULL)
134
+  (0.8ms) CREATE UNIQUE INDEX "index_tags_on_name" ON "tags" ("name")
135
+  (0.2ms) CREATE TABLE "taggings" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "tag_id" integer NOT NULL, "taggable_id" integer NOT NULL, "taggable_type" varchar(255) NOT NULL)
136
+  (0.3ms) CREATE UNIQUE INDEX "index_taggings_on_tag_id_and_taggable_id_and_taggable_type" ON "taggings" ("tag_id", "taggable_id", "taggable_type")
137
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023320')
138
+  (1.2ms) commit transaction
139
+ Migrating to CreateVersionedEvents (20150309023321)
140
+  (0.1ms) begin transaction
141
+  (0.5ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023321')
142
+  (1.0ms) commit transaction
143
+ Migrating to CreateVersionedVenues (20150309023322)
144
+  (0.1ms) begin transaction
145
+  (0.5ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023322')
146
+  (0.9ms) commit transaction
147
+ Migrating to AddRruleToEvents (20150309023323)
148
+  (0.1ms) begin transaction
149
+  (0.6ms) ALTER TABLE "events" ADD "rrule" varchar(255)
150
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023323')
151
+  (0.8ms) commit transaction
152
+ Migrating to CreateVersions (20150309023324)
153
+  (0.1ms) begin transaction
154
+  (0.8ms) CREATE TABLE "versions" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "item_type" varchar(255) NOT NULL, "item_id" integer NOT NULL, "event" varchar(255) NOT NULL, "whodunnit" varchar(255), "object" text, "created_at" datetime) 
155
+  (0.2ms) CREATE INDEX "index_versions_on_item_type_and_item_id" ON "versions" ("item_type", "item_id")
156
+  (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023324')
157
+  (0.9ms) commit transaction
158
+ Migrating to AddClosedFlagToVenues (20150309023325)
159
+  (0.0ms) begin transaction
160
+  (0.6ms) ALTER TABLE "venues" ADD "closed" boolean DEFAULT 'f'
161
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023325')
162
+  (0.7ms) commit transaction
163
+ Migrating to AddWifiFlagToVenues (20150309023326)
164
+  (0.0ms) begin transaction
165
+  (0.5ms) ALTER TABLE "venues" ADD "wifi" boolean DEFAULT 'f'
166
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023326')
167
+  (1.1ms) commit transaction
168
+ Migrating to AddAccessNotesToVenues (20150309023327)
169
+  (0.1ms) begin transaction
170
+  (1.2ms) ALTER TABLE "venues" ADD "access_notes" text
171
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023327')
172
+  (7.3ms) commit transaction
173
+ Migrating to AddEventsCountToVenues (20150309023328)
174
+  (0.1ms) begin transaction
175
+  (0.7ms) ALTER TABLE "venues" ADD "events_count" integer
176
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023328')
177
+  (11.7ms) commit transaction
178
+ Migrating to AddVenueDetailsToEvents (20150309023329)
179
+  (0.1ms) begin transaction
180
+  (0.5ms) ALTER TABLE "events" ADD "venue_details" text
181
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023329')
182
+  (1.1ms) commit transaction
183
+ Migrating to ActsAsTaggableOnMigration (20150309023330)
184
+  (0.0ms) begin transaction
185
+  (0.5ms) ALTER TABLE "taggings" ADD "tagger_id" integer
186
+  (0.2ms) ALTER TABLE "taggings" ADD "tagger_type" varchar(255)
187
+  (0.2ms) ALTER TABLE "taggings" ADD "context" varchar(255)
188
+  (0.2ms) ALTER TABLE "taggings" ADD "created_at" datetime
189
+  (0.1ms) UPDATE taggings SET context='tags' WHERE context IS NULL
190
+  (0.7ms) DROP INDEX "index_taggings_on_tag_id_and_taggable_id_and_taggable_type"
191
+  (0.1ms) CREATE INDEX "index_taggings_on_tag_id" ON "taggings" ("tag_id")
192
+  (0.1ms) CREATE INDEX "index_taggings_on_taggable_id_and_taggable_type_and_context" ON "taggings" ("taggable_id", "taggable_type", "context")
193
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023330')
194
+  (1.1ms) commit transaction
195
+ Migrating to Cleanup (20150309023331)
196
+  (0.2ms) begin transaction
197
+  (0.3ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023331')
198
+  (0.8ms) commit transaction
199
+ Migrating to SpecifyVenuesLatitudeAndLongitudePrecision (20150309023332)
200
+  (0.0ms) begin transaction
201
+  (0.2ms) CREATE TEMPORARY TABLE "altered_venues" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "description" text, "address" varchar(255), "url" varchar(255), "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "street_address" varchar(255), "locality" varchar(255), "region" varchar(255), "postal_code" varchar(255), "country" varchar(255), "latitude" decimal(15,10), "longitude" decimal(15,10), "email" varchar(255), "telephone" varchar(255), "source_id" integer, "duplicate_of_id" integer, "closed" boolean DEFAULT 'f', "wifi" boolean DEFAULT 'f', "access_notes" text, "events_count" integer)
202
+  (0.1ms) SELECT * FROM "venues"
203
+  (0.3ms) DROP TABLE "venues"
204
+  (0.3ms) CREATE TABLE "venues" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "description" text, "address" varchar(255), "url" varchar(255), "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "street_address" varchar(255), "locality" varchar(255), "region" varchar(255), "postal_code" varchar(255), "country" varchar(255), "latitude" decimal(7,4), "longitude" decimal(15,10), "email" varchar(255), "telephone" varchar(255), "source_id" integer, "duplicate_of_id" integer, "closed" boolean DEFAULT 'f', "wifi" boolean DEFAULT 'f', "access_notes" text, "events_count" integer) 
205
+  (0.1ms) SELECT * FROM "altered_venues"
206
+  (0.1ms) DROP TABLE "altered_venues"
207
+  (0.2ms) CREATE TEMPORARY TABLE "altered_venues" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "description" text, "address" varchar(255), "url" varchar(255), "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "street_address" varchar(255), "locality" varchar(255), "region" varchar(255), "postal_code" varchar(255), "country" varchar(255), "latitude" decimal(7,4), "longitude" decimal(15,10), "email" varchar(255), "telephone" varchar(255), "source_id" integer, "duplicate_of_id" integer, "closed" boolean DEFAULT 'f', "wifi" boolean DEFAULT 'f', "access_notes" text, "events_count" integer)
208
+  (0.1ms) SELECT * FROM "venues"
209
+  (0.6ms) DROP TABLE "venues"
210
+  (0.2ms) CREATE TABLE "venues" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "description" text, "address" varchar(255), "url" varchar(255), "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "street_address" varchar(255), "locality" varchar(255), "region" varchar(255), "postal_code" varchar(255), "country" varchar(255), "latitude" decimal(7,4), "longitude" decimal(7,4), "email" varchar(255), "telephone" varchar(255), "source_id" integer, "duplicate_of_id" integer, "closed" boolean DEFAULT 'f', "wifi" boolean DEFAULT 'f', "access_notes" text, "events_count" integer) 
211
+  (0.1ms) SELECT * FROM "altered_venues"
212
+  (0.1ms) DROP TABLE "altered_venues"
213
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023332')
214
+  (1.0ms) commit transaction
215
+ Migrating to RemoveUpdates (20150309023333)
216
+  (0.0ms) begin transaction
217
+  (0.4ms) DROP TABLE "updates"
218
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023333')
219
+  (0.6ms) commit transaction
220
+ Migrating to AddLockedStatusToEvents (20150309023334)
221
+  (0.0ms) begin transaction
222
+  (0.4ms) ALTER TABLE "events" ADD "locked" boolean DEFAULT 'f'
223
+  (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES ('20150309023334')
224
+  (0.5ms) commit transaction
225
+  (0.1ms) SELECT "schema_migrations"."version" FROM "schema_migrations"
226
+ ** SecretsReader - loaded 'config/secrets.yml'
227
+ Connecting to database specified by database.yml
228
+  (0.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" 
229
+  (0.3ms) select sqlite_version(*)
230
+  (1.5ms) CREATE TABLE "events" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "description" text, "start_time" datetime, "venue_id" integer, "url" varchar(255), "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "source_id" integer, "duplicate_of_id" integer, "end_time" datetime, "rrule" varchar(255), "venue_details" text, "locked" boolean DEFAULT 'f') 
231
+  (1.1ms) CREATE TABLE "sources" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "url" varchar(255), "imported_at" datetime, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "reimport" boolean)
232
+  (1.1ms) CREATE TABLE "taggings" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "tag_id" integer NOT NULL, "taggable_id" integer NOT NULL, "taggable_type" varchar(255) NOT NULL, "tagger_id" integer, "tagger_type" varchar(255), "context" varchar(255), "created_at" datetime) 
233
+  (1.1ms) CREATE INDEX "index_taggings_on_tag_id" ON "taggings" ("tag_id")
234
+  (1.0ms) CREATE INDEX "index_taggings_on_taggable_id_and_taggable_type_and_context" ON "taggings" ("taggable_id", "taggable_type", "context")
235
+  (1.0ms) CREATE TABLE "tags" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255) NOT NULL)
236
+  (1.0ms) CREATE UNIQUE INDEX "index_tags_on_name" ON "tags" ("name")
237
+  (1.2ms) CREATE TABLE "venues" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "description" text, "address" varchar(255), "url" varchar(255), "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "street_address" varchar(255), "locality" varchar(255), "region" varchar(255), "postal_code" varchar(255), "country" varchar(255), "latitude" decimal(7,4), "longitude" decimal(7,4), "email" varchar(255), "telephone" varchar(255), "source_id" integer, "duplicate_of_id" integer, "closed" boolean DEFAULT 'f', "wifi" boolean DEFAULT 'f', "access_notes" text, "events_count" integer)
238
+  (1.0ms) CREATE TABLE "versions" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "item_type" varchar(255) NOT NULL, "item_id" integer NOT NULL, "event" varchar(255) NOT NULL, "whodunnit" varchar(255), "object" text, "created_at" datetime) 
239
+  (1.3ms) CREATE INDEX "index_versions_on_item_type_and_item_id" ON "versions" ("item_type", "item_id")
240
+  (0.9ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
241
+  (0.9ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
242
+  (0.1ms) SELECT version FROM "schema_migrations"
243
+  (1.0ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023334')
244
+  (0.9ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023304')
245
+  (0.9ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023305')
246
+  (0.9ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023306')
247
+  (1.0ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023307')
248
+  (0.8ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023308')
249
+  (0.9ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023309')
250
+  (1.0ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023310')
251
+  (0.9ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023311')
252
+  (0.9ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023312')
253
+  (0.9ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023313')
254
+  (0.9ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023314')
255
+  (0.9ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023315')
256
+  (0.9ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023316')
257
+  (0.9ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023317')
258
+  (1.0ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023318')
259
+  (0.8ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023319')
260
+  (1.0ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023320')
261
+  (0.8ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023321')
262
+  (0.8ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023322')
263
+  (0.9ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023323')
264
+  (0.8ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023324')
265
+  (0.8ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023325')
266
+  (0.9ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023326')
267
+  (1.0ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023327')
268
+  (0.9ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023328')
269
+  (0.8ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023329')
270
+  (0.8ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023330')
271
+  (0.8ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023331')
272
+  (1.0ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023332')
273
+  (0.8ms) INSERT INTO "schema_migrations" (version) VALUES ('20150309023333')