redis_analytics 0.6.0 → 0.7.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.
- checksums.yaml +7 -0
- data/Gemfile.lock +159 -40
- data/{LICENSE → MIT-LICENSE} +0 -0
- data/README.md +54 -64
- data/TODO.md +1 -0
- data/app/controllers/redis_analytics/api_controller.rb +50 -0
- data/app/controllers/redis_analytics/application_controller.rb +4 -0
- data/app/controllers/redis_analytics/visits_controller.rb +9 -0
- data/app/helpers/redis_analytics/application_helper.rb +4 -0
- data/app/helpers/redis_analytics/visits_helper.rb +74 -0
- data/app/views/layouts/redis_analytics/application.html.erb +17 -0
- data/app/views/redis_analytics/application/_footer.html.erb +3 -0
- data/{lib/redis_analytics/dashboard/views/footer.erb → app/views/redis_analytics/application/_footer.html.erb~} +0 -0
- data/{lib/redis_analytics/dashboard/views/header.erb → app/views/redis_analytics/application/_header.html.erb} +1 -1
- data/{lib/redis_analytics/dashboard/views/widgets/bounce_rate.erb → app/views/redis_analytics/visits/_bounce_rate.html.erb} +1 -1
- data/{lib/redis_analytics/dashboard/views/widgets/browsers_donut.erb → app/views/redis_analytics/visits/_browsers_donut.html.erb} +1 -1
- data/{lib/redis_analytics/dashboard/views/widgets/first_visits.erb → app/views/redis_analytics/visits/_first_visits.html.erb} +1 -1
- data/{lib/redis_analytics/dashboard/views/widgets/page_depth.erb → app/views/redis_analytics/visits/_page_depth.html.erb} +1 -1
- data/{lib/redis_analytics/dashboard/views/widgets/referers_donut.erb → app/views/redis_analytics/visits/_referers_donut.html.erb} +0 -0
- data/{lib/redis_analytics/dashboard/views/widgets/total_page_views.erb → app/views/redis_analytics/visits/_total_page_views.html.erb} +1 -1
- data/{lib/redis_analytics/dashboard/views/widgets/total_visits.erb → app/views/redis_analytics/visits/_total_visits.html.erb} +1 -1
- data/app/views/redis_analytics/visits/_unique_visits_line.html.erb +26 -0
- data/{lib/redis_analytics/dashboard/views/widgets/unique_visits_line.erb → app/views/redis_analytics/visits/_unique_visits_line.html.erb~} +1 -1
- data/app/views/redis_analytics/visits/_visit_duration.html.erb +3 -0
- data/{lib/redis_analytics/dashboard/views/widgets/visit_spark.erb → app/views/redis_analytics/visits/_visit_spark.html.erb} +1 -1
- data/{lib/redis_analytics/dashboard/views/widgets/visitor_recency_slices.erb → app/views/redis_analytics/visits/_visitor_recency_slices.html.erb} +1 -1
- data/{lib/redis_analytics/dashboard/views/widgets/visits_area.erb → app/views/redis_analytics/visits/_visits_area.html.erb} +2 -2
- data/{lib/redis_analytics/dashboard/views/widgets/visits_donut.erb → app/views/redis_analytics/visits/_visits_donut.html.erb} +0 -0
- data/{lib/redis_analytics/dashboard/views/visits_js.erb → app/views/redis_analytics/visits/_visits_js.html.erb} +13 -10
- data/{lib/redis_analytics/dashboard/views/widgets/world_map.erb → app/views/redis_analytics/visits/_world_map.html.erb} +1 -1
- data/app/views/redis_analytics/visits/index.html.erb +69 -0
- data/{lib/redis_analytics/dashboard/views/visits.erb → app/views/redis_analytics/visits/index.html.erb~} +0 -0
- data/bin/GeoIP.dat +0 -0
- data/config.ru +2 -2
- data/config/routes.rb +5 -0
- data/coverage/assets/0.8.0/application.css +799 -0
- data/coverage/assets/0.8.0/application.js +1559 -0
- data/coverage/assets/0.8.0/colorbox/border.png +0 -0
- data/coverage/assets/0.8.0/colorbox/controls.png +0 -0
- data/coverage/assets/0.8.0/colorbox/loading.gif +0 -0
- data/coverage/assets/0.8.0/colorbox/loading_background.png +0 -0
- data/coverage/assets/0.8.0/favicon_green.png +0 -0
- data/coverage/assets/0.8.0/favicon_red.png +0 -0
- data/coverage/assets/0.8.0/favicon_yellow.png +0 -0
- data/coverage/assets/0.8.0/loading.gif +0 -0
- data/coverage/assets/0.8.0/magnify.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-icons_222222_256x240.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-icons_454545_256x240.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-icons_888888_256x240.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/coverage/index.html +3484 -0
- data/lib/redis_analytics.rb +5 -12
- data/lib/redis_analytics/configuration.rb +2 -3
- data/lib/redis_analytics/engine.rb +18 -0
- data/lib/redis_analytics/filter.rb +1 -2
- data/lib/redis_analytics/helpers.rb +1 -2
- data/lib/redis_analytics/metrics.rb +1 -2
- data/lib/redis_analytics/time_ext.rb +0 -76
- data/lib/redis_analytics/tracker.rb +35 -24
- data/lib/redis_analytics/version.rb +2 -3
- data/lib/redis_analytics/visit.rb +4 -5
- data/lib/tasks/redis_analytics_tasks.rake +4 -0
- data/redis_analytics.gemspec +20 -20
- data/script/rails +8 -0
- data/spec/lib/redis_analytics/analytics_spec.rb +0 -59
- data/spec/lib/redis_analytics/configuration_spec.rb +19 -19
- data/spec/lib/redis_analytics/{dashboard_spec.rb → engine_spec.rb} +2 -8
- data/spec/lib/redis_analytics/filter_spec.rb +4 -4
- data/spec/lib/redis_analytics/tracker_spec.rb +45 -6
- data/spec/spec_helper.rb +2 -2
- data/test/dummy/README.rdoc +261 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +15 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +67 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +4 -0
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/production.sqlite3 +0 -0
- data/test/dummy/log/development.log +1605 -0
- data/test/dummy/log/production.log +882 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/assets/application-ac39e235d42f60499cd65a4b78076ba3.css +14 -0
- data/test/dummy/public/assets/application-ac39e235d42f60499cd65a4b78076ba3.css.gz +0 -0
- data/test/dummy/public/assets/application-c900658d554ff9f314a2e1b97cd68997.js +10752 -0
- data/test/dummy/public/assets/application-c900658d554ff9f314a2e1b97cd68997.js.gz +0 -0
- data/test/dummy/public/assets/manifest-5bcba723c313582b1d428fc3bf592b29.json +1 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/dummy/tmp/cache/assets/C86/E20/sprockets%2F04d6293b6d7c30b20475e886dc634936 +0 -0
- data/test/dummy/tmp/cache/assets/C88/400/sprockets%2F1bb834b9f3b720193591960cf7f31497 +0 -0
- data/test/dummy/tmp/cache/assets/C8D/800/sprockets%2Fb484d3480591b77bf84376f1f41a6457 +0 -0
- data/test/dummy/tmp/cache/assets/C97/230/sprockets%2Ff8c56a6d1d5685424871464fc480f956 +0 -0
- data/test/dummy/tmp/cache/assets/C98/560/sprockets%2Ff14a2366122e6017b965b32290b8abb0 +0 -0
- data/test/dummy/tmp/cache/assets/CAE/7D0/sprockets%2F1f0b25ca08195d3582e4fe04396e9270 +0 -0
- data/test/dummy/tmp/cache/assets/CB9/550/sprockets%2F0505a9fb5602a3fae429f389832747d8 +0 -0
- data/test/dummy/tmp/cache/assets/CBA/030/sprockets%2F510aa1c63fe533f77a197367b79f2919 +0 -0
- data/test/dummy/tmp/cache/assets/CBC/630/sprockets%2F8fca8928788707a4ba625519ab402d58 +0 -0
- data/test/dummy/tmp/cache/assets/CC6/EE0/sprockets%2Fb6d3cc91f7b3559f985a978176b44324 +0 -0
- data/test/dummy/tmp/cache/assets/CC9/9C0/sprockets%2F84294e9b30cf387e6d8a35f82616a796 +0 -0
- data/test/dummy/tmp/cache/assets/CDA/880/sprockets%2F6b1913c56c962748122caf34704afdb5 +0 -0
- data/test/dummy/tmp/cache/assets/CDD/BF0/sprockets%2F1f5080b606781094922ecaccd9d508f2 +0 -0
- data/test/dummy/tmp/cache/assets/CF0/BB0/sprockets%2F48cd49adc4f96c8324c46c45641b6865 +0 -0
- data/test/dummy/tmp/cache/assets/CFE/380/sprockets%2F8e8d04799794da144a9907a9f82e0cf8 +0 -0
- data/test/dummy/tmp/cache/assets/D06/470/sprockets%2F2e9124aa82b45552ba5a8307f4f16a8e +0 -0
- data/test/dummy/tmp/cache/assets/D06/B80/sprockets%2Fb658eb46471a1b356c0e13962f1a52ee +0 -0
- data/test/dummy/tmp/cache/assets/D07/520/sprockets%2F0176f74cb205f694569fa21a53b2fa0e +0 -0
- data/test/dummy/tmp/cache/assets/D0A/3C0/sprockets%2F8fd1601c6d442f22a88d0e43bb87117f +0 -0
- data/test/dummy/tmp/cache/assets/D10/130/sprockets%2F7af0bd97720d268b9835405c8bae2d06 +0 -0
- data/test/dummy/tmp/cache/assets/D15/450/sprockets%2Fae3344670b608424cdc864eca5496fb9 +0 -0
- data/test/dummy/tmp/cache/assets/D16/7F0/sprockets%2F73d738bf9b779ad016ed62131d85cc16 +0 -0
- data/test/dummy/tmp/cache/assets/D16/A30/sprockets%2F23659e6e2161bb90c6f382ecbef73906 +0 -0
- data/test/dummy/tmp/cache/assets/D2B/060/sprockets%2Fd5891eb52eb6329a928461796e9ddfe5 +0 -0
- data/test/dummy/tmp/cache/assets/D32/810/sprockets%2F640ab72cec151bc94248b091f6b763bb +0 -0
- data/test/dummy/tmp/cache/assets/D37/C50/sprockets%2F00afdaa74ea16690227f771ae0879e1c +0 -0
- data/test/dummy/tmp/cache/assets/D39/A80/sprockets%2Ff850350eb319d86a5e0c02c2279cffa5 +0 -0
- data/test/dummy/tmp/cache/assets/D3F/170/sprockets%2F3b7a50f2bb29ad782e0352fc784d582f +0 -0
- data/test/dummy/tmp/cache/assets/D54/280/sprockets%2F8e51b269010978fe78fa369f6dfa1bf6 +0 -0
- data/test/dummy/tmp/cache/assets/D5C/120/sprockets%2F6b74e64b0422b8c574caba3a1746acd2 +0 -0
- data/test/dummy/tmp/cache/assets/D5D/E00/sprockets%2Fee3d10401f2a2d4a84f4fe56181fe1c1 +0 -0
- data/test/dummy/tmp/cache/assets/D68/310/sprockets%2Fa6108a4fca3b4012f99dcf46e24f5f60 +0 -0
- data/test/dummy/tmp/cache/assets/D6C/8C0/sprockets%2F06e1e915faab12cbf879a6b15b9136e7 +0 -0
- data/test/dummy/tmp/cache/assets/D70/310/sprockets%2Fab142f83166b2fc048379c9dfddd355a +0 -0
- data/test/dummy/tmp/cache/assets/D74/9F0/sprockets%2F59ed8bd7c6ca0dbe0f1921ee14667375 +0 -0
- data/test/dummy/tmp/cache/assets/D76/270/sprockets%2F006a046ae88edf3f8c84dc30ef8056d8 +0 -0
- data/test/dummy/tmp/cache/assets/D82/590/sprockets%2Fa6f6f970aa669d95690af983eb2b6a5c +0 -0
- data/test/dummy/tmp/cache/assets/D8D/440/sprockets%2F486b3eff5dce57385a599ef92be18c65 +0 -0
- data/test/dummy/tmp/cache/assets/D93/FF0/sprockets%2Fd06dd1928f37e37a29edb4dbaeb20403 +0 -0
- data/test/dummy/tmp/cache/assets/D99/350/sprockets%2F31bdb7fc1c62c06d71678d04fd0db9b8 +0 -0
- data/test/dummy/tmp/cache/assets/D9C/070/sprockets%2F9be5d5a71da06ce64d0ed17b3937e15d +0 -0
- data/test/dummy/tmp/cache/assets/D9E/5B0/sprockets%2Fd3f2f56488b7ac4890a2ad0bfef7c322 +0 -0
- data/test/dummy/tmp/cache/assets/DA4/020/sprockets%2F0fc75dd594e2c890f93a6dcd7332aaa8 +0 -0
- data/test/dummy/tmp/cache/assets/DA4/6B0/sprockets%2F17a2e22cd7356ee86da5d99f0a08bbf7 +0 -0
- data/test/dummy/tmp/cache/assets/DA5/470/sprockets%2Fa49ebde3ec35e12d52892e188a5cfd90 +0 -0
- data/test/dummy/tmp/cache/assets/DA6/D90/sprockets%2Fe3d875d9f2fb7341ae0e31f64c90e6bf +0 -0
- data/test/dummy/tmp/cache/assets/DA7/CA0/sprockets%2F0a03bffc91afd8872e8986daf8a2309b +0 -0
- data/test/dummy/tmp/cache/assets/DAD/FC0/sprockets%2F9b6809cd65f83a6bfaee80543f9e0ab7 +0 -0
- data/test/dummy/tmp/cache/assets/DC4/410/sprockets%2F7c23fbd015fe022d7eed035b4ff3a59c +0 -0
- data/test/dummy/tmp/cache/assets/DCB/CA0/sprockets%2F940121ecc7ae38abf79cc78efadf2212 +0 -0
- data/test/dummy/tmp/cache/assets/DCC/C10/sprockets%2F7cb37eb6b6ca3028ffd5c5420d8d7fc1 +0 -0
- data/test/dummy/tmp/cache/assets/DCD/4E0/sprockets%2Fcff1de305ed821d80d98f4cafa27414d +0 -0
- data/test/dummy/tmp/cache/assets/E07/1E0/sprockets%2Fd79ac6cbbaf490e5a3f09ab8288d3c9e +0 -0
- data/test/dummy/tmp/cache/assets/E39/680/sprockets%2F1e91e9837edc18aeeaf8df3c82f2af0e +0 -0
- data/test/dummy/tmp/cache/assets/E56/670/sprockets%2Fbd0e4d12cea996e0d2eebaa879a17eca +0 -0
- data/test/dummy/tmp/cache/assets/E57/150/sprockets%2Fdfa6edddd9357edcafaf06c20d21e561 +0 -0
- data/test/dummy/tmp/cache/assets/E5B/2B0/sprockets%2Ffebbeb2ea0bcd485bf5b9bd6190b9f44 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/006eb7cc017cf18c3ea32cab97f0cc3c +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/00afdaa74ea16690227f771ae0879e1c +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/0125613fec11977628d50d4198ef25f3 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/04d6293b6d7c30b20475e886dc634936 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/0c6b5095a86cd9aa4d15f4258a08f315 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/17a2e22cd7356ee86da5d99f0a08bbf7 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/192691b9e0bedebfde12633bb3629d0b +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/1e91e9837edc18aeeaf8df3c82f2af0e +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/1f0b25ca08195d3582e4fe04396e9270 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/23659e6e2161bb90c6f382ecbef73906 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/23b9bf2d5f9b45144a2803844eaa826e +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/243cc575289b3170af701574d19d6353 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/24abc0717cf109a24278323c0d6756a0 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/2b6cc5f28a12c36cd4095832a5107969 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/326592f095651b767387e7c1d2b01dfe +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/3bb822a002a8951f71e53f450090799b +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/3f91dad02acd15d7437b62ddca53c58b +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/486b3eff5dce57385a599ef92be18c65 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/48cd49adc4f96c8324c46c45641b6865 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/4b5d99d538ae32ad329cb37e413dbacc +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/4e89e9cec1b5e275bfeb078a9abfef44 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/510aa1c63fe533f77a197367b79f2919 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/5cf60638cb580f41112a5a83eb3b72ef +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/5dfbbe7f012f6cb7c29b1298cd9ff406 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/640ab72cec151bc94248b091f6b763bb +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/6760a9b2947edeec5433ca0ff9d7a295 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/6b74e64b0422b8c574caba3a1746acd2 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/6c2f18f7338d56feecce32780357521c +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/6f292799ddb92a69f64c5a60c921a2d6 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/731ed4a2128ad4c7240bb520611c8404 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/73d738bf9b779ad016ed62131d85cc16 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/7477fb841e65b8c9c48c40c13935a851 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/77412054774bd02630c93c1e8ac6b26a +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/7751914469530dae0646d92467e9d72e +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/794a40bf52fa0deda8b4e5efa8ac523a +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/7af0bd97720d268b9835405c8bae2d06 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/82ecc84179ce77914906a81d29b483cf +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/8d62150b658b3a8b6fed7e8951f52392 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/8e51b269010978fe78fa369f6dfa1bf6 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/8e8d04799794da144a9907a9f82e0cf8 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/8ea331810c31cbe1ba34b91a02f769e7 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/8fd1601c6d442f22a88d0e43bb87117f +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/953bc37b1ee0915247dba29773960202 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/978f6f32b21b72d3e89b0c0f6f3a4a83 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/994386d11af17e88b6d107b83f41f8b5 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/9b077a68a557a208cf34297edadebdd2 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/9b54afa4ef026f4c288feeec49f2f526 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/9b6809cd65f83a6bfaee80543f9e0ab7 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/9be5d5a71da06ce64d0ed17b3937e15d +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/a29d0dc527ff5ce1252ccf6370514620 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/a49ebde3ec35e12d52892e188a5cfd90 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/a6108a4fca3b4012f99dcf46e24f5f60 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/aad6778bf60f6f1919628606c92cfd6f +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/ab142f83166b2fc048379c9dfddd355a +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/ae3344670b608424cdc864eca5496fb9 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/b01583a39abd5ce0a3d2b2967c6f75bd +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/b2780e7c581a2f0cb1d61346c6d1c1cd +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/b3f0354298e8a43af381a6e42a03f0bc +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/b52b477f01cb65c5e1c6a91f6f0be20c +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/b6fbc3e4c5191de2cc58174a3eeb7cfc +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/bb39143b57041f96c48b71e92f7e09f2 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/be0b9e741941205338510e296868aab2 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/c9e69990b1552b575b271aaabbfc4eb5 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/c9eeea792acbd377e29de43d6b491291 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/cb67795d1180b371b5b749662b9adefb +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/cfdf466647e83eb93e0d6630e4b51a25 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/cff1de305ed821d80d98f4cafa27414d +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/d5891eb52eb6329a928461796e9ddfe5 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/d7491740e7757fe2ec57fd6d25461e5c +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/d80f54242a6e7f4399481b7357d439a4 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/df16db3bfcc56fafc73b853b7999be1f +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/dfa6edddd9357edcafaf06c20d21e561 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/e3d875d9f2fb7341ae0e31f64c90e6bf +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/e7bd439b274a2155050b47e5a64ea72d +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/ee3d10401f2a2d4a84f4fe56181fe1c1 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/f14a2366122e6017b965b32290b8abb0 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/f9a412f49281cc7e6512f0787f7ba05f +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/febbeb2ea0bcd485bf5b9bd6190b9f44 +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/00afdaa74ea16690227f771ae0879e1c +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/73d738bf9b779ad016ed62131d85cc16 +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/dfa6edddd9357edcafaf06c20d21e561 +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/febbeb2ea0bcd485bf5b9bd6190b9f44 +0 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/redis_analytics_test.rb +7 -0
- data/test/test_helper.rb +15 -0
- data/{lib/redis_analytics/dashboard/public/javascripts/vendor/bootstrap → vendor/assets/javascripts/redis_analytics}/bootstrap.min.js +0 -0
- data/vendor/assets/javascripts/redis_analytics/engine.js +15 -0
- data/{lib/redis_analytics/dashboard/public/javascripts/vendor → vendor/assets/javascripts/redis_analytics}/jquery-jvectormap-1.2.2.min.js +0 -0
- data/{lib/redis_analytics/dashboard/public/javascripts/vendor → vendor/assets/javascripts/redis_analytics}/jquery-jvectormap-world-mill-en.js +0 -0
- data/{lib/redis_analytics/dashboard/public/javascripts/vendor → vendor/assets/javascripts/redis_analytics}/morris.min.js +0 -0
- data/{lib/redis_analytics/dashboard/public/javascripts/vendor → vendor/assets/javascripts/redis_analytics}/raphael-min.js +0 -0
- data/{lib/redis_analytics/dashboard/public/css → vendor/assets/stylesheets/redis_analytics}/bootstrap-responsive.min.css +0 -0
- data/{lib/redis_analytics/dashboard/public/css → vendor/assets/stylesheets/redis_analytics}/bootstrap.min.css +0 -0
- data/vendor/assets/stylesheets/redis_analytics/engine.css +12 -0
- data/{lib/redis_analytics/dashboard/public/css → vendor/assets/stylesheets/redis_analytics}/jquery-jvectormap-1.2.2.css +0 -0
- data/{lib/redis_analytics/dashboard/public/css → vendor/assets/stylesheets/redis_analytics}/morris.css +0 -0
- metadata +307 -122
- data/bin/redis_analytics_dashboard +0 -17
- data/lib/redis_analytics/analytics.rb +0 -45
- data/lib/redis_analytics/api.rb +0 -60
- data/lib/redis_analytics/dashboard.rb +0 -53
- data/lib/redis_analytics/dashboard/public/img/favicon.ico +0 -0
- data/lib/redis_analytics/dashboard/public/img/glyphicons-halflings-white.png +0 -0
- data/lib/redis_analytics/dashboard/public/img/glyphicons-halflings.png +0 -0
- data/lib/redis_analytics/dashboard/public/javascripts/vendor/jquery-1.9.1.min.js +0 -5
- data/lib/redis_analytics/dashboard/views/activity.erb +0 -7
- data/lib/redis_analytics/dashboard/views/dialogs/unique_visits.erb +0 -41
- data/lib/redis_analytics/dashboard/views/dialogs/visits.erb +0 -40
- data/lib/redis_analytics/dashboard/views/layout.erb +0 -16
- data/lib/redis_analytics/dashboard/views/widgets/visit_duration.erb +0 -3
- data/lib/redis_analytics/railtie.rb +0 -13
- data/wsd.png +0 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: b0ef5f23c2318259c84c82a4bdadc2807a98b9f4
|
|
4
|
+
data.tar.gz: f7d5120d54362f3db06621fc3a0d2a8d49de5e56
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: dbf6336fa2e451e0a96cb19f0431a6d26ae9677f42442b8ec75a600f1d80d0b9006d1eedb950e5be8e57974017979622c887311c4be58a3f5231bdcf89c1aa0f
|
|
7
|
+
data.tar.gz: caeb72ecf45491fbd8c147e1388c9a1dbd209ac903ea6820d2f814696884cb5dac16f08d045273252b1b909ea6bff5d79cae61350c6c92aa00e2949d50bbdcc7
|
data/Gemfile.lock
CHANGED
|
@@ -1,57 +1,176 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
redis_analytics (0.
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
json
|
|
9
|
-
|
|
10
|
-
redis
|
|
11
|
-
|
|
4
|
+
redis_analytics (0.7.0)
|
|
5
|
+
browser
|
|
6
|
+
geoip
|
|
7
|
+
jquery-rails
|
|
8
|
+
json
|
|
9
|
+
rails (>= 3.2.0, < 5)
|
|
10
|
+
redis
|
|
11
|
+
sqlite3
|
|
12
12
|
|
|
13
13
|
GEM
|
|
14
14
|
remote: http://rubygems.org/
|
|
15
15
|
specs:
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
16
|
+
actionmailer (4.1.0)
|
|
17
|
+
actionpack (= 4.1.0)
|
|
18
|
+
actionview (= 4.1.0)
|
|
19
|
+
mail (~> 2.5.4)
|
|
20
|
+
actionpack (4.1.0)
|
|
21
|
+
actionview (= 4.1.0)
|
|
22
|
+
activesupport (= 4.1.0)
|
|
23
|
+
rack (~> 1.5.2)
|
|
24
|
+
rack-test (~> 0.6.2)
|
|
25
|
+
actionview (4.1.0)
|
|
26
|
+
activesupport (= 4.1.0)
|
|
27
|
+
builder (~> 3.1)
|
|
28
|
+
erubis (~> 2.7.0)
|
|
29
|
+
activemodel (4.1.0)
|
|
30
|
+
activesupport (= 4.1.0)
|
|
31
|
+
builder (~> 3.1)
|
|
32
|
+
activerecord (4.1.0)
|
|
33
|
+
activemodel (= 4.1.0)
|
|
34
|
+
activesupport (= 4.1.0)
|
|
35
|
+
arel (~> 5.0.0)
|
|
36
|
+
activesupport (4.1.0)
|
|
37
|
+
i18n (~> 0.6, >= 0.6.9)
|
|
38
|
+
json (~> 1.7, >= 1.7.7)
|
|
39
|
+
minitest (~> 5.1)
|
|
40
|
+
thread_safe (~> 0.1)
|
|
41
|
+
tzinfo (~> 1.1)
|
|
42
|
+
arel (5.0.0)
|
|
43
|
+
browser (0.4.1)
|
|
44
|
+
builder (3.2.2)
|
|
45
|
+
celluloid (0.15.2)
|
|
46
|
+
timers (~> 1.1.0)
|
|
47
|
+
celluloid-io (0.15.0)
|
|
48
|
+
celluloid (>= 0.15.0)
|
|
49
|
+
nio4r (>= 0.5.0)
|
|
50
|
+
coderay (1.1.0)
|
|
51
|
+
coveralls (0.7.0)
|
|
52
|
+
multi_json (~> 1.3)
|
|
53
|
+
rest-client
|
|
54
|
+
simplecov (>= 0.7)
|
|
55
|
+
term-ansicolor
|
|
56
|
+
thor
|
|
57
|
+
diff-lcs (1.2.5)
|
|
58
|
+
docile (1.1.3)
|
|
59
|
+
erubis (2.7.0)
|
|
60
|
+
fakeredis (0.4.3)
|
|
61
|
+
redis (~> 3.0.0)
|
|
62
|
+
ffi (1.9.3)
|
|
63
|
+
formatador (0.2.4)
|
|
64
|
+
geoip (1.4.0)
|
|
65
|
+
guard (2.6.0)
|
|
66
|
+
formatador (>= 0.2.4)
|
|
67
|
+
listen (~> 2.7)
|
|
68
|
+
lumberjack (~> 1.0)
|
|
69
|
+
pry (>= 0.9.12)
|
|
70
|
+
thor (>= 0.18.1)
|
|
71
|
+
guard-rspec (4.2.8)
|
|
72
|
+
guard (~> 2.1)
|
|
73
|
+
rspec (>= 2.14, < 4.0)
|
|
74
|
+
hike (1.2.3)
|
|
75
|
+
i18n (0.6.9)
|
|
76
|
+
jquery-rails (3.1.0)
|
|
77
|
+
railties (>= 3.0, < 5.0)
|
|
78
|
+
thor (>= 0.14, < 2.0)
|
|
79
|
+
json (1.8.1)
|
|
80
|
+
listen (2.7.1)
|
|
81
|
+
celluloid (>= 0.15.2)
|
|
82
|
+
celluloid-io (>= 0.15.0)
|
|
83
|
+
rb-fsevent (>= 0.9.3)
|
|
84
|
+
rb-inotify (>= 0.9)
|
|
85
|
+
lumberjack (1.0.5)
|
|
86
|
+
mail (2.5.4)
|
|
87
|
+
mime-types (~> 1.16)
|
|
88
|
+
treetop (~> 1.4.8)
|
|
89
|
+
metaclass (0.0.4)
|
|
90
|
+
method_source (0.8.2)
|
|
91
|
+
mime-types (1.25.1)
|
|
92
|
+
minitest (5.3.2)
|
|
93
|
+
mocha (1.0.0)
|
|
26
94
|
metaclass (~> 0.0.1)
|
|
27
|
-
multi_json (1.
|
|
95
|
+
multi_json (1.9.2)
|
|
96
|
+
nio4r (1.0.0)
|
|
97
|
+
polyglot (0.3.4)
|
|
98
|
+
pry (0.9.12.6)
|
|
99
|
+
coderay (~> 1.0)
|
|
100
|
+
method_source (~> 0.8)
|
|
101
|
+
slop (~> 3.4)
|
|
28
102
|
rack (1.5.2)
|
|
29
|
-
rack-protection (1.5.0)
|
|
30
|
-
rack
|
|
31
103
|
rack-test (0.6.2)
|
|
32
104
|
rack (>= 1.0)
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
105
|
+
rails (4.1.0)
|
|
106
|
+
actionmailer (= 4.1.0)
|
|
107
|
+
actionpack (= 4.1.0)
|
|
108
|
+
actionview (= 4.1.0)
|
|
109
|
+
activemodel (= 4.1.0)
|
|
110
|
+
activerecord (= 4.1.0)
|
|
111
|
+
activesupport (= 4.1.0)
|
|
112
|
+
bundler (>= 1.3.0, < 2.0)
|
|
113
|
+
railties (= 4.1.0)
|
|
114
|
+
sprockets-rails (~> 2.0)
|
|
115
|
+
railties (4.1.0)
|
|
116
|
+
actionpack (= 4.1.0)
|
|
117
|
+
activesupport (= 4.1.0)
|
|
118
|
+
rake (>= 0.8.7)
|
|
119
|
+
thor (>= 0.18.1, < 2.0)
|
|
120
|
+
rake (10.2.2)
|
|
121
|
+
rb-fsevent (0.9.4)
|
|
122
|
+
rb-inotify (0.9.3)
|
|
123
|
+
ffi (>= 0.5.0)
|
|
124
|
+
redis (3.0.7)
|
|
125
|
+
rest-client (1.6.7)
|
|
126
|
+
mime-types (>= 1.16)
|
|
127
|
+
rspec (2.14.1)
|
|
128
|
+
rspec-core (~> 2.14.0)
|
|
129
|
+
rspec-expectations (~> 2.14.0)
|
|
130
|
+
rspec-mocks (~> 2.14.0)
|
|
131
|
+
rspec-core (2.14.8)
|
|
132
|
+
rspec-expectations (2.14.5)
|
|
133
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
|
134
|
+
rspec-mocks (2.14.6)
|
|
135
|
+
simplecov (0.8.2)
|
|
136
|
+
docile (~> 1.1.0)
|
|
137
|
+
multi_json
|
|
138
|
+
simplecov-html (~> 0.8.0)
|
|
139
|
+
simplecov-html (0.8.0)
|
|
140
|
+
slop (3.5.0)
|
|
141
|
+
sprockets (2.12.0)
|
|
142
|
+
hike (~> 1.2)
|
|
143
|
+
multi_json (~> 1.0)
|
|
144
|
+
rack (~> 1.0)
|
|
145
|
+
tilt (~> 1.1, != 1.3.0)
|
|
146
|
+
sprockets-rails (2.1.1)
|
|
147
|
+
actionpack (>= 3.0)
|
|
148
|
+
activesupport (>= 3.0)
|
|
149
|
+
sprockets (~> 2.8)
|
|
150
|
+
sqlite3 (1.3.9)
|
|
151
|
+
term-ansicolor (1.3.0)
|
|
152
|
+
tins (~> 1.0)
|
|
153
|
+
thor (0.19.1)
|
|
154
|
+
thread_safe (0.3.3)
|
|
155
|
+
tilt (1.4.1)
|
|
156
|
+
timers (1.1.0)
|
|
157
|
+
tins (1.1.0)
|
|
158
|
+
treetop (1.4.15)
|
|
159
|
+
polyglot
|
|
160
|
+
polyglot (>= 0.3.1)
|
|
161
|
+
tzinfo (1.1.0)
|
|
162
|
+
thread_safe (~> 0.1)
|
|
48
163
|
|
|
49
164
|
PLATFORMS
|
|
50
165
|
ruby
|
|
51
166
|
|
|
52
167
|
DEPENDENCIES
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
168
|
+
coveralls
|
|
169
|
+
fakeredis
|
|
170
|
+
guard-rspec
|
|
171
|
+
mocha
|
|
172
|
+
rack-test
|
|
173
|
+
rake
|
|
56
174
|
redis_analytics!
|
|
57
|
-
rspec
|
|
175
|
+
rspec
|
|
176
|
+
simplecov
|
data/{LICENSE → MIT-LICENSE}
RENAMED
|
File without changes
|
data/README.md
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
### What is redis_analytics?
|
|
4
4
|
|
|
5
|
-
A gem that
|
|
5
|
+
A ruby gem that uses redis to track web analytics for your rails apps
|
|
6
6
|
|
|
7
7
|
### Why should I use it?
|
|
8
8
|
|
|
9
|
-
It gives you detailed analytics about visitors, unique visitors, browsers, OS, visitor recency, traffic sources
|
|
9
|
+
It gives you detailed analytics about visitors, unique visitors, browsers, OS, visitor recency, traffic sources, etc
|
|
10
10
|
|
|
11
11
|
### Does it have a cool dashboard?
|
|
12
12
|
|
|
@@ -14,11 +14,9 @@ Yes, It uses the excellent [Morris.js](http://www.oesmith.co.uk/morris.js/) for
|
|
|
14
14
|
|
|
15
15
|

|
|
16
16
|
|
|
17
|
-
###
|
|
17
|
+
### Cool! So how do I install it?
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
or in your `Gemfile`
|
|
19
|
+
In your `Gemfile`
|
|
22
20
|
|
|
23
21
|
```ruby
|
|
24
22
|
gem 'redis_analytics'
|
|
@@ -27,53 +25,36 @@ gem 'redis_analytics'
|
|
|
27
25
|
Make sure your redis server is running! Redis configuration is outside the scope of this README, but
|
|
28
26
|
check out the [Redis documentation](http://redis.io/documentation).
|
|
29
27
|
|
|
30
|
-
### How do I enable tracking in my
|
|
31
|
-
|
|
32
|
-
#### Step 1: Load the redis_analytics library and configure it
|
|
28
|
+
### How do I enable tracking in my rails apps?
|
|
33
29
|
|
|
34
30
|
```ruby
|
|
35
|
-
# this is not required unless you use :require => false in your Gemfile
|
|
36
31
|
require 'redis_analytics'
|
|
37
32
|
|
|
38
|
-
# configure your
|
|
39
|
-
|
|
33
|
+
# configure your redis_connection (mandatory) and redis_namespace (optional)
|
|
34
|
+
RedisAnalytics.configure do |configuration|
|
|
40
35
|
configuration.redis_connection = Redis.new(:host => 'localhost', :port => '6379')
|
|
41
36
|
configuration.redis_namespace = 'ra'
|
|
42
37
|
end
|
|
43
38
|
```
|
|
44
|
-
#### Step 2: Use the Tracker rack middleware (NOT REQUIRED FOR RAILS)
|
|
45
|
-
|
|
46
|
-
```ruby
|
|
47
|
-
# in Sinatra you would do...
|
|
48
|
-
use Rack::RedisAnalytics::Tracker
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
For rails the middleware is added automatically, so you do not need to add it manually using `config.middleware.use`
|
|
52
39
|
|
|
53
40
|
### Where can I see the dashboard?
|
|
54
41
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
You can also run the standalone dashboard sinatra app like:
|
|
58
|
-
|
|
59
|
-
`redis_analytics_dashboard --redis-host 127.0.0.1 --redis-port 6379 --redis-namespace ra`
|
|
60
|
-
|
|
61
|
-
### Where do I change the dashboard URL endpoint?
|
|
62
|
-
|
|
63
|
-
Set a dashboard endpoint in your configuration:
|
|
42
|
+
The Dashboard is a `Rails::Engine`. Just mount it into your `routes.rb` file at your favorite endpoint
|
|
64
43
|
|
|
65
44
|
```ruby
|
|
66
|
-
|
|
67
|
-
|
|
45
|
+
Rails.application.routes.draw do
|
|
46
|
+
mount RedisAnalytics::Dashboard::Engine => "/dashboard"
|
|
68
47
|
end
|
|
69
48
|
```
|
|
70
49
|
|
|
71
|
-
|
|
50
|
+
and navigate to `/dashboard` in your app
|
|
72
51
|
|
|
73
|
-
|
|
52
|
+
### What if I have multiple rails apps that I want to track as one single website?
|
|
53
|
+
|
|
54
|
+
Just make sure you use the same `redis_connection` and `redis_namespace` in the configuration for all your rails apps
|
|
74
55
|
|
|
75
56
|
```ruby
|
|
76
|
-
|
|
57
|
+
RedisAnalytics.configure do |configuration|
|
|
77
58
|
configuration.redis_connection = Redis.new(:host => 'localhost', :port => '6379')
|
|
78
59
|
configuration.redis_namespace = 'mywebsite.org'
|
|
79
60
|
end
|
|
@@ -86,7 +67,7 @@ Also it is recommended to regularly get an updated binary of 'GeoLite Country' d
|
|
|
86
67
|
You will then need to point to the GeoIP.dat file in your configuration.
|
|
87
68
|
|
|
88
69
|
```ruby
|
|
89
|
-
|
|
70
|
+
RedisAnalytics.configure do |configuration|
|
|
90
71
|
configuration.redis_connection = Redis.new(:host => 'localhost', :port => '6379')
|
|
91
72
|
configuration.redis_namespace = 'mywebsite.org'
|
|
92
73
|
configuration.geo_ip_data_path = '/path/to/GeoIP.dat'
|
|
@@ -97,55 +78,71 @@ end
|
|
|
97
78
|
|
|
98
79
|
### Tracking custom metrics
|
|
99
80
|
|
|
100
|
-
You can define
|
|
81
|
+
You can define how to track custom metrics by creating an instance method inside the `RedisAnalytics::Metrics` module
|
|
82
|
+
|
|
83
|
+
```ruby
|
|
84
|
+
module RedisAnalytics::Metrics
|
|
85
|
+
|
|
86
|
+
# methods to track custom metrics
|
|
87
|
+
|
|
88
|
+
end
|
|
89
|
+
```
|
|
101
90
|
|
|
102
|
-
|
|
91
|
+
RedisAnalytics only looks for method names which conform to the following format:
|
|
103
92
|
|
|
104
93
|
`[abc]_[x]_per_[y]`
|
|
105
94
|
|
|
106
95
|
where
|
|
107
96
|
|
|
108
97
|
* `abc` is a metric name
|
|
109
|
-
* `x` can be any one of `ratio` or `count` and defines
|
|
110
|
-
* `y` can be any one of `hit` or `visit` and defines how will be tracked
|
|
98
|
+
* `x` can be any one of `ratio` or `count` and defines the type of the metric
|
|
99
|
+
* `y` can be any one of `hit` or `visit` and defines how the metric will be tracked (once per hit or once per visit)
|
|
111
100
|
|
|
112
|
-
The return value of the method should be `Fixnum` for `count` and `String` for `ratio`
|
|
101
|
+
The return value of the method is important and should be `Fixnum` for `count` and `String` for `ratio` failing which, your metric might not work!
|
|
113
102
|
|
|
114
|
-
If the return value is an `error` or `nil` the metric won't be tracked
|
|
103
|
+
If the return value is an `error` or `nil` the metric won't be tracked at all
|
|
115
104
|
|
|
116
|
-
You can access the `Rack::Request` object via `@rack_request` and the `Rack::Response` object via `@rack_response` in your
|
|
105
|
+
You can access the `Rack::Request` object via `@rack_request` and the `Rack::Response` object via `@rack_response` in your methods
|
|
117
106
|
|
|
118
|
-
You are free to define other methods that do not have the above format in the `Metrics` module as helper methods
|
|
107
|
+
You are free to define other methods that do not have the above format in the `Metrics` module as helper methods
|
|
119
108
|
|
|
120
109
|
```ruby
|
|
121
|
-
module
|
|
110
|
+
module RedisAnalytics::Metrics
|
|
122
111
|
|
|
123
|
-
#
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
112
|
+
# TRACKING RATIOS
|
|
113
|
+
|
|
114
|
+
# i want to track ratio of product views per product_id & user_id using query params
|
|
115
|
+
def user_product_views_ratio_per_hit
|
|
116
|
+
if @rack_request.path == '/product/info'
|
|
117
|
+
return "#{@rack_request.params['product_id']}_#{@rack_request.params['user_id']}"
|
|
127
118
|
end
|
|
128
119
|
end
|
|
129
120
|
|
|
130
|
-
#
|
|
131
|
-
def
|
|
132
|
-
if @
|
|
133
|
-
return
|
|
121
|
+
# i want to track ratio of sold products by product_id using the URL `/products/:id/sale`
|
|
122
|
+
def product_sales_ratio_per_hit
|
|
123
|
+
if @rack_request.path =~ Regexp.new("\/product\/([0-9]+)\/sale")
|
|
124
|
+
return $1
|
|
134
125
|
end
|
|
135
126
|
end
|
|
136
127
|
|
|
137
|
-
#
|
|
128
|
+
# TRACKING COUNTS
|
|
129
|
+
|
|
130
|
+
# i want to track how many times a visitor reached the payment step
|
|
138
131
|
def payment_step_count_per_hit
|
|
139
|
-
return 1 if @
|
|
132
|
+
return 1 if @rack_request.path == '/payment'
|
|
140
133
|
end
|
|
141
134
|
|
|
142
135
|
end
|
|
143
136
|
```
|
|
144
137
|
|
|
138
|
+
### Customizing the dashboard
|
|
139
|
+
|
|
140
|
+
Coming soon
|
|
141
|
+
|
|
145
142
|
### Using filters
|
|
146
143
|
|
|
147
144
|
```ruby
|
|
148
|
-
|
|
145
|
+
RedisAnalytics.configure do |configuration|
|
|
149
146
|
|
|
150
147
|
# simple string path filter
|
|
151
148
|
configuration.add_path_filter('/robots.txt')
|
|
@@ -166,15 +163,8 @@ Rack::RedisAnalytics.configure do |configuration|
|
|
|
166
163
|
end
|
|
167
164
|
```
|
|
168
165
|
|
|
169
|
-
## How does it work?
|
|
170
|
-
|
|
171
|
-

|
|
172
|
-
|
|
173
166
|
## License
|
|
174
167
|
|
|
175
|
-
Since redis_analytics is licensed under MIT, you can use redis_analytics, provided you leave the attribution as is, in code as well as on the dashboard pages
|
|
176
|
-
|
|
177
|
-
Copyright (c) 2012-2013 Schubert Cardozo. See [LICENSE!](LICENSE) for further details.
|
|
178
|
-
|
|
179
|
-
|
|
168
|
+
Since redis_analytics is licensed under MIT, you can use redis_analytics for free, provided you leave the attribution as is, in code as well as on the dashboard pages
|
|
180
169
|
|
|
170
|
+
Copyright (c) 2012-2014 Schubert Cardozo. See [MIT-LICENSE!](MIT-LICENSE) for further details.
|
data/TODO.md
CHANGED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
module RedisAnalytics
|
|
2
|
+
class ApiController < ApplicationController
|
|
3
|
+
|
|
4
|
+
def visits
|
|
5
|
+
to_date_time = Date.parse(params[:to_date_time]).to_time rescue Time.now
|
|
6
|
+
unit = params[:unit] || 'day'
|
|
7
|
+
aggregate = (params[:aggregate] == 'yes')
|
|
8
|
+
units = (params[:unit_count] || 1).to_i
|
|
9
|
+
p = params[:metrics].split(',')
|
|
10
|
+
from_date_time = to_date_time - units.send(unit)
|
|
11
|
+
results = []
|
|
12
|
+
|
|
13
|
+
p.each_with_index do |q, j|
|
|
14
|
+
result = self.send("#{unit}ly_#{q}", from_date_time, :to_date => to_date_time, :aggregate => aggregate)
|
|
15
|
+
if result.is_a?(Array) # time range data (non-aggregate)
|
|
16
|
+
result.each_with_index do |r, i|
|
|
17
|
+
results[i] ||= {}
|
|
18
|
+
date_value = r[0][0..2]
|
|
19
|
+
time_value = r[0][3..-1]
|
|
20
|
+
date_time_value = []
|
|
21
|
+
date_time_value << date_value.join('-')
|
|
22
|
+
date_time_value << time_value.join(':') if time_value
|
|
23
|
+
# results[i]['raw'] = date_time_value.join(' ').strip
|
|
24
|
+
results[i]['unix'] = Time.mktime(*r[0].map(&:to_i)).to_i
|
|
25
|
+
strf = case unit
|
|
26
|
+
when 'minute'
|
|
27
|
+
'%H%Mhrs'
|
|
28
|
+
when 'hour'
|
|
29
|
+
'%a %H00hrs'
|
|
30
|
+
when 'day'
|
|
31
|
+
'%a'
|
|
32
|
+
when 'month'
|
|
33
|
+
'%b'
|
|
34
|
+
when 'year'
|
|
35
|
+
'%Y'
|
|
36
|
+
end
|
|
37
|
+
results[i]['raw'] = Time.at(results[i]['unix']).strftime(strf)
|
|
38
|
+
results[i][q] = r[1]
|
|
39
|
+
end
|
|
40
|
+
elsif result.is_a?(Hash) or result.is_a?(Fixnum) # aggregate data
|
|
41
|
+
results[j] = {q => result}
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
render :json => results
|
|
45
|
+
rescue Exception => e
|
|
46
|
+
render :status => 500, :text => [e.message, e.backtrace]
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
end
|
|
50
|
+
end
|