superlogger 0.2.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +23 -48
- data/lib/superlogger.rb +20 -5
- data/lib/superlogger/action_controller_log_subscriber.rb +3 -11
- data/lib/superlogger/action_view_log_subscriber.rb +1 -1
- data/lib/superlogger/active_record_log_subscriber.rb +5 -3
- data/lib/superlogger/logger.rb +13 -27
- data/lib/superlogger/superlogger_middleware.rb +6 -6
- data/lib/superlogger/version.rb +1 -1
- data/test/dummy/app/assets/config/manifest.js +3 -0
- data/test/dummy/config/application.rb +3 -2
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/0R/0RGmr4z2PoNrXTofNEJ55Wrv_v-N3HOrmSgU5ILkXTw.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/{v3.0/T4/T4WYRrwWhIVaINf3NmLDXIAI3bybsjl0y4P1KQgM-Qs.cache → v4.0.0/0W/0W5MOuazdWJMvIog5vEAQfl3ZJiz8KFyVLyNiZ2Tp1I.cache} +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/{v3.0/rg/RgmbeHiCGDMtbXGovkyp2kHJljF3k6_21IfxBUqa2GQ.cache → v4.0.0/2T/2T69JIvG7bvXlqaEFz4SAmmQOu5KcDL3S7O0745_gVc.cache} +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/{v3.0/fE/fEpQwSnNzL1JpFhnElwxvX6YuOxn_vv_QuOTJNrl21M.cache → v4.0.0/2k/2k-V7fw5kQxgx8rJcOMPyJDQ4JbisbnfZQoC2TqHp78.cache} +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/{v3.0/38/38YtaoIS3EsFiiaKJPIWZKoxwdIGtUeAuwIBAuuQ8Mg.cache → v4.0.0/2l/2leDpqGCN2J9vjiI1IHvVMlK22cXy2F4hknNF3jqmkg.cache} +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/{v3.0/ZQ/ZQkA-jIm0iNMfDDgK-M4OcgHPKRo-uBuEEowd_5_6Rg.cache → v4.0.0/4T/4TXTXXyWGjYW5FUpWGY5b1ecc_ASKWAmht53-rfZ3f4.cache} +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/{v3.0 → v4.0.0}/5L/5Lly_CA8DZvPhQV2jDQx-Y6P_y3Ygra9t5jfSlGhHDA.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/A-/A-o1cjWqvf_esvFcsIdNZYiYRAbfoTl6xWZoBdtvvsU.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/AL/ALcoKZSxe_5jgiHJ70icJlBPAscxfFhRmVLKCKPFHrc.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/CK/CKmWm-PGWv8LhwLfTt-8iccYQtEKrPkNNoK21YhKq8M.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/DN/DNx8QhxaypFYkrRxHa0ASOI5Re2lXRbN9rGK77jX7K0.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/DS/DSOLSc6A5RVSmvM415eEWAWG_AgOvZcLZOXQjsXyWQA.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Dh/DhrpoAlYO43_xJT7cR7N5n3Gxc9T9lAEkJkux4ufwrc.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Do/DO9Ss2TWmmIJ98nseuLX1kY8yXnC3rfw7qPbjcIiyIg.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Do/Do83AoOat5W-c1g7piDGy2GMmffsY6JY0Qfuh5PY3GM.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/GP/GPU7T8ibZQ9TVUeUKytpkmqoMwPEDhozvdIulY_ghQc.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Hm/HmZiOch1q-Y-bWc2Bg4CkHs0WouAlAVwELLnUki2URU.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/M6/M64-PqNj7ipUe_WWRewKavcFikbdVLpvtbkzo5KfCtg.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/NX/NXtwZOKZ7yMMJA2FnKYowCStq4BXaQgukCAycF23R4Q.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/{v3.0 → v4.0.0}/OI/OI6uxGcnsKavdWTtwDAasU3wPx8QXhzBgV0X2n1KjMQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/{v3.0/SG/SGLQX80_DB28A_mjz_Eh9ZQxVU85Dz1YSRz0Xf3T6qE.cache → v4.0.0/Pu/Puw-QRmCoV436fSHMZZyBpIn_ZTQoicwVTISlz3vQoQ.cache} +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Rw/RwX76wVv_k976ST-OhQyd6E8Fgi2kfLW6yDFSdnCKA0.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/SR/SRlBuVekx5voijkM7Pur-7CEeD9aOoItZYTK7KkxrPc.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/{v3.0/-H/-HJqDF0cY1IQQf6G35SzwnWhdJwbb0rjsilAS1uSnC0.cache → v4.0.0/TG/TGTts-z_YI7jHUT1N8DOBGdHJLrIKmH_X-sgt638nU4.cache} +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/XX/XXb_KYmRcMmdP6iwA-m5TK3mNwd-sAWuIDU2BwYh8ys.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/{v3.0/br/brSVWTme0G1yzUMjrDpklxoQetdFLXdF8ZUkYXFX-sE.cache → v4.0.0/YB/YBDUr0r2s3vM4McoPLgA6pwj6jYXTvANXBCQr79bS3U.cache} +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Yu/YuxSXQJiI3M2WF3HcV2F-X-X6v0aqPZ87jaK3NIJpBQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/{v3.0/Pg/PgSSsdzJcNT1S4NDynUSIcj_YZXO_IKpcmyafopOamk.cache → v4.0.0/aK/aKG1BE9i1nkV7pxwlTB5hccxO_vqSnmj2oxeB-VW1zY.cache} +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/bB/bBXVQV2jOiSWOwtiOr55XUT7RCVlSA-htXqhCHd166k.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/bv/bvWA2msm_wKe-upUjI2eMf_Eqi7QlqXZ6M0_TsXEn4E.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/cV/cV6tr7nK4y6dNjxzPIKLUszmCcCbY6g48N5ypr-cf78.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/{v3.0/7J/7JXLU3kClrFYffhxcnNaLGjYz8LFI700NBjNiBOifaU.cache → v4.0.0/cq/cqYKlDsPOsR-Hutsi1Ia2tXUuzOfzbVLP4i9Aonwckk.cache} +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/dp/dpSU2IktVAqqMTj5iCA6Xg9aVjhNwuhNX987AAPo4Ss.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/{v3.0/1e/1eeMDHdcXM5QG6315g0Uj656M_FVD0teimYul97xBzQ.cache → v4.0.0/ec/ecGOPxDOC-PTR8Q87Zu7XU3BS3ueVqHZihjkgAL1GSI.cache} +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/gC/gCdMfTV-UrcBy2q1SovEwzaag5CwB0k_eFIstyv4gLk.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/gZ/gZp3uXMHuYQC4hzCr7bQfetKNdJAtbQmg3so2KpW1Dw.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/hF/hFSTd38enn2Za93gw3GzWrAZwHeNX0pUJPH7EiRpNn4.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/{v3.0 → v4.0.0}/hZ/hZi1k6tpxxCGYxRe7zY74ItcOI8gZrREOpGuA8JSpGg.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/iU/iU7cx0nTwBBaaOT_qzXbI8RiIXouPchtWuIlVcsWWks.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/{v3.0/ys/ysosYWYA283HXmg_f6HoIzLi86SIIm3aVUwWF7tZJHY.cache → v4.0.0/iZ/iZ8YcXqVbBIniScbBCou8v1FocbWLbrgDzpQ5UnVuZI.cache} +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ig/igCHoAZu1ESqunQb96qV2Dmbt41uWhdJs8ztO5kRXi8.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/jq/jqO64m7tXOlADW5o1Sy9C08R_i48GO1Wo0w0mUE4UPg.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ko/koq-iWAlxiTFpALhUJsXNVGhxy7qAKZP69zJ8E9YdFY.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ml/mlO31cacExw_jelM3vRJ3uZSMqsk-50vvXucoON-bkI.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/{v3.0 → v4.0.0}/pE/pEhaat2KBd5SrT7szC_8R1_6hK17FTpvoRFkmCRSD3M.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ph/phUbOaP6NCn983I6TT7qDlnwcmCAKjJVyDnDfKfjrI0.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/pv/pv6tV3CDkIAmLXdU8EPLlNEkXAKJPufVD4VP30o4fWo.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/q2/q2rsSyCOy3kUHoKipvqxAw3Z_GfF7PufP5wKBV2EEbA.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/qE/qEdbzlDf-HNnbh60QhpqpvwNeEnCU8tTrPEnZAV4NE8.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/r-/r-16n5JdDzbIS_kN06fC4J_-GA2dpracXKYNHsLe3d4.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/{v3.0/C_/C_C8IqUQirTZx1bt5Ewm3QJvhVbwm66pxvcH0maphFY.cache → v4.0.0/sO/sOS4yyqF_bYEJm1CSvCyiFQcStv5XUNBttwTmekhjv0.cache} +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/t3/t3tLjCcLizdoIbYBzZawbDaaD_niNTCxTyMWCAGVBso.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/vW/vWfhzaoyrvEUgX0vnRufnld1buC_KEfVE_Y9GxTlEFc.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/vo/voyjfPaosDvduWR6jKwI00MuapmfnNxtssiU8OpJCn8.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/wq/wq0Gkd5cDkoJX9cTbcFfa70O1tFJZOB-WBE1B6A1D0Q.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/x3/x3RXrNrKZMLOtSL6nQa-yFfgd0YP5AaeoP_5isPNggc.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/xD/xDCgzYS-NOKY4wQ98x3bpVUmBipKrajnbyKsfZeXyKE.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/x_/x_m3GCJB04OFwZrek6vFjk1S_Qbkf1Kr5PAeGvTLUjE.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/yw/ywwwCinw2TbO7jW-9-T0BKJdM4rcEDG7yxRiGJAuSqU.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/z8/z86GAeZHuKvb4Z2ApdQizPKZkd9bJy3OH8zcwtNG5bQ.cache +1 -0
- data/test/superlogger_test.rb +30 -58
- metadata +150 -197
- data/test/dummy/log/development.log +0 -545
- data/test/dummy/log/test.log +0 -1732
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Ch/Ch2bQFHkYziI9Erdkuj8uoPJyw0W2aA5prtYAqlccww.cache +0 -1
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Cq/Cq4V3OyOOk4eTJXISTKVc4MbIHDmq4eu3lSNh85i78k.cache +0 -1
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/DS/DSOLSc6A5RVSmvM415eEWAWG_AgOvZcLZOXQjsXyWQA.cache +0 -2
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/EC/EC4O6KSVM5bCKFeBl2j8bzAbnhklqssWQ-6XEqM_tC4.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Gy/Gyqn3Ja6WbUSqKnvWm9Xw7FIxFqJIPQ88IlgpguMo1s.cache +0 -1
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/H3/H3tvaQM-yTy-25oSLlfjToAa74LSJHBDUpji-8C-eLg.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Iv/IvDM1j8-H1H6kEjVCsyIW8N2zla-aIp9q_OE9PVZtVw.cache +0 -1
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Jj/JjqPODxMglZzjE6lolNyoEiFCULPe-AH8rndpgamPPk.cache +0 -1
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/K9/K9ZheMi0hi4DNLzmDMRnv9A_lOVz33kNImc16Now42o.cache +0 -1
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/LH/LHgjtAV8kdldaJ_dX0RCznzjmWYRuLdhU29fZCJ0VmU.cache +0 -1
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Nn/NnUCa7jNYx9HCmEB7E7WPWT00DwaM4IYICy1Ju1jjcs.cache +0 -1
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/O5/O5UdaBuHdxmEoYz3AFZsm3rh7MWtRFXwHOryps7b5tE.cache +0 -1
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Ol/OlBX9JIv9SAOmK2t35x1SYDx1sxCXF0yvqpna3WMyH0.cache +0 -1
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Yr/YrZ0OIHu42cExs1kqngMA6ShVDKhfGmhyW-E9haNo5Y.cache +0 -1
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/ZU/ZUokoeZcfmoTFE9YAHZRhTgceOUGJTDGH__SCqPfkqU.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/_I/_IocgQl8XVm84HohovEBj-GxsSeBkOpqN-94yHgY-K8.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/bJ/bJVgCoQDvMv4iocjEuC3z3WqSeK7LXgxDJ-eXaHl0l4.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/b_/b_-O1DwVvDk3vPJ-GHDgGWR9Zth9CYblcXbBe6aiTf0.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/cI/cIaWfk6Nq6ZAr0fhtHGTBtsRITI5n8IJFZbClZ2tExw.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/f-/f-gxq-RYinlir2WGpHfXu4C3r6M4aidyokcd7ZnBOao.cache +0 -1
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/g3/g3x0V2jnf5A31QMz4xGeQMouu2eChQRpoe0BEWWESeY.cache +0 -1
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/gV/gVVPZef0xfm7t9Jyesa7ZVdnpzMpw2QtOyYUoEXO7fk.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/gZ/gZp3uXMHuYQC4hzCr7bQfetKNdJAtbQmg3so2KpW1Dw.cache +0 -2
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/gb/gbunrAFVOHPwl2npUgKv_C3f_qiJnZDd9zG5-h3jrpo.cache +0 -1
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/gp/gpiWtnqpufka8lRtMznM6Ko0aWJrcH_j8cfZwdYmzNI.cache +0 -1
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/hl/hlDmEHZNeRDjBO6WJNb8ftVgfvCQubblXCEJw_MO3ow.cache +0 -1
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/i7/i7v4b6OSQUj-1r9vUWRiOHjAVksSTpUfilZTpk0ACLc.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/kz/kzdSvu57G4i6eTuarsZCAfbhbICnkRa0Xhi0b9ua6qk.cache +0 -1
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/mv/mvqN6PphkrOOC8zbUEhpC_9E_4ybdO25MRy_gG6dq3Y.cache +0 -1
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/nm/nmcUZlKAIwyJ_35Nm9P8pukLeRX5aApP6NFj5MpNPgc.cache +0 -1
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/rC/rCO5-bHVJ6Y_GsPBmOPUL23pfjvc2Gw2zt_ODmZsygw.cache +0 -1
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/rg/rghMLGUpm1Uy3OPgfILHnVwLCycV9Rd9kSpEbxdwVV4.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/vm/vm9zMjZUFULeJsYWRoDd3cvnEpLGK-E5XTk30_NQTEs.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/wD/wDDl7jzOUTDgFcG1JlpN6jVHavfzB8Smsjtl3d8WDx0.cache +0 -1
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/xd/xdBKQyhEAlDIstGvXw945PWJoEWi23rKuY7elOcWqHc.cache +0 -1
- data/test/dummy/tmp/cache/sprockets/v3.0/-Z_pj4kfRj993e_ypawYQUIDIDKcRe569udVq_1drFs.cache +0 -1
- data/test/dummy/tmp/cache/sprockets/v3.0/2G0Z7Q5fvf2xX8ygtwcD9vZq-kwEzoV2MFc1URegs7s.cache +0 -1
- data/test/dummy/tmp/cache/sprockets/v3.0/5Lly_CA8DZvPhQV2jDQx-Y6P_y3Ygra9t5jfSlGhHDA.cache +0 -2
- data/test/dummy/tmp/cache/sprockets/v3.0/66bWF3byFzdKpXZsrn5Vy9CJBaDlkJKkoyqeLRRbBZY.cache +0 -0
- data/test/dummy/tmp/cache/sprockets/v3.0/9NtfUddiu2UU8sqL-bYq-NPAx8NGp5m5AYiAWAcKQQ4.cache +0 -0
- data/test/dummy/tmp/cache/sprockets/v3.0/DSOLSc6A5RVSmvM415eEWAWG_AgOvZcLZOXQjsXyWQA.cache +0 -2
- data/test/dummy/tmp/cache/sprockets/v3.0/GELqHyWyVR_UvkpZPDb5xjZrCgkKB5G067DYoMwTjEA.cache +0 -0
- data/test/dummy/tmp/cache/sprockets/v3.0/Gyqn3Ja6WbUSqKnvWm9Xw7FIxFqJIPQ88IlgpguMo1s.cache +0 -1
- data/test/dummy/tmp/cache/sprockets/v3.0/H5fHMceViwaxMKkefsdMmVpBN3rRYZI1obJX5Jn-4jw.cache +0 -1
- data/test/dummy/tmp/cache/sprockets/v3.0/IEJfj4Zwfra6y7iF-BOVR9PPIQeL9L5IiZT8MRqpCXg.cache +0 -0
- data/test/dummy/tmp/cache/sprockets/v3.0/IordxSS9mOh1mkt2VyfX7Iz4DhZhy73lccOYxcw5aVU.cache +0 -1
- data/test/dummy/tmp/cache/sprockets/v3.0/KgQHhqXCaYHJSJEG6JweQVe1a2rC-mHfkrqD9p9taTU.cache +0 -2
- data/test/dummy/tmp/cache/sprockets/v3.0/Ki_R5uSCGEm1Jn7TSbJOc3eBMn4Q3_IPLG0r_RRn9lA.cache +0 -1
- data/test/dummy/tmp/cache/sprockets/v3.0/NBBjlBjfPdkZkp4G7VCEA9LAeGycMn10CxLbDAbNeHc.cache +0 -0
- data/test/dummy/tmp/cache/sprockets/v3.0/OI6uxGcnsKavdWTtwDAasU3wPx8QXhzBgV0X2n1KjMQ.cache +0 -2
- data/test/dummy/tmp/cache/sprockets/v3.0/V9m2At1eKJAvbGAFvFTUt8hcdNI-G8xW1AShyPYS4Ys.cache +0 -1
- data/test/dummy/tmp/cache/sprockets/v3.0/XsDQ8X8Klh__7HZNZk8sjYzyFg5TmATqo-_UraArzN8.cache +0 -1
- data/test/dummy/tmp/cache/sprockets/v3.0/ZtbyFLml01tdqcRh4Ocz6XOkbPpmHM6nFRRYY4Nphpc.cache +0 -1
- data/test/dummy/tmp/cache/sprockets/v3.0/_ZNMI9IrCfXNcrwiRGttWiFPcLlCSpkdJSFoLhmUpyg.cache +0 -0
- data/test/dummy/tmp/cache/sprockets/v3.0/brSVWTme0G1yzUMjrDpklxoQetdFLXdF8ZUkYXFX-sE.cache +0 -1
- data/test/dummy/tmp/cache/sprockets/v3.0/gZp3uXMHuYQC4hzCr7bQfetKNdJAtbQmg3so2KpW1Dw.cache +0 -2
- data/test/dummy/tmp/cache/sprockets/v3.0/hZi1k6tpxxCGYxRe7zY74ItcOI8gZrREOpGuA8JSpGg.cache +0 -2
- data/test/dummy/tmp/cache/sprockets/v3.0/jqyQL40gGhkqnPg3IttXbq8JGHLONBjR0MlrN9HeIvU.cache +0 -1
- data/test/dummy/tmp/cache/sprockets/v3.0/kqQAJDpBuiNJ3XEy8VjtVcyUB9BVlP02oDMdVnlL04w.cache +0 -0
- data/test/dummy/tmp/cache/sprockets/v3.0/pEhaat2KBd5SrT7szC_8R1_6hK17FTpvoRFkmCRSD3M.cache +0 -2
- data/test/dummy/tmp/cache/sprockets/v3.0/pnW3u_1AN48ig6ngefI89y96xoSlvnJurx-e3J-leoE.cache +0 -2
- data/test/dummy/tmp/cache/sprockets/v3.0/q9kUTJTzJpwJJQ8CoWPFc_eCW76RZgB-R2sc4P84y6c.cache +0 -0
- data/test/dummy/tmp/cache/sprockets/v3.0/qFlPbNZ3UJs9EnENWVEbNWnrTEcjZkAQUzH55y3Ymi0.cache +0 -1
- data/test/dummy/tmp/cache/sprockets/v3.0/r86oWGkKGjcta2GtxqeESX1w_4FX1c_DWHxPWVKP28A.cache +0 -1
- data/test/dummy/tmp/cache/sprockets/v3.0/ssS2x0Wl67rwXHaVHsh6CO7ayn9fQ5saIwATKN6O-nI.cache +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6c620e677e4aebf4aea5cab58f2a6e392c5266016eaf32aef3a9a88f96c402fd
|
4
|
+
data.tar.gz: 59fd2728e8398194e9188f212d7dc3f1155f1c2f101d0916747fbcbd52d1c23c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fd1ab3fe21cd6759e6732746fd6e206a71816f9926559098a0815d6940aa058568c9f5204b48dd643fe74b1639ddbe938dc11f9817ce5485058ade00207b451d
|
7
|
+
data.tar.gz: b55db9a3bccd0ce12fb20666b40f85d73c43b873ff9c9dab7cc776b3cd4667a7939202a18ab41212f9c33c31f9b5bebfde84a994b2126bf0a58ba8d13528fb5c
|
data/README.md
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
Superlogger - Machine-readable logging for Rails
|
6
6
|
=======
|
7
7
|
|
8
|
-
Rails' default request logging is easy to read for humans but difficult for log aggregators such as Kibana, Graylog and Splunk. Superlogger transforms the logs into
|
8
|
+
Rails' default request logging is easy to read for humans but difficult for log aggregators such as Kibana, Graylog and Splunk. Superlogger transforms the logs into JSON for easy parsing and adds useful details like Timestamp, Session ID and Request ID for tracing purposes.
|
9
9
|
|
10
10
|
Default rails logging:
|
11
11
|
```sh
|
@@ -23,34 +23,18 @@ Started GET "/assets/application.self-8f06a73c35179188914ab50e057157639fce1401c1
|
|
23
23
|
|
24
24
|
```
|
25
25
|
|
26
|
-
|
26
|
+
With Superlogger:
|
27
27
|
```sh
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
# second request
|
38
|
-
2016-04-29 17:39:54.879 | 12dc0e484869 | e463d380fb63 | I | superlogger_middleware:30 | method=GET | path=/home/show | ip=::1
|
39
|
-
2016-04-29 17:39:54.879 | 12dc0e484869 | e463d380fb63 | D | action_controller_log_subscriber:9 | controller=HomeController | action=show | params={}
|
40
|
-
2016-04-29 17:39:54.882 | 12dc0e484869 | e463d380fb63 | D | action_view_log_subscriber:6 | view=show.html.erb | duration=0.2
|
41
|
-
2016-04-29 17:39:54.884 | 12dc0e484869 | e463d380fb63 | I | action_controller_log_subscriber:29 | status=200 | total_duration=4.64 | view_duration=4.55 | db_duration=0.0
|
42
|
-
2016-04-29 17:39:54.884 | 12dc0e484869 | e463d380fb63 | I | superlogger_middleware:30 | method=GET | path=/home/index | total_duration=4.64
|
28
|
+
{"level":"debug","ts":1590972589.522784,"caller":"superlogger/active_record_log_subscriber:21","sql":"SELECT \"schema_migrations\".\"version\" FROM \"schema_migrations\" ORDER BY \"schema_migrations\".\"version\" ASC","params":[],"duration":0.13}
|
29
|
+
{"level":"info","ts":1590972589.526133,"caller":"superlogger/superlogger_middleware:21","session_id":"90e90c75c72c","request_id":"34432478c89b4d8591e02e0169b40a56","method":"GET","path":"/home/index"}
|
30
|
+
{"level":"debug","ts":1590972589.546272,"caller":"superlogger/action_controller_log_subscriber:8","session_id":"90e90c75c72c","request_id":"34432478c89b4d8591e02e0169b40a56","controller":"HomeController","action":"index","params":{}}
|
31
|
+
{"level":"debug","ts":1590972589.55092,"caller":"superlogger/active_record_log_subscriber:21","session_id":"90e90c75c72c","request_id":"34432478c89b4d8591e02e0169b40a56","sql":"SELECT \"somethings\".* FROM \"somethings\" WHERE \"somethings\".\"paper\" = ? AND \"somethings\".\"stone\" = ? ORDER BY \"somethings\".\"id\" ASC LIMIT ?","params":["123","456","1"],"duration":0.22}
|
32
|
+
{"level":"debug","ts":1590972589.574199,"caller":"superlogger/action_view_log_subscriber:6","session_id":"90e90c75c72c","request_id":"34432478c89b4d8591e02e0169b40a56","view":"_partial.html.erb","duration":0.33}
|
33
|
+
{"level":"debug","ts":1590972589.574795,"caller":"superlogger/action_view_log_subscriber:6","session_id":"90e90c75c72c","request_id":"34432478c89b4d8591e02e0169b40a56","view":"index.html.erb","duration":2.95}
|
34
|
+
{"level":"info","ts":1590972589.61165,"caller":"superlogger/action_controller_log_subscriber:20","session_id":"90e90c75c72c","request_id":"34432478c89b4d8591e02e0169b40a56","view_duration":54.59,"db_duration":0.85}
|
35
|
+
{"level":"info","ts":1590972589.611928,"caller":"superlogger/superlogger_middleware:30","session_id":"90e90c75c72c","request_id":"34432478c89b4d8591e02e0169b40a56","method":"GET","path":"/home/index","response_time":85.65,"status":200}
|
43
36
|
```
|
44
37
|
|
45
|
-
## Features ##
|
46
|
-
- Timestamp (milliseconds)
|
47
|
-
- Session ID for logs belonging to the same user session (notice above that both the requests have the same session id)
|
48
|
-
- Request ID for logs belonging to the same page request (notice above that each request have a different request id)
|
49
|
-
- Hashes will be logged as key-value pairs automatically
|
50
|
-
- Requests for assets will not be logged
|
51
|
-
- File and line numbers
|
52
|
-
- IP address of request
|
53
|
-
|
54
38
|
## Installation ##
|
55
39
|
|
56
40
|
Add superlogger to your application's Gemfile
|
@@ -63,37 +47,28 @@ Execute:
|
|
63
47
|
$ bundle
|
64
48
|
```
|
65
49
|
|
66
|
-
And add the following in `config/
|
50
|
+
And add the following in `config/environment/production.rb`
|
67
51
|
```ruby
|
68
52
|
config.logger = Superlogger::Logger.new(STDOUT)
|
69
53
|
```
|
70
54
|
|
55
|
+
By default, Superlogger is only enabled in production environment because JSON is easy for machines to parse but difficult for humans to read. To forcefully enable Superlogger in non-production environment, set in `config/application.rb`:
|
56
|
+
```ruby
|
57
|
+
Superlogger.enabled = true
|
58
|
+
```
|
59
|
+
|
71
60
|
## Usage ##
|
72
61
|
|
73
62
|
Log as per normal using `Rails.logger`.
|
74
63
|
|
75
64
|
```ruby
|
76
|
-
|
77
|
-
|
78
|
-
Rails.logger.debug foo:'true', bar: 'false'
|
79
|
-
Rails.logger.info foo:'true', bar: 'false'
|
80
|
-
Rails.logger.warn foo:'true', bar: 'false'
|
81
|
-
Rails.logger.error foo:'true', bar: 'false'
|
82
|
-
Rails.logger.fatal foo:'true', bar: 'false'
|
83
|
-
end
|
84
|
-
end
|
65
|
+
Rails.logger.info foo:'true', bar: 'false'
|
66
|
+
Rails.logger.info "Meatball"
|
85
67
|
```
|
86
68
|
|
87
69
|
## Log Format ##
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
### Severity Levels ###
|
95
|
-
- **D** - Debug
|
96
|
-
- **I** - Info
|
97
|
-
- **W** - Warn
|
98
|
-
- **E** - Error
|
99
|
-
- **F** - Fatal
|
70
|
+
- `ts` = Unix Epoch timestamp
|
71
|
+
- `session_id` = Truncated to 12 characters
|
72
|
+
- `request_id` = 32 characters
|
73
|
+
- `msg` = If values given is not a hash, it is treated as `{"msg":<value>"}`
|
74
|
+
- All duration related fields are in milliseconds
|
data/lib/superlogger.rb
CHANGED
@@ -2,9 +2,13 @@ require 'superlogger/version'
|
|
2
2
|
require 'superlogger/logger'
|
3
3
|
|
4
4
|
module Superlogger
|
5
|
+
@@enabled = false
|
6
|
+
|
5
7
|
module_function
|
6
8
|
|
7
9
|
def setup(app)
|
10
|
+
return unless (Rails.env.production? || enabled)
|
11
|
+
|
8
12
|
insert_superlogger_middleware(app)
|
9
13
|
detach_existing_log_subscribers
|
10
14
|
attach_superlogger_log_subscribers
|
@@ -24,7 +28,7 @@ module Superlogger
|
|
24
28
|
require 'action_view/log_subscriber'
|
25
29
|
|
26
30
|
# remove log subscribers
|
27
|
-
|
31
|
+
remove_patterns = %w(sql.active_record
|
28
32
|
start_processing.action_controller
|
29
33
|
process_action.action_controller
|
30
34
|
render_template.action_view
|
@@ -32,8 +36,11 @@ module Superlogger
|
|
32
36
|
render_collection.action_view)
|
33
37
|
|
34
38
|
ActiveSupport::LogSubscriber.log_subscribers.each do |subscriber|
|
35
|
-
subscriber.patterns
|
36
|
-
|
39
|
+
patterns = subscriber.patterns
|
40
|
+
patterns = patterns.is_a?(Hash) ? patterns.keys : patterns
|
41
|
+
|
42
|
+
patterns.each do |pattern|
|
43
|
+
ActiveSupport::Notifications.unsubscribe pattern if remove_patterns.include?(pattern)
|
37
44
|
end
|
38
45
|
end
|
39
46
|
end
|
@@ -49,7 +56,7 @@ module Superlogger
|
|
49
56
|
end
|
50
57
|
|
51
58
|
def session_id
|
52
|
-
RequestStore.store[:superlogger_session_id]
|
59
|
+
RequestStore.store[:superlogger_session_id]
|
53
60
|
end
|
54
61
|
|
55
62
|
def request_id=(request_id)
|
@@ -57,7 +64,15 @@ module Superlogger
|
|
57
64
|
end
|
58
65
|
|
59
66
|
def request_id
|
60
|
-
RequestStore.store[:superlogger_request_id]
|
67
|
+
RequestStore.store[:superlogger_request_id]
|
68
|
+
end
|
69
|
+
|
70
|
+
def enabled=(enabled)
|
71
|
+
@@enabled=enabled
|
72
|
+
end
|
73
|
+
|
74
|
+
def enabled
|
75
|
+
@@enabled
|
61
76
|
end
|
62
77
|
end
|
63
78
|
|
@@ -5,27 +5,19 @@ module Superlogger
|
|
5
5
|
# start of controller action
|
6
6
|
def start_processing(event)
|
7
7
|
payload = event.payload
|
8
|
-
|
9
|
-
logger.debug controller: payload[:controller], action: payload[:action], params: payload[:params].except(*INTERNAL_PARAMS)
|
8
|
+
logger.debug {{ controller: payload[:controller], action: payload[:action], params: payload[:params].except(*INTERNAL_PARAMS) }}
|
10
9
|
end
|
11
10
|
|
12
11
|
# end of controller action
|
13
12
|
def process_action(event)
|
14
13
|
payload = event.payload
|
15
|
-
total_duration = event.duration.to_f.round(2)
|
16
14
|
view_duration = payload[:view_runtime].to_f.round(2) if payload.key?(:view_runtime)
|
17
15
|
db_duration = payload[:db_runtime].to_f.round(2) if payload.key?(:db_runtime)
|
18
16
|
|
19
17
|
if payload[:exception]
|
20
|
-
|
21
|
-
|
22
|
-
logger.fatal status: status, total_duration: total_duration, view_duration: view_duration, db_duration: db_duration, exception: payload[:exception]
|
18
|
+
logger.fatal view_duration: view_duration, db_duration: db_duration, exception: payload[:exception]
|
23
19
|
else
|
24
|
-
|
25
|
-
# https://github.com/pcg79/devise/commit/1e2dab3c0ce49efe2b5940c15f47388c69d6731b
|
26
|
-
payload[:status] ||= 401
|
27
|
-
|
28
|
-
logger.info status: payload[:status], total_duration: total_duration, view_duration: view_duration, db_duration: db_duration
|
20
|
+
logger.info view_duration: view_duration, db_duration: db_duration
|
29
21
|
end
|
30
22
|
end
|
31
23
|
end
|
@@ -3,7 +3,7 @@ module Superlogger
|
|
3
3
|
def render_template(event)
|
4
4
|
payload = event.payload
|
5
5
|
|
6
|
-
logger.debug view: payload[:identifier].split('/').last, duration: event.duration.round(
|
6
|
+
logger.debug {{ view: payload[:identifier].split('/').last, duration: event.duration.round(2) }}
|
7
7
|
end
|
8
8
|
alias :render_partial :render_template
|
9
9
|
alias :render_collection :render_template
|
@@ -18,10 +18,12 @@ module Superlogger
|
|
18
18
|
payload = event.payload
|
19
19
|
return if IGNORE_PAYLOAD_NAMES.include?(payload[:name])
|
20
20
|
|
21
|
-
|
22
|
-
|
21
|
+
logger.debug do
|
22
|
+
sql = payload[:sql]
|
23
|
+
params = payload[:binds].map { |b| b.value.to_s }
|
23
24
|
|
24
|
-
|
25
|
+
{ sql: sql, params: params, duration: event.duration.round(2) }
|
26
|
+
end
|
25
27
|
end
|
26
28
|
end
|
27
29
|
end
|
data/lib/superlogger/logger.rb
CHANGED
@@ -2,26 +2,25 @@ require 'request_store'
|
|
2
2
|
|
3
3
|
module Superlogger
|
4
4
|
class Logger < ActiveSupport::Logger
|
5
|
-
def initialize(*args)
|
6
|
-
super
|
7
|
-
@formatter = SimpleFormatter.new
|
8
|
-
end
|
9
|
-
|
10
5
|
def format_message(severity, time, _progname, msg)
|
11
6
|
return nil if msg.blank? # Silence nil and empty msg
|
12
7
|
return nil if is_rails_rack_logger_msg?(msg) # Silence rack logger msg
|
13
8
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
9
|
+
msg = {msg: msg} unless msg.is_a?(Hash)
|
10
|
+
|
11
|
+
h = {}
|
12
|
+
h[:level] = severity.downcase
|
13
|
+
h[:ts] = time.to_f
|
14
|
+
h[:caller] = get_caller_location
|
15
|
+
h[:session_id] = Superlogger.session_id[0..11] unless Superlogger.session_id.nil?
|
16
|
+
h[:request_id] = Superlogger.request_id unless Superlogger.request_id.nil?
|
17
|
+
h.merge!(msg)
|
20
18
|
|
21
|
-
|
19
|
+
h.to_json + "\n"
|
22
20
|
end
|
23
21
|
|
24
22
|
def is_rails_rack_logger_msg?(msg)
|
23
|
+
return false unless msg.is_a?(String)
|
25
24
|
msg =~ /Started (GET|POST|PUT|PATCH|DELETE)/
|
26
25
|
end
|
27
26
|
|
@@ -30,25 +29,12 @@ module Superlogger
|
|
30
29
|
location = caller_locations(index, 1).first
|
31
30
|
|
32
31
|
# Extract filename without file extension from location.path
|
33
|
-
# eg. superlogger/lib/superlogger/logger.rb
|
34
|
-
file = location.path.split('/').last.split('.').first
|
32
|
+
# eg. superlogger/lib/superlogger/logger.rb => superlogger/logger
|
33
|
+
file = location.path.split('/').last(2).join('/').split('.').first
|
35
34
|
|
36
35
|
"#{file}:#{location.lineno}"
|
37
36
|
end
|
38
37
|
|
39
|
-
def format_args(args)
|
40
|
-
output = if args.is_a?(Hash)
|
41
|
-
# Format args in key=value pair, separated by pipes
|
42
|
-
args.map do |key, value|
|
43
|
-
"#{key}=#{value}"
|
44
|
-
end.join(' | ')
|
45
|
-
else
|
46
|
-
args.to_s
|
47
|
-
end
|
48
|
-
|
49
|
-
output.gsub("\n", '\\n') # Escape newlines
|
50
|
-
end
|
51
|
-
|
52
38
|
# To silence double logging when running `rails server` in development mode
|
53
39
|
# See: https://github.com/rails/rails/commit/3d10d9d6c3b831fe9632c43a0ffec46104f912a7
|
54
40
|
if Rails.env.development?
|
@@ -6,7 +6,7 @@ module Superlogger
|
|
6
6
|
|
7
7
|
def call(env)
|
8
8
|
request = ActionDispatch::Request.new(env)
|
9
|
-
|
9
|
+
|
10
10
|
if request.path.start_with?('/assets/') == false
|
11
11
|
process_request(request) { @app.call(env) }
|
12
12
|
else
|
@@ -18,18 +18,18 @@ module Superlogger
|
|
18
18
|
setup_logging(request)
|
19
19
|
|
20
20
|
# Start of request
|
21
|
-
Rails.logger.info method: request.method, path: request.fullpath
|
21
|
+
Rails.logger.info method: request.method, path: request.fullpath
|
22
22
|
|
23
23
|
t1 = Time.now
|
24
|
-
|
24
|
+
status, _headers, _response = yield
|
25
25
|
ensure
|
26
26
|
t2 = Time.now
|
27
27
|
|
28
28
|
# End of request
|
29
29
|
duration = ((t2 - t1) * 1000).to_f.round(2)
|
30
|
-
Rails.logger.info method: request.method, path: request.fullpath,
|
30
|
+
Rails.logger.info method: request.method, path: request.fullpath, response_time: duration, status: status
|
31
31
|
|
32
|
-
|
32
|
+
[status, _headers, _response]
|
33
33
|
end
|
34
34
|
|
35
35
|
def setup_logging(request)
|
@@ -38,7 +38,7 @@ module Superlogger
|
|
38
38
|
request.env['rack.session'].send(:load!) unless request.env['rack.session'].id
|
39
39
|
|
40
40
|
# Store session id before any actual logging is done
|
41
|
-
Superlogger.session_id = request.env['rack.session'].id
|
41
|
+
Superlogger.session_id = request.env['rack.session'].id.to_s
|
42
42
|
end
|
43
43
|
|
44
44
|
Superlogger.request_id = request.uuid.try(:gsub, '-', '')
|
data/lib/superlogger/version.rb
CHANGED
@@ -19,8 +19,9 @@ module Dummy
|
|
19
19
|
# config.i18n.default_locale = :de
|
20
20
|
|
21
21
|
# Do not swallow errors in after_commit/after_rollback callbacks.
|
22
|
-
config.active_record.raise_in_transactional_callbacks = true
|
23
|
-
|
22
|
+
# config.active_record.raise_in_transactional_callbacks = true
|
23
|
+
|
24
|
+
Superlogger.enabled = true
|
24
25
|
config.logger = Superlogger::Logger.new(STDOUT)
|
25
26
|
end
|
26
27
|
end
|
Binary file
|
data/test/dummy/db/test.sqlite3
CHANGED
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�app/assets/javascripts/application.js?type=application/javascript&id=35457672c92c6af73d636e236ae1cd10aac4e534c8a82e7e64baa244865ef751:ET
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�app/assets/javascripts/application.js?type=application/javascript&pipeline=self&id=26fe8f914a37edbad87b42be24a2d404d35668a8dce9e4763f34d075fcac8b15:ET
|
Binary file
|
@@ -0,0 +1,2 @@
|
|
1
|
+
[o:Set:
|
2
|
+
@hash}I"environment-version:ETTI"environment-paths;TTI"rails-env;TTI"0processors:type=text/css&file_type=text/css;TTI"9file-digest://app/assets/stylesheets/application.css;TTI">processors:type=text/css&file_type=text/css&pipeline=self;TTI")file-digest://app/assets/stylesheets;TTF
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�app/assets/stylesheets/application.css?type=application/css-sourcemap+json&id=245e7a94c06b1f881c5352975228cd489f0a91feefc65246ff95e65b6b39867c:ET
|
Binary file
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�app/assets/javascripts/application.js?type=application/javascript&pipeline=debug&id=4df50b1c4e9a53c8d22402cd979528a45dbbaa3ccf84d6ddbce8b222068b566f:ET
|
@@ -0,0 +1 @@
|
|
1
|
+
"%��B�����șo�$'�A�d��L���xR�U
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�app/assets/config/manifest.js?type=application/javascript&pipeline=self&id=ce2a932dae95687b3860d16aae7a59f67f91ac4bd4205a0dc22ddcbc3385c573:ET
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�app/assets/stylesheets/application.css?type=text/css&pipeline=debug&id=3484c58768769ddd7f077d1c5fd178d80a41dd50fd8e836ed5e8085e034c5fea:ET
|
Binary file
|
File without changes
|
Binary file
|
Binary file
|
Binary file
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�app/assets/stylesheets/application.css?type=text/css&pipeline=self&id=6687bbf9d7433b294f04a3aad09b1d97293ef96e2ac308e499147fbb9172a981:ET
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�app/assets/javascripts/application.js?type=application/javascript&id=bb5330ed19289447fa41dc76755a74a1e500aed3921dc0b2894d7dda444a3f89:ET
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�app/assets/javascripts/application.js?type=application/javascript&id=c9bb4c7d24a3bd793a4481061e9093005bab65f9a254f4f6385abbd3014ca25b:ET
|