referer_tracking 4.5.0 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +0 -2
  3. data/app/models/referer_tracking/tracking.rb +6 -3
  4. data/lib/referer_tracking/controller_addons.rb +43 -18
  5. data/lib/referer_tracking/version.rb +1 -1
  6. metadata +22 -515
  7. data/test/dummy/Rakefile +0 -7
  8. data/test/dummy/app/assets/config/manifest.js +0 -1
  9. data/test/dummy/app/assets/javascripts/application.js +0 -9
  10. data/test/dummy/app/assets/javascripts/users.js +0 -2
  11. data/test/dummy/app/assets/stylesheets/application.css +0 -7
  12. data/test/dummy/app/assets/stylesheets/scaffold.css +0 -56
  13. data/test/dummy/app/assets/stylesheets/users.css +0 -4
  14. data/test/dummy/app/controllers/application_controller.rb +0 -6
  15. data/test/dummy/app/controllers/users_controller.rb +0 -103
  16. data/test/dummy/app/helpers/application_helper.rb +0 -2
  17. data/test/dummy/app/helpers/users_helper.rb +0 -2
  18. data/test/dummy/app/models/user.rb +0 -5
  19. data/test/dummy/app/views/layouts/application.html.erb +0 -14
  20. data/test/dummy/app/views/users/_form.html.erb +0 -21
  21. data/test/dummy/app/views/users/edit.html.erb +0 -6
  22. data/test/dummy/app/views/users/index.html.erb +0 -1
  23. data/test/dummy/app/views/users/new.html.erb +0 -5
  24. data/test/dummy/app/views/users/show.html.erb +0 -10
  25. data/test/dummy/config/application.rb +0 -45
  26. data/test/dummy/config/boot.rb +0 -10
  27. data/test/dummy/config/database.yml +0 -25
  28. data/test/dummy/config/environment.rb +0 -5
  29. data/test/dummy/config/environments/development.rb +0 -29
  30. data/test/dummy/config/environments/production.rb +0 -62
  31. data/test/dummy/config/environments/test.rb +0 -39
  32. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  33. data/test/dummy/config/initializers/inflections.rb +0 -10
  34. data/test/dummy/config/initializers/mime_types.rb +0 -5
  35. data/test/dummy/config/initializers/referer_tracking.rb +0 -1
  36. data/test/dummy/config/initializers/secret_token.rb +0 -8
  37. data/test/dummy/config/initializers/session_store.rb +0 -8
  38. data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  39. data/test/dummy/config/locales/en.yml +0 -5
  40. data/test/dummy/config/routes.rb +0 -9
  41. data/test/dummy/config.ru +0 -4
  42. data/test/dummy/db/development.sqlite3 +0 -0
  43. data/test/dummy/db/migrate/20120119111039_create_users.rb +0 -9
  44. data/test/dummy/db/migrate/20120418183653_table_rename.rb +0 -13
  45. data/test/dummy/db/schema.rb +0 -45
  46. data/test/dummy/db/test.sqlite3 +0 -0
  47. data/test/dummy/log/development.log +0 -146
  48. data/test/dummy/log/test.log +0 -28049
  49. data/test/dummy/public/404.html +0 -26
  50. data/test/dummy/public/422.html +0 -26
  51. data/test/dummy/public/500.html +0 -26
  52. data/test/dummy/public/favicon.ico +0 -0
  53. data/test/dummy/script/rails +0 -6
  54. data/test/dummy/test/fixtures/users.yml +0 -7
  55. data/test/dummy/tmp/cache/assets/CAA/620/sprockets%2F87b209c0c9da28094a8d5581a21262c6 +0 -0
  56. data/test/dummy/tmp/cache/assets/CDF/070/sprockets%2F70e3c8a3916622c17858d520dcee0d92 +0 -0
  57. data/test/dummy/tmp/cache/assets/CF0/1D0/sprockets%2F6fc757c2c8329244ca95d6909865bbc2 +0 -0
  58. data/test/dummy/tmp/cache/assets/D11/D20/sprockets%2Fcac21eac42152981882bf9e489316af4 +0 -0
  59. data/test/dummy/tmp/cache/assets/D27/530/sprockets%2F4f6982cf32d995b6ac3bce79729b6435 +0 -374
  60. data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  61. data/test/dummy/tmp/cache/assets/D39/8B0/sprockets%2Ff3fdaca7531a71f4014b287f392e7b08 +0 -377
  62. data/test/dummy/tmp/cache/assets/D46/650/sprockets%2Ff56253b5f374fff1a33fbbc9881c9124 +0 -0
  63. data/test/dummy/tmp/cache/assets/D54/ED0/sprockets%2F71c9fa01091d432b131da3bb73faf3d4 +0 -0
  64. data/test/dummy/tmp/cache/assets/D61/6B0/sprockets%2Fcb11afa26a559c0c626de8b4b720f554 +0 -9271
  65. data/test/dummy/tmp/cache/assets/D73/220/sprockets%2F3dbc0a37f98fb43ec819b85a64d32c55 +0 -0
  66. data/test/dummy/tmp/cache/assets/D84/210/sprockets%2Fabd0103ccec2b428ac62c94e4c40b384 +0 -9651
  67. data/test/dummy/tmp/cache/assets/D9A/830/sprockets%2F97b0ba4e6b920af1eb0c96a299f28b3b +0 -9268
  68. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  69. data/test/dummy/tmp/cache/assets/sprockets/v3.0/2c/2cmx78HHFtUJ_moZQYLRA1xgWz9_WPCl2iqNJsvdbiM.cache +0 -1
  70. data/test/dummy/tmp/cache/assets/sprockets/v3.0/2k/2k-njHwbpW920uPBaEpcue86NrC7Hcd05j1VR3EZync.cache +0 -0
  71. data/test/dummy/tmp/cache/assets/sprockets/v3.0/5b/5biJe43O-0O4crJwYAa7_nO64aiJhGTYjtUueOuC_is.cache +0 -1
  72. data/test/dummy/tmp/cache/assets/sprockets/v3.0/93/93Ku-6KPiY-60WSo2HETa51xVHPgXa4WJX5Uv-wAWAQ.cache +0 -1
  73. data/test/dummy/tmp/cache/assets/sprockets/v3.0/AP/AP6o_YPNWKy9zHLd5cKfcigb_AIYYx9BQgrutmxZJRI.cache +0 -0
  74. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Ac/Acgs9o3MIUUfLt9mLhpkGV4bWMk0c4HD9NMCKV40KWM.cache +0 -0
  75. data/test/dummy/tmp/cache/assets/sprockets/v3.0/CR/CRKJnPJGBJ_Dy0-QfKhF5WPh6Gj5skuy0TXmBjMTSnQ.cache +0 -0
  76. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Dm/DmmfrCpXtt74Hr6NO54lxyOCDv6klnDyBqeDFR7oDU8.cache +0 -0
  77. data/test/dummy/tmp/cache/assets/sprockets/v3.0/EH/EHtJZlbRr0XpqH8VpYwd1n2RscSRWAOCX0iB3wpgWGo.cache +0 -2
  78. data/test/dummy/tmp/cache/assets/sprockets/v3.0/H-/H-y0Yk2LBlS6mPkAU-Ga5JhkYyh0dVNVMqaF-W6PFxw.cache +0 -3
  79. data/test/dummy/tmp/cache/assets/sprockets/v3.0/IJ/IJ8ElaMFALDqzdETIWgY8Ax7KJXh8akX9X0FyMOuGss.cache +0 -0
  80. data/test/dummy/tmp/cache/assets/sprockets/v3.0/JI/JIhTmLF72w8zL2CiAlo0rK-OrZ0B2hQ5QjYIFN_GLgI.cache +0 -0
  81. data/test/dummy/tmp/cache/assets/sprockets/v3.0/JP/JPc_KuUY6_Ahtu7ucIQTkgVm0pV0Cxjneop9jamp85g.cache +0 -1
  82. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Js/Js14cgaqqSpuUEccMkdmdvR2BI_Vt2Qs5KLiK5D7av8.cache +0 -1
  83. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Ju/Jutw6Rj0FSocTHtJXYbtw0LdUcLAZ8UikAzo_o2MqLM.cache +0 -0
  84. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Ka/KagYVzDXOrwIV8OqoCjrLu5kwqlqtzrwhLbuOdO_Lrs.cache +0 -1
  85. data/test/dummy/tmp/cache/assets/sprockets/v3.0/L_/L_TkUn9_VwUmKllp4LTxZPoFZhQqDJ5LdN6C4dLZMHY.cache +0 -0
  86. data/test/dummy/tmp/cache/assets/sprockets/v3.0/M4/M4tC0iiffEPr59-_9rDBPz7hW5dT21_6-lDvMXz0RDY.cache +0 -0
  87. data/test/dummy/tmp/cache/assets/sprockets/v3.0/MH/MHjWQyW87MB3935yX7faTJs78U_q8hZzHNNTcLN1PT4.cache +0 -3
  88. data/test/dummy/tmp/cache/assets/sprockets/v3.0/N7/N7zP8wm5MiV4STIoPEnCUnkXqivzPUT53j8UwchoL-k.cache +0 -0
  89. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Uz/UzPJJZKw4rpMT2bxQwJuoe9US4s1FVDWwFxa-dkDFCo.cache +0 -1
  90. data/test/dummy/tmp/cache/assets/sprockets/v3.0/XS/XSNwmxjyrFikkyy0vjCTtFHT0rpH55uEBUHADoq9nKA.cache +0 -0
  91. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Yr/YrTrK88uscJSzLxAkni4AP3DcCgRnBgUEpGv9Wp3amk.cache +0 -1
  92. data/test/dummy/tmp/cache/assets/sprockets/v3.0/_L/_L5HgSK_wumfqnP75mB222WJBijCwVTKaP6aDWxRylc.cache +0 -1
  93. data/test/dummy/tmp/cache/assets/sprockets/v3.0/_U/_U5PROuRlRvYODxGigRIEnjl72IgqyK0FygnCj_Vshg.cache +0 -1
  94. data/test/dummy/tmp/cache/assets/sprockets/v3.0/aK/aKfRVfkNjadngUWgjM6l3tpd1R0tBMVOGq0zmitb8lc.cache +0 -0
  95. data/test/dummy/tmp/cache/assets/sprockets/v3.0/aQ/aQoXZnppdm61nSE11Ss680Y0Upsh8-TT4WWZcgANI8s.cache +0 -1
  96. data/test/dummy/tmp/cache/assets/sprockets/v3.0/b4/b4bSF6LEaJe3w2FL_KqGBHNvDsL4AQrt2QSEBYPirnM.cache +0 -1
  97. data/test/dummy/tmp/cache/assets/sprockets/v3.0/cb/cb1En-wWowTDy305CAUFD3y_HgoyABsO43k1RaeZ2Yw.cache +0 -0
  98. data/test/dummy/tmp/cache/assets/sprockets/v3.0/dM/dMQaKOLcpCZ3Vvn8mgWMveuO03TRJsl33DEzyMWycEo.cache +0 -1
  99. data/test/dummy/tmp/cache/assets/sprockets/v3.0/dg/dgShmOoDRE4is6u2eg610LdtDk9jFgSDHmHZN_ccLmc.cache +0 -0
  100. data/test/dummy/tmp/cache/assets/sprockets/v3.0/ed/edZ1SpHyO0mz0vpyZrcv9LPCo3kpt_2AZBRpIxHGTxM.cache +0 -1
  101. data/test/dummy/tmp/cache/assets/sprockets/v3.0/fE/fEEB8V-7zl58hnko_zGpQDNOL7fG0PEzR0h5SpyBYhE.cache +0 -1
  102. data/test/dummy/tmp/cache/assets/sprockets/v3.0/g1/g1E9wGfeqvJatuTShi4bSINubsRft6ree93G4gxsoV8.cache +0 -0
  103. data/test/dummy/tmp/cache/assets/sprockets/v3.0/gS/gS3fatuku-xkc3GGm887naF-gdr16YpQsbJSWhwboQA.cache +0 -1
  104. data/test/dummy/tmp/cache/assets/sprockets/v3.0/iD/iDTnVSbZnIij5Xm4jkwCyIXAPDn8RwaRe5Ja8YPKibw.cache +0 -0
  105. data/test/dummy/tmp/cache/assets/sprockets/v3.0/ir/ir0sqLyW8xAzpw1ej4ZbB8gE-JNSbIA3gtIEOETp0GU.cache +0 -0
  106. data/test/dummy/tmp/cache/assets/sprockets/v3.0/jk/jkhYOgGwcRPwrqMh9yZ4Obqh0xLBodWlAj4jTpdJzbU.cache +0 -1
  107. data/test/dummy/tmp/cache/assets/sprockets/v3.0/jp/jpUy1Dtew4gtTFQizUVFfHdLk40FoJPK0NFZNTpd5VY.cache +0 -1
  108. data/test/dummy/tmp/cache/assets/sprockets/v3.0/k9/k9aRd28fGiCawGMasGhG7gj4WhgAc80ViY0aKlyy7AY.cache +0 -0
  109. data/test/dummy/tmp/cache/assets/sprockets/v3.0/lY/lYs0UokR743fbG1wJ4t9VWTVba42SOUm6F2HAGVWgnk.cache +0 -3
  110. data/test/dummy/tmp/cache/assets/sprockets/v3.0/nf/nfW6VHREUZeKueuW3Tlc_VIIqfwFpKNrQeGIokq6zck.cache +0 -0
  111. data/test/dummy/tmp/cache/assets/sprockets/v3.0/p8/p8GwHGWWAnLsIiI_bJGmLkNHu26B4wNIyMhtq85h-ck.cache +0 -0
  112. data/test/dummy/tmp/cache/assets/sprockets/v3.0/qp/qpYHEqUJcqJpx4Zm9PbO4LVVjAqI1wQUcy83KPrUK7M.cache +0 -1
  113. data/test/dummy/tmp/cache/assets/sprockets/v3.0/qv/qvP9mvAxiXeWokmJ-izRCt-2t3ws-3eywyVFEpi4qUU.cache +0 -1
  114. data/test/dummy/tmp/cache/assets/sprockets/v3.0/r6/r6KjMmQ9n_jOrJlySdyY3ghq7-QyiM3ai5wHX6eTp-g.cache +0 -1
  115. data/test/dummy/tmp/cache/assets/sprockets/v3.0/rb/rb_u_gHDnEZUoDZl9KxS9eteCoe-SaXymHkbl47PpVs.cache +0 -1
  116. data/test/dummy/tmp/cache/assets/sprockets/v3.0/s0/s02N7FukTN1s0egRDlsT3JJvb_jLR9D-3ZSl1fw4gxQ.cache +0 -1
  117. data/test/dummy/tmp/cache/assets/sprockets/v3.0/sf/sfXBmcNmexUfAs7KgTDPoDAaNZYDUSydp33PV4yudHw.cache +0 -1
  118. data/test/dummy/tmp/cache/assets/sprockets/v3.0/tO/tOxhErQwxvgr9JfRKZMxi1UpgzmM495rXbr8W37zOJY.cache +0 -1
  119. data/test/dummy/tmp/cache/assets/sprockets/v3.0/tY/tYr6b-dRgBs0t6PHVK4-DPCYGonZqDOt79_MdMBQfIs.cache +0 -0
  120. data/test/dummy/tmp/cache/assets/sprockets/v3.0/tb/tbvBptkPvGRBrkyVDhibdmwuzJGETGarYsioQ2yYoEs.cache +0 -3
  121. data/test/dummy/tmp/cache/assets/sprockets/v3.0/u1/u1n2hPPIyJio7Et2oBwwHpcIuks50r1SCwTTn4brCoY.cache +0 -1
  122. data/test/dummy/tmp/cache/assets/sprockets/v3.0/vY/vYs0RdDuRdFHhoZ4mTI7CCesaXrNdFtEUd2zKuveIIE.cache +0 -1
  123. data/test/dummy/tmp/cache/assets/sprockets/v3.0/we/weAiRO9OmZWR0dwLBnEXBEvRuWV9RXnOZ_2I4pF-_jo.cache +0 -1
  124. data/test/dummy/tmp/cache/assets/sprockets/v3.0/wn/wnvJ74QIdj8tSD10cXmY9KyXCpaQIv0FfZJWw-EudW8.cache +0 -0
  125. data/test/dummy/tmp/cache/assets/sprockets/v3.0/wv/wvrMP5KWADmenicQ0Ez5LSX0Lo_nEtq8afqxX5y6KC4.cache +0 -1
  126. data/test/dummy/tmp/cache/assets/sprockets/v3.0/x9/x9xhlrwLuOojnndztRS4C9uIDE-LjKIrWTIGnaKBWVo.cache +0 -1
  127. data/test/dummy/tmp/cache/assets/sprockets/v3.0/xP/xPMfTXGxxCCgIip6XsG-paelKjnDzbpAYugLmUfykPs.cache +0 -0
  128. data/test/dummy/tmp/cache/assets/sprockets/v3.0/y0/y0WduPcvMCWqXcU7KagyUSx0kDZs6ZxwSlzSLy_vxkw.cache +0 -0
  129. data/test/dummy/tmp/cache/assets/sprockets/v3.0/zN/zNWlVQtl-GZdt37fhVDBuT0ehONIucjtUm1AzGUMWOw.cache +0 -1
  130. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/CS/CS8nEse4iNQsIQp6JJMkrfiNOJ0C4AsDb2TR7hOGIH0.cache +0 -1
  131. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Dm/DmmfrCpXtt74Hr6NO54lxyOCDv6klnDyBqeDFR7oDU8.cache +0 -3
  132. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Ka/KagYVzDXOrwIV8OqoCjrLu5kwqlqtzrwhLbuOdO_Lrs.cache +0 -1
  133. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/U6/U6ujBBtVuScKUBOvp2wmpQO2qYG5QMZj9oFkEoWtF6E.cache +0 -0
  134. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/UZ/UZ_c1KkSJaaNhwYwe1v-89WvyVGicihlY6Zp1bXhq3M.cache +0 -0
  135. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/V-/V-CNkRRDXuu8o_FKw6oQPptxNYchi36Ctond2A9pFCM.cache +0 -0
  136. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/WI/WIhdpx5T1Wxi7u_C-fCzIVkEYsWzm9hcfsoi-hotpdE.cache +0 -0
  137. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Z4/Z41nxEwpWQWFoc3tdahPn8d-nQygg6rN5wPU0iWRYrA.cache +0 -1
  138. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/bP/bPBEsM47rrracC6h0DUpa76b38d_hdPadAGWeHXJIj8.cache +0 -3
  139. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/cG/cGfnqX6g3P0WuiBZ7nc-f8N13CSgrV163hKk2ry0-n8.cache +0 -1
  140. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/dz/dzSD3sm4znNDRdp04nrjxADibaOAuBl1B_WUyfsaNac.cache +0 -1
  141. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/i1/i1DwWMZeHC_QdByjF6bFQ3-UXJyXEvY7zJfsvk6rSl4.cache +0 -1
  142. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/iD/iDTnVSbZnIij5Xm4jkwCyIXAPDn8RwaRe5Ja8YPKibw.cache +0 -3
  143. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/l8/l8s8Rg4fjDwXddzNqmy9aLM9gcOiiuYpZZbbreeV7Xk.cache +0 -2
  144. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/m5/m52gbfVbAznVnzdJcivzel9TPhOOLSbJ8Rp4PByLHeo.cache +0 -0
  145. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/qp/qpYHEqUJcqJpx4Zm9PbO4LVVjAqI1wQUcy83KPrUK7M.cache +0 -1
  146. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/r6/r6KjMmQ9n_jOrJlySdyY3ghq7-QyiM3ai5wHX6eTp-g.cache +0 -1
  147. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/rb/rb_u_gHDnEZUoDZl9KxS9eteCoe-SaXymHkbl47PpVs.cache +0 -1
  148. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ty/tyrbLxvr3XORxAaPLnpHstJahZsB9CS5tJAB3BiKaII.cache +0 -0
  149. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/wX/wXZYB3qZL8CcqH7bLqFclD7G1KHZdxh-PxR2zVSSQe0.cache +0 -1
  150. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/wn/wnvJ74QIdj8tSD10cXmY9KyXCpaQIv0FfZJWw-EudW8.cache +0 -2
  151. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/xP/xPMfTXGxxCCgIip6XsG-paelKjnDzbpAYugLmUfykPs.cache +0 -2
  152. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/yw/ywTOTWuvOMHV0wh02S8szPOIWIaS_244Z0lUeU8Dstw.cache +0 -1
  153. data/test/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  154. data/test/dummy/tmp/cache/assets/test/sprockets/2061465cdaa4af5682ef172a297ff369 +0 -0
  155. data/test/dummy/tmp/cache/assets/test/sprockets/2cd8dbafa2066abde725994dae1058c3 +0 -0
  156. data/test/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  157. data/test/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  158. data/test/dummy/tmp/cache/assets/test/sprockets/371bf96e99717688ed7313a0c53f4212 +0 -0
  159. data/test/dummy/tmp/cache/assets/test/sprockets/4050a4e5062ab95c9f32e9b6940821ea +0 -0
  160. data/test/dummy/tmp/cache/assets/test/sprockets/4c04c5d3c4c4970598b78b1362270ed6 +0 -0
  161. data/test/dummy/tmp/cache/assets/test/sprockets/5652340e6744eb036df1049edad63537 +0 -0
  162. data/test/dummy/tmp/cache/assets/test/sprockets/593b93ec1ad4cc8ce7600f8e12d88cc9 +0 -0
  163. data/test/dummy/tmp/cache/assets/test/sprockets/5f1a0d05e77ca8b9a1fc2a47e17a8174 +0 -0
  164. data/test/dummy/tmp/cache/assets/test/sprockets/669c55c2bc3e16bcc6e4ca54b102fda6 +0 -0
  165. data/test/dummy/tmp/cache/assets/test/sprockets/6fc757c2c8329244ca95d6909865bbc2 +0 -0
  166. data/test/dummy/tmp/cache/assets/test/sprockets/707a1c711633514ec09e3b0db7af6a5a +0 -0
  167. data/test/dummy/tmp/cache/assets/test/sprockets/87b209c0c9da28094a8d5581a21262c6 +0 -0
  168. data/test/dummy/tmp/cache/assets/test/sprockets/9aaa89030775346d168ace83765eb46a +0 -0
  169. data/test/dummy/tmp/cache/assets/test/sprockets/a13866390005bb0cb0260ff16310f297 +0 -0
  170. data/test/dummy/tmp/cache/assets/test/sprockets/b0c12099afcf1845441fc62fc3c0f731 +0 -0
  171. data/test/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  172. data/test/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  173. data/test/dummy/tmp/cache/assets/test/sprockets/e067a273d5fdb6cc978465b152e662b5 +0 -0
  174. data/test/dummy/tmp/cache/assets/test/sprockets/f56253b5f374fff1a33fbbc9881c9124 +0 -0
  175. data/test/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  176. data/test/dummy/tmp/cache/assets/test/sprockets/fd2dc9334cabdf1812653883c577dfaf +0 -0
  177. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/0G3oFbqJ7eFUY0UdwEjScsfwwbPpWiWBNw09qdd1ohI.cache +0 -0
  178. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/0Z6bW0B1kuGtkIeYr4ThAL4uqYBz_KTiRnIbWojB7Aw.cache +0 -1
  179. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1H1i5_RyMh4B7slWyR-5HmOLlYMLqwBoIHac9sf2UGU.cache +0 -1
  180. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1eXGkBvJXR18xUslJtU6HnzHBHlj9zMbL1lVS7Ab84M.cache +0 -1
  181. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1xHqeEplAI_MobTJGjagsr8Q6xaDyVXT50IdI86fHEw.cache +0 -1
  182. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/2i17CO5DMhuAQ23V2NrBSC1m1qGbVEcfTQPOZvRGs8E.cache +0 -1
  183. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/46JXON6AslwNbbvz__9ddRiVifnFuk8ifD2rSIS85-M.cache +0 -0
  184. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4JY-SwetEJ9O6ZGcQcZ26z5Lwa71xMfRmfgrUMivfFY.cache +0 -0
  185. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/523-OCQbCRB1j_tlqIjEssUe6m7reS6feGOWn7hrV4c.cache +0 -0
  186. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/5mzNt8xoknzyPmjXjf9jYI14ZvvMAqCU9rwM6GpSpXA.cache +0 -1
  187. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/8SS1Jdp7AgUHgLl0L-2n3KE2-WflAeaChclAGEW_SFM.cache +0 -1
  188. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/8yLF7Pm-8w-1cv3HnmHv6MSOWaTEPh6hBWRdTY7eCrI.cache +0 -1
  189. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/9rTAa3n4m_1tnYuo_PQBUe9AHWAx8DmbK07tjEDBJYk.cache +0 -2
  190. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Awt8aE1L6iJxPHDB19XLUcrdBHzK7yH-x57kv_NKojU.cache +0 -0
  191. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/BP10TsBq4rYpNlPktp1I4r-0iPpEyWk6HVlUrhT8Umg.cache +0 -1
  192. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Bee-ZlOeMpd0qyQPbZ3i8ZoH7Yhw2coD8YL3-9GViAw.cache +0 -0
  193. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/DQ-VfoAVjHpu1y8DR1HQVmz_IAVzAgEOv2UGjbvlMLM.cache +0 -1
  194. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/EQ5-Zi3kqng0IGc-dOuC3Nb6AJ7itxt2EhoMRjAZM78.cache +0 -0
  195. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/HBa9hNZdUCrVlnn4DcWwu8ujBPsPhHj-SzAxTHx3gyM.cache +0 -0
  196. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/J5sQQA899f9Yaj6s8m0sbwP2Ai1J9Wsl30XsiE63Tlk.cache +0 -1
  197. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/JoQJIRS5fitTPBwEToHFffx8wzQh1OGFAu5xDSz11I8.cache +0 -0
  198. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/MTXn13WRB7BfO1V3dblDHLOM3_n2bwr2PxtPNg0eo9A.cache +0 -0
  199. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/MVvZCkjLbPbkR9gt8wskucEPJHuRZbsq0WzftgYgBrs.cache +0 -1
  200. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/NGMpC_EFlJjbA20OjGoJtJfynmG55lVXqEBQElL0J8c.cache +0 -1
  201. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/NW6MHRYmTMyI512aPcOJ4s6tgW0o_sXXmgrqQfKzkSs.cache +0 -1
  202. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Nhuhyntxrz8qJ4e9bhgWV1giXOvsTdLPxGDvrMtnNzo.cache +0 -1
  203. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/O2agJjKw-HXlfsSATA2_aeqgAYO4bWrWRd1bcTN5_C0.cache +0 -1
  204. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/OVj6tY43u7jqUGurvVYkWx3HFRru4oH1hxmXKnz_itc.cache +0 -1
  205. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/PWG7LBu6STtK0n1rFJDQjW5x3J7tQd_Ij06lNYAzym0.cache +0 -1
  206. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/PghEL7Jal_M5xfjdzxnW-Jiq-6kt7W49FaF44yRK3Yk.cache +0 -0
  207. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/RYnKHL96X2OWT7cQwEm1CEbN-kP9jamPCD8Viq5WOJs.cache +0 -2
  208. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/RvE2VrcnvR4vet1dyPKMSOu-qTSXJUVbsONOudiUiqo.cache +0 -0
  209. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/YhdJORPRV4WeWGbpN4lF7qM1JemsU0sSBBFSeCjK5Zk.cache +0 -2
  210. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_zleWcY3FPsUHamwtaWVGPFC2ZrfVEdPcPxtZ0ncAKQ.cache +0 -0
  211. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/aOYT6AMsiiCTko9bck34eQ_cpji7JFJkcO6Gih7XwY0.cache +0 -0
  212. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/aovOL6rHj1sNeXFn2epj7OC6vuL3xqhgG66DCvO1y60.cache +0 -1
  213. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/bR5B145dhQ5ciLkU1IpQTYV5yuuGW1hFVZ11_HaQbhE.cache +0 -2
  214. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/deKZpN3Fw7GBmRNV2zF4XhwPu7G4vqFvMZ2EhVR0ogg.cache +0 -1
  215. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/e6QsN5AJT0NQ1szDvc8kkfCz6XVVjVWDNHKP6f0YoSo.cache +0 -2
  216. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/esK4x1b0AOlLi9q6KDmOPKMPG6uS7tF2XVFfrQpIgwU.cache +0 -1
  217. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/fUBHMp2rRJ2R0D76_G51M7lBmOZpVQzuaSjbitW7IFc.cache +0 -1
  218. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/gBSV6LbejlEAByktpuqDpXQOiHSTl-EHI5c0MW6-8rw.cache +0 -1
  219. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/guTw1gpaRgyeuxZQ3eQFePUZcp9d-v1IWXG5qm_PTGY.cache +0 -0
  220. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hM0aSE9SRyMgQSqQY_G3js1_4dSng4Q9vnWpgMqFWTc.cache +0 -0
  221. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hg6DQjmNFxgP1ABwg213wrPGMurhGbyC2SJWF_eR3EM.cache +0 -1
  222. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/i0po6m1De10_m-wY5hbOaMN1dZbKIitPo3bn9EcqeA4.cache +0 -0
  223. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/igBCEQJL_hNTNkZQWbXcg0FX23pPTcv61SiuP8sww4Q.cache +0 -0
  224. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/im21DLPpH4nyd4LX8cmORbNfg7jUx_PEXXMwJA87Qsw.cache +0 -1
  225. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/joYQeCzbCCq4TvDcSpRWsiaR0i4HVRDhLBrQOenKw_U.cache +0 -0
  226. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/jpA0RKjvuqt6qEaIASWc8qU1VB0Aydp6JgbzLhpGUOQ.cache +0 -1
  227. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/k__HZRe6MJEx_es4mae2UKNJ7S-xQjjtNvuWfURI2L8.cache +0 -1
  228. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/kl1-ITbGxlNpIH_bdRiAd4APIX9fZOYgmo0XXZcrvgo.cache +0 -1
  229. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/mUqHquf2Zmd8u6uiyK61Ezlu1TcpGRVaTOWUxxGEi1Q.cache +0 -2
  230. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/n8Aje18PD8oQE5TPpOTUD3BGZ7_TmvPPZ5eXDXoq8Gg.cache +0 -1
  231. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ngUc-SbI6D2rZ8MAICdvGgIewOpQ-2Pl0CILWKGcq3U.cache +0 -0
  232. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/nvtXH1L_dKEY1ZmXVBM1NqTE6nP0QRCdobSLzIj00xI.cache +0 -1
  233. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/pwDXjciqVi1_CS4MlD2TH1ZqbzXchkMonNpsttR96Vk.cache +0 -1
  234. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qkq4_FDzkYw-Jgf-PQ1QvZRMOcpJieAhpakErII07uI.cache +0 -2
  235. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qmTv4Or54pJag3e-RuC8J8YBw5WvkzqP36yA1qF7brA.cache +0 -0
  236. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/r6gN_QsTAf7c1o4Cst-frjvGHokmbxsEOdSr4mkMEJI.cache +0 -1
  237. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/reN5Eb8r7-aFzpa3gnf0d-hIULaqBhZbU3j6bHL8c54.cache +0 -1
  238. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ss0roaA9M5TQHC9lcaT0WzZ401TWw-pTCBcrTYorKrU.cache +0 -1
  239. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/tZ-5zRkNGhZpjLydDPN14TgvqrG-sRsmhjHmD16K9w4.cache +0 -0
  240. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/uAeR8lWRY18fsV62fVeVlDfQL-0svUgCWxUntrKiscM.cache +0 -1
  241. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ut0rmLnfJ-Ischq127ylQ8-6EKVPTiko_mqVVAuMli8.cache +0 -0
  242. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/vXSDU5apajRzjlgKITJW6ww-R5nViNgTca-WgN2rQjA.cache +0 -1
  243. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/v_Ilb0G5vj-RNZGvNkGntio2WXLwx0dLgXj22KrEF1A.cache +0 -1
  244. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xE2R25fLVYnFI2W6I4LvT03gascYQsI-YR4dr_274d8.cache +0 -0
  245. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xyZgV6TicjUr8zQ2arynATHycCL5HEg4v44PTplSlCE.cache +0 -1
  246. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/y9ZtIMFclPh-m6WSjAOTLR1Oz8oUv8IF4DdJDKgCgDE.cache +0 -0
  247. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/zhLZKiMTXH3IgicVp2uI18ziLOLaV51MjYysWkjSLrw.cache +0 -0
  248. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/zviTNUYEUvNXHr7SV9QMmjiPlU-Ij7IN_Wf5NXwsbdQ.cache +0 -1
  249. data/test/fixtures/referer_tracking/referer_trackings.yml +0 -13
  250. data/test/integration/navigation_test.rb +0 -10
  251. data/test/integration/referer_tracking/has_tracking_test.rb +0 -31
  252. data/test/integration/referer_tracking/referer_session_test.rb +0 -160
  253. data/test/test_helper.rb +0 -20
  254. data/test/tracking_test.rb +0 -88
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b7bbc9b6a0e64428a3ec0b7ba23bcc245c8837164ad465d1f18d5f9a4ba34d66
4
- data.tar.gz: edd8a010186ee088bb847cf3ab1158254e04ba74d9c04924ab78650abf9def4e
3
+ metadata.gz: b1d31bdfc71fe8f3693ee62bb07b24175dbd1d3ff73df06241d7081ba689ed23
4
+ data.tar.gz: 6c49d4106a856d379501d0e7257357effbd4580c7b79a592e30e4b2fe0d25660
5
5
  SHA512:
6
- metadata.gz: 647fa7e8f6fe007144782727a5a0e0ca438a88f38e1d1a7015ac4d34a59c16c59d168c1981c0c2d34ff5513f2da01baf00b04531fe28912d23ebe90c8e3847b3
7
- data.tar.gz: 9099f20f9c02d7ad3915db429203e669583bd1403fee6e996fe54edf17e47b7306a3d65ac6286e37f65cd2df8f1e997b266c199cbd801fc3626151e9eb9c071f
6
+ metadata.gz: 29d8ba7c6144d187b7f4c2c1601c89a95d41e1dd577d308391100774870dc519df4e839f3352348f44daa1bd8d1657ef81ede748a31486d1c92ad756270e7fae
7
+ data.tar.gz: fc5b9e4b06b3c54eac91c0579e354c6d7b5011e84c595ff785e695fda7b1cbc02bdf8d0ad39fc85c5edf35fe513f57468a470e2c158eae20071807ab4a2f0dbc
data/README.md CHANGED
@@ -6,8 +6,6 @@ It does it by saving referrer url to session and saving information about the re
6
6
 
7
7
  Also includes tools to add log lines to models to get better information about the flow of the users or which A/B testing variation was used for which model. Aim is to make data collection for model creation, A/B-testing and growth hacking easier.
8
8
 
9
- [<img src="https://secure.travis-ci.org/holli/referer_tracking.png" />](http://travis-ci.org/holli/referer_tracking)
10
-
11
9
  ## Example use cases
12
10
 
13
11
  ```
@@ -2,8 +2,11 @@ module RefererTracking
2
2
  class Tracking < ActiveRecord::Base
3
3
  self.table_name = "referer_trackings"
4
4
  belongs_to :trackable, polymorphic: true, optional: true
5
- serialize :infos_session, Hash
6
- serialize :infos_request, Hash
5
+ # coder is explicit because Rails 7.1 defaults set active_record.default_column_serializer
6
+ # to nil; without it `serialize` raises ArgumentError in any app on load_defaults 7.1+.
7
+ # YAML keeps the on-disk format of existing rows unchanged.
8
+ serialize :infos_session, type: Hash, coder: YAML
9
+ serialize :infos_request, type: Hash, coder: YAML
7
10
 
8
11
  def first_url_combined
9
12
  cookie_first_url || session_first_url
@@ -31,7 +34,7 @@ module RefererTracking
31
34
  Rails.logger.info("RefererTracking add_log_line to #{trackable_type}.#{trackable_id}: #{log_line}")
32
35
 
33
36
  log_line = log_line.to_s.gsub("\n", ' ')
34
- str = "#{Time.now.utc.to_s(:db)}: #{log_line}\n"
37
+ str = "#{Time.now.utc.to_fs(:db)}: #{log_line}\n"
35
38
  self.log = log.to_s + str
36
39
 
37
40
  save if save_model && !self.new_record?
@@ -6,26 +6,35 @@ module RefererTracking::ControllerAddons
6
6
  unless request_is_from_a_known_bot?
7
7
  if session[:referer_tracking].nil?
8
8
  @referer_tracking_first_request = true
9
- session[:referer_tracking] = hash = Hash.new
10
9
 
11
- request_ref = "unknown"
12
- request_ref = request.headers["HTTP_REFERER"] if !request.headers["HTTP_REFERER"].blank?
10
+ request_ref = referer_tracking_utf8(request.headers["HTTP_REFERER"])
11
+ request_ref = "unknown" if request_ref.blank?
13
12
 
14
- request_ref = request_ref.to_s.gsub(/pass(word)?=[^&]+/, 'pass=xxxx')
15
- first_url = request.url.to_s.gsub(/pass(word)?=[^&]+/, 'pass=xxxx')
13
+ request_ref = request_ref.gsub(/pass(word)?=[^&]+/, 'pass=xxxx')
14
+ first_url = referer_tracking_utf8(request.url).gsub(/pass(word)?=[^&]+/, 'pass=xxxx')
16
15
 
17
- hash[:session_referer_url] = request_ref
18
- hash[:session_first_url] = first_url
16
+ # String keys throughout the session hash. Rails 7.0 made :json the default
17
+ # cookies_serializer, and JSON has no symbols — a symbol key written here comes
18
+ # back as a string on the next request, so any symbol lookup silently returns nil.
19
+ hash = {"session_referer_url" => request_ref, "session_first_url" => first_url}
19
20
 
20
21
  if RefererTracking.set_referer_cookies && cookies[RefererTracking.set_referer_cookies_name].nil?
21
22
  cookie_info = "v01|||#{Time.now.utc.to_i}|||#{first_url.first(RefererTracking.set_referer_cookies_first_url_max_length)}|||#{request_ref.first(RefererTracking.set_referer_cookies_ref_url_max_length)}"
22
23
  cookies[RefererTracking.set_referer_cookies_name] = { :value => cookie_info, :expires => 5.years.from_now, :domain => :all }
23
24
  end
24
25
 
25
- logger.info( "REFERER_TRACKING_FIRST: ver04 (ref|first) ||| #{hash[:session_referer_url]} ||| #{hash[:session_first_url]}" )
26
+ logger.info( "REFERER_TRACKING_FIRST: ver04 (ref|first) ||| #{hash["session_referer_url"]} ||| #{hash["session_first_url"]}" )
27
+
28
+ # Assigned once the hash is complete. A half-built one reaching the session cookie
29
+ # would leave session[:referer_tracking] non-nil, and this block would never run
30
+ # again for that visitor.
31
+ session[:referer_tracking] = hash
26
32
  end
27
33
 
28
34
  end
35
+
36
+ rescue => e
37
+ Rails.logger.info "RefererTracking::ControllerAddons.save_to_session problem with the first request: #{e}"
29
38
  end
30
39
 
31
40
  def referer_tracking_after_create(record)
@@ -42,7 +51,7 @@ module RefererTracking::ControllerAddons
42
51
 
43
52
  ses.each_pair do |key, value|
44
53
  ref_mod[key] = value if ref_mod.has_attribute?(key)
45
- ref_mod.infos_session[key] = value unless [:session_referer_url, :session_first_url].include?(key)
54
+ ref_mod.infos_session[key] = value unless ["session_referer_url", "session_first_url"].include?(key.to_s)
46
55
  end
47
56
 
48
57
  if defined?(@referer_tracking_request_add_infos)
@@ -55,13 +64,17 @@ module RefererTracking::ControllerAddons
55
64
  end
56
65
 
57
66
  ref_mod[:ip] = request.ip
58
- ref_mod[:user_agent] = request.env['HTTP_USER_AGENT'].to_s.first(200)
59
- ref_mod[:current_request_url] = request.url
60
- ref_mod[:current_request_referer_url] = request.env["HTTP_REFERER"] # or request.headers["HTTP_REFERER"]
67
+ ref_mod[:user_agent] = referer_tracking_utf8(request.env['HTTP_USER_AGENT']).to_s.first(200)
68
+ ref_mod[:current_request_url] = referer_tracking_utf8(request.url)
69
+ ref_mod[:current_request_referer_url] = referer_tracking_utf8(request.env["HTTP_REFERER"]) # or request.headers["HTTP_REFERER"]
61
70
  ref_mod[:session_id] = request.session["session_id"]
62
71
 
63
- unless cookies[RefererTracking.set_referer_cookies_name].blank?
64
- _cookie_ver, cookie_time_org, cookie_first_url, cookie_referer_url = cookies[RefererTracking.set_referer_cookies_name].to_s.split("|||")
72
+ # Sanitized before blank? and split, which match a regexp against the value and raise on
73
+ # invalid bytes instead of answering. Rack unescapes an incoming cookie into UTF-8 without
74
+ # checking the result, so whatever the client sent arrives here as it is.
75
+ ref_cookie = referer_tracking_utf8(cookies[RefererTracking.set_referer_cookies_name])
76
+ unless ref_cookie.blank?
77
+ _cookie_ver, cookie_time_org, cookie_first_url, cookie_referer_url = ref_cookie.split("|||")
65
78
  ref_mod[:cookie_first_url] = cookie_first_url
66
79
  ref_mod[:cookie_referer_url] = cookie_referer_url
67
80
  ref_mod[:cookie_time] = Time.at(cookie_time_org.to_i)
@@ -70,7 +83,7 @@ module RefererTracking::ControllerAddons
70
83
  if RefererTracking.save_cookies
71
84
  begin
72
85
  ref_mod[:cookies_yaml] = cookies.instance_variable_get('@cookies').to_yaml
73
- rescue
86
+ rescue => e
74
87
  str = "referer_tracking after create problem encoding cookie yml, probably non utf8 chars #{e}"
75
88
  logger.error(str)
76
89
  ref_mod[:cookies_yaml] = "error: #{str}"
@@ -84,25 +97,37 @@ module RefererTracking::ControllerAddons
84
97
  Rails.logger.info "RefererTracking::ControllerAddons.after_create problem with creating record: #{e}"
85
98
  end
86
99
 
100
+ # Everything the request hands us — headers tagged ASCII-8BIT by Rack, cookies unescaped into
101
+ # UTF-8 without a validity check — is scrubbed here before anything downstream looks at it.
102
+ #
103
+ # scrub rather than encode(invalid: :replace, undef: :replace): converting *from* ASCII-8BIT
104
+ # treats every byte above 0x7F as undefined, so encode turns a valid "hä" into "h??", and
105
+ # since Rack tags valid multibyte referers binary too that is the common case, not the edge
106
+ # case. scrub drops only the genuinely invalid bytes.
107
+ def referer_tracking_utf8(str)
108
+ str.nil? ? nil : str.to_s.dup.force_encoding(Encoding::UTF_8).scrub("")
109
+ end
110
+ private :referer_tracking_utf8
111
+
87
112
  ###############################################
88
113
  # Session add methods
89
114
 
90
115
  # Add only if referer_tracking already in session and key has not been added/changed before
91
116
  # So this is only performed on the first time of the session
92
117
  def referer_tracking_add_info(key, value)
93
- if !session[:referer_tracking].nil? && session[:referer_tracking][key.to_sym].nil?
118
+ if !session[:referer_tracking].nil? && session[:referer_tracking][key.to_s].nil?
94
119
  referer_tracking_set_info(key, value)
95
120
  end
96
121
  end
97
122
 
98
123
  def referer_tracking_set_info(key, value)
99
124
  if !session[:referer_tracking].nil?
100
- session[:referer_tracking][key.to_sym] = value
125
+ session[:referer_tracking][key.to_s] = value
101
126
  end
102
127
  end
103
128
 
104
129
  def referer_tracking_get_info(key)
105
- session[:referer_tracking].nil? ? nil : session[:referer_tracking][key.to_sym]
130
+ session[:referer_tracking].nil? ? nil : session[:referer_tracking][key.to_s]
106
131
  end
107
132
 
108
133
  ###############################################
@@ -1,3 +1,3 @@
1
1
  module RefererTracking
2
- VERSION = "4.5.0"
2
+ VERSION = "5.0.1"
3
3
  end