From 834b6402b5b66b6e70880cb74a9df507f9dcf9d6 Mon Sep 17 00:00:00 2001 From: Keshav Kk Date: Sat, 20 Sep 2025 21:28:28 +0900 Subject: [PATCH 1/2] Rails 8.1 usage & Gen --- actionwebpush-0.1.0.gem | Bin 22528 -> 23040 bytes actionwebpush.gemspec | 2 +- app/models/actionwebpush/subscription.rb | 2 ++ lib/actionwebpush.rb | 6 ++++++ lib/actionwebpush/railtie.rb | 12 ++++++++++-- 5 files changed, 19 insertions(+), 3 deletions(-) diff --git a/actionwebpush-0.1.0.gem b/actionwebpush-0.1.0.gem index c6d92cbd752014b12852c8a58d7a8fbaf08fabcb..cac323e18215950d06a5a34951e85a1fcd43a520 100644 GIT binary patch delta 19660 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 T#~+*=IN;O)voTZ81d$*P?OV&` delta 19472 zcmV)QK(xPrv;lyy0g!|lFgG^W~ zF4ISZfA2^EAuFaN8bwJ^OXeopR4IS)G68E`sf|s8kbD4JvKjd>4Kkr}VNwG35O6S# z@{$SE@Yml#&K$Zidiz5XCZjMpB1w|A|5391kUxVQYEU^SE}&KY(7*E~#~fYkVlzxg ziz@@SjWAGwa*suJvnC^Rj~#9Koe=*H{(X1QF8p#EJl$sn(&6_}a=6y=?#F*;X+b3j zH6dOiloJ);Ms2`=1ZHu2!lZ?Df@m+0R~`6{3CCj`w&(bzbAH@~{+hDYy1XOK zTr1ufgOnp|@_5lf!# z8|poXJapj#o&(%DyFMS&>!0b__0{=rXP=`g$IXxL&&F4u#*w>sxVjmio?nhT$_<-> z*M?tNUB_5;ozW7*w{dT5i#H>*bj=r;Y$03e9OO2!juk~GqKJ)d9N2Cv&*Dn>EJ2(k zBgzqH2eeZ}Q4{s5XwQFxPEd-hZ*O2b#&pTK6MRT6&hV@c(;P1;1}6~b`4CqZSJR!f zA*Q7g`bB3?@>GChZf>{w_JA2dbvrXJu^kcsRR}d`y8s0kE>7YxXH|{I8fceCpSKlt z2XUdSV^Z!V@OQFLDs`Y7p1u)TP%EE*DD*8x`GJ1AC!vPB7Vv)s(7$AND7DWX5cd_BYTUYk$PFDp4aM-jd?`%d^|{Qr&|;tz+&M;n-v)N`H=Q-{B(P0YF*8s1nze%V(yV8h{{U<-@7qWcvoTe}0g?!V8ZtIF zGXO9$GBz_eH#0UcFaR(yGcz|e03a}vVF6^b0SOKPe>jrpeAcf(7DtttS-gCHe4NsoI*Iytd~N1*@|3WY+U z%FAb`R}U|uyoj^(FW=^~w!XIZ%a`W=-&izR~kG#j;X6G-<&%fzsd;jH5u>UI9-rsxqe*4Iq zjQ;5LzrL})xn`~Z$Lkv#%k}?9d{)?YmX>*ZIxDjrzF$OXn3nKm6tV0KGe@&w+3BpT zu>D!i-X+oKJnD3QjaXQ)Ni;cyonyd;3I_ZNf7205qHqLRY)TbanXyUuA!5@oFXLf6 z4NKT=Se&v9fDW_CWR}L|6${xo%)_FXL}~f(ERP}{M4-8Vy(; zorn1-iHZX849_9yG#g#9BK{q|Uc^Ownm`wFXhi-P#YK1;C(zJ4oI zU#aQxDzZ2%p#V%r(dq1b3@3mK&B|#s4liQpfz@(BO|xlM#3g`d5lm5@r8w&}%O+6} z8l%YXbRMvm(IiWYGKY?*=Pa54A&vQfe2CLgiqueMmw*Y&$}!B}G|B)OsQ6Qae-&W* zrqQrGo6*#b;}ILCAw*yWd6*<>BFwp+rM%lAuB>XJ^|?9%AhUwl2&Z6JnSgqjp3h*p($bv3 zm;8$NNlAk&(JaYB6=A^(8I7Q-aNPy?tq$Eiz@6(N!^&B$M%$$g^VA?Lp^i!neR zX0v1jBoty_PJ!}HBO*EAe++qq3mzCro&jbYF&09jkZ{JC79dkZB@Pv>+Z{xF7}26T z(5W&8Qtxb6%TIFhFpm`VCY&7)lQ56ZuH>4C2qcXXkZd8D0?nO+Sg^`v3?zn>&2-!` z=PZn||9Kwq=^u^nViFdMJ}LS&|S zgqtj~0Az>b$k+(jl&@0`-eWpLGAcTE5XPAz?s=j;7CpqZsa7UzNmTzL4vliSox`6A z%vgxDoXt``&q$RBv%uoeN!&W3kwPZqv|AFi6j&B9K7dPKe?f>yOV3`8oz8BGi$}7( zQ?Utimc+?7=ah08!!mHQ;z>yS0Wit(QWA_loRYxpMIC930T72x2Oxg<;7w*lcoyd` z&T+^*fa9?(KIzjW#2u599kq$uD74ANkPFy)VqnXV0Q5DPmdRDM!V{DtwhY?Q8BPY% z&1=#kquraje?jbbcqMj@;Vj3RFj%xud6#p!XTbE6>{J_Q_VWxfa3-7_kGgXP8%=hJ zaABlXnOzV)hB^SG&QVk%3r`j40+;&7jHCw|TEs^1F`Z2Txn&7ok<^9yYV#5G6}Ij{ z0_TXZNpv1Oun~Ijz-RCIo@?#~`nJn?OhqV&1Pt&je>JuW6cAD_71CZ}(2mF3u6l>f zZpkeXm>bLnFj|m0H7TVw!2_fQ-~l8!;YNb;P!20=M2&%{Jj)|Fr)q?VrKGfLhG{iu zmmmgWxvE!}B-`j54Kd{GgG*djYKcHE3Lr9%kMf4ce&v`q4e^$S4{R&h>>RdzhD$Sv zDstnZe|sK_RZMeMxJOP76!OwK)!=Rrr!y1=MejVemsRpTB0&{tU68Qoyz!m4d8M8XUgVSE-xBvr-Ph^8o>zyQ-eA($lmlSZ6*QYjTKsTP!r>sx zLy!bfsDlDwigR)rrec;K0lrn4pTe|xu5l7Gkd}>As&zujIr?B1s8@*7np9TJppy<1 z(tsylHpnsxU}t;H!FkgLv^1^BzkfV+0qumyYXQJ$mh)ne#<5*& zf6`s^{Mcjfs^pe=HjkD73r`|B&Gpxu_yN<77JP@&gdr|doSzFlLv@(VQF$?idgqa> z2Q0HFIB(I;a1ESUAD22^iP^WO&B66yJh#e9G;NR!aUw_I6e*!PpB}r^Oee=<*j=X3 zsS`MP^E(LOzH5U{cmXm7$ul5*(p1g56F=hMu?tKX-C_GC}R)@BFEW)QKB7-7;1RRkCJf>e^FFz z@uSPDt^a|6>?|~pXW>79Gv?4Fr+F@j-F!ky4TQJ6VYs88H@n+Adxtw-`LXc_kk`XuA_9ha4(q){nSk{6f5?SkpF_30(9&=f9GvKId*oZ}5L)TT6Hk$ym6yb7 zP{1!p;=?UulnrMSsq1EEF&_7O$ke)rqDHq*jf|o&>4-f`W>u;-*ieB@4Y`_5?bb3o zi6?O><$0m%DLMdjhKg{+bAWo2_zeF>)U7Gk38KEd5PEG?0OC%HBT2fCe^ojHBuNJ# zh;x9B9oLUQE2Q}=#SjsjzZ{E=v+7A)bk1gQOen_uG(5^+$f!lqG>PLqKduU0^e86o z>*GEh;YM*0QD6AXrdbK7aukH1C1+J+!G!Yzy^!fqrs;4+5ARNn&7&ApqI8a@ZrU)c zZo;;A^m>OK?!P+vb?ab(eC#9H(Lkn z-TQ-g`-eNw{7V44x4ZZ109x63yR&!XL939)c7A~$?C|y0n>W~0XX`y+e}MS0?frLu zJJ|jC^$~l$|K{ZmB>uDmm~H*^W`{Qgo!Wl0wflC!UT(eJ`gwB zU=p^s1^>2>cK7$Ne;eETdq)TGa{#?OII61tx_h`YU|R>fhd3aw4))&;IyjtAW1oOP zy}ca{1&5j$GXh2M_xr=03LtyAv-JjG!Sw7I)3@Bq|CK%mJ6kW`?tGJL|AqJe^|hzg z{=e~L?a^}o|6}g|w`f!RH9CDaE5@D90m%6U9R<(DB>}1re;}J-KJ5%=Lf61`{{p~U zs2AlANn1k)$+K`soFBIqIJLs57cU_r)ZCSH*RGuox5LTw3{GCC5v1LW?(9fAi0UCm zNIjHDLCqpdW^<4e$Nyh<-?9Jq@c(r>|NFoHi?(hZ#N|Feb?z^QgdS2t#l> zOGl*S0Lp-^e>;KGueeN&;%)1Du@hIR&`QSrz#h$U9yO_YbwAU5UarUH<_!>14ve2we8G3F%%zOH@S%NAk8k3 z$d?=GpLPEaKSX$@`pZ9W|3?A9-v6IIS=#^oe?j{{Y{I`sX@F z>EP8E?#o@iDdwxNdj@4#d?>mq4{tn6IA5>gf0Wzpbl!?Y-#>!?k08+-5(DmZumm#D zaF&!l^Rd+OOz}_pgwyFNsc^F-QBsHyj8=`!Dp2J>IQfe5|I??I{r|@1+T*q5`o9C~ ze;*{Z8OXxs8G&)3iRn^Sv0V{IB{Qj{N^AmgCIXQ?3dA*&AI?DjPfM~=3Q)$lH(>D@ za0PCaG78EpsFiu{f>cB$Wj5vMv^+pt9FVGx{bHP54wyee^{vmCm{vv45Q@_F9#^~}Ce@$=_r zbOIw1=<(@0_GyaZ(Mca6*@<$tW+@rpztE6z4=udl6{Y>`FlP9BSS%8JkyQMC!;YQ zy$75b;#WtL^VuOY=e*8X71Zh|$oGFbj<;?7H{0%Sy8l1kcx3PY>yI{;`~RP6{}-G7 zMZ~o?+J;|5$(cvCsidrd)!4OEU8YW?%ZdIXOyW_9Z$-4_!i{Q&kwDKXf2Xgd_L6d; z%`2x`o~1Dw)BwjrzE+@JG>Q+-<$J=ec^{}4^CgEFu!ldA9;FW;F7ev5$2V1;cCFV5 zX)v)yRkk~uB3h#$EZL9jd3V4bt$CyHs_??|%&Lw$$>!QWJeyNpY@k6A)0-qf8|x~x zyRrbH!h!Ju29(pQKyCH}e}%qjU{p5SeY5-59fH*TZsilDU4Pf@%b`Rbcsh%dQJ`zB zdR%eFpMLoRsSbmkIU=@!LUEvDG*Hdsf9Qp!e5)k~(ArX| zq0=i{J~YL{uR9tJdC{@=o0xiKHXDweSuXLA58FM}D|f%zdp5ss?Q_kH@voBm?Sc?Y z{xFHcbT$oW^_yJvo~TSO7hw9R2x@U7pc1^l;MsK1;w9PnImm?gw8>JfGim~@#iwlL z69K#Cu$aljadH4Je>8-A-Xo}e9fO7roX(ODfe?>_N-*QRQ;sv9ztT9V$dY)?GiH>w zGwH9#nNEG?3X*fHUwU18gbb89kCxJx!JReM>gXztm#lVAhhh{XZJN-tU)}4;I|5Xv z88;PO!TunN?5_*5euhF*`%bJY$Hlk-dDhHW1sBw~p9_LJ7Rps<$*0TDxBZBl$UH+<^M!K$?e+h*{omuqj~*}O|2rW6+v_$x2afIu zY8mC>B^x1wgH@i*a(v3+Teq}Q&qnGrkdcMHjqkI%;%&Lw|0$o*>8dbTSY2CNmtte< z0qw?IV$S+se_wlKt^bWjPdA<}*Z&<@|NNlOEhh|KVCep9hyS;+FdjO7>aCp!a|wLW zb){M^s#kC zW9g#1l)nBQKS_LQDt^C#3^-5!OWzIoZ*$|xQvSO`_8&nWCESxi*SsYVukN~YG{yY9 z_e13;h<^W<;5NL-OL5SZMIA+UKGN$ved}o{Ee$TiIpq#uCwha=KXyJ2qX-{47{xlI ztI3iKe{bmwm;-w-hI($-sHmUUYxRsHx>4<2mL;{~Q%E$6p{~7F>=Y8sVseQ8J3FnF zmU@QZx9rpgUJl2ys-qRit+W(o&9@OgxhZOOCOq9NjB1V7Q8L9H-6~ItkTK<%bq?ve zaGSpruT|rhiGg@X?yC7y4nKxrQ92qGwNF(Me-lDQHjcU|P6r9kw0nu~BiqTSq%uJZ zHE}3!!xY^o-J<>>2qO8_uCnp2_nt}wni;qWVJi)jtI{>Oq0FIs9KjVN`2aUj|-ypk|V$PQGcq*b^oXehF4cpe+ApL~xM+2_wJ591>0ZRO|m z$c`8v49NTRLz-QpM-vW3;O?`PPyE|;cfLA0kIvD0Bk!RcI$$4=-B#uYHT!c9-F*P zj{ncckDhE;^54^qC(HByoxlIDHUWO7=h77UUJ@ivOEV{LKXfIXm%)gu{ebl3e^p6twf|JqYvjLe0g0AMWpY^0`zGM{dB3A{rRO zx=q?vX}CGZyv)ilF>b2_!pFXm2z%T`n9QQ$dk=u(Ubi-=fiZMV5{!{J2TU=ettZH7 z4u@efoF)9`U8NfrzZd6~xE!DoNH$u_IH9)Y&4Rl{Wuw3$!l~w&Xs1dEf9NLGY6YF% zOvrVMEMKKK%jZ!!%Tu=It>Jc9mGyp)^6Yu1D%Pu7MG8G*t6D=380-&yk34_%HX6l> z`p)k##^bKv8W@KVjAK}@+66LWC|L&bs<_2e&|N|OAX7r#NUv&(#DwZs$1om2E;f%M zHSpZ)piWDqbZx1@3)Cy(f5Wbpc695Xp3YrrfXoL1r&q|Gd}nG;H85bV`RTX9)h&rz zGPPD3;Q^5d7qj|$trF)Wsx8UtE8q9XlBjvt>bsY4wd!w0z2Y=oCtY#;_Gt5JqdRMb z`x0cuE8?gKszN8`hG8%hcU59cs97EDAKpKBF_m?@>_8GB#xN z&pQfGy#*^8mb0o?%hKyjqDhut*;VvZgM#pc8&p19hzrO%^}OC(PBo3f55YK_;VS|O zN2UESvxqKO^JvT+e;VIz9t{R5CiPZ3tJ?T%8RSaBy)nOYz|;v>fV~YZYmk)!VCAb#~qPCj}+z zEHsnDYz%Z2P$A=Z4QEeb=xCS4-WHbOrA`DoNYB$n%xN+ke(1?-@4knI_nn60hTfQm z(#h3xqbT{|e{|wv+4mAJ(4pxZUKw_}iB}ou&OyFsqU2$y5_udlx`G)k$0FyP-c*2C z;of>LDWpIeai3!7>I+?Wpeh*MV1gt(!XOglx&y6(0 zyDkTEvO+dZ!eKPdl9BdOY!l~jg-zlli3^OAGAi6%e{7T;Do}OpDEt0J&&#n-aJ_1J=$Br=RP~5s9T$2EXJuElN%*m~4(7Y+ zfuNJbzlU5D>NPedDYX@H1J&yK3+tkSY0m`lx|6>Ql-@?WdbM=aP9ZfZQ6tJ-N!Bv( z!4!ZLe@NStERD;I>~sns*lB~F4Jyd6(l?1B3rT!aqDw41%8t|!AwtG31Lzv!O*>l%U0vH#lKd}90m ze|xgAvGo6Y=kNcjC%!LU2yZ^(F}%wr!Ym=J0A4tf>xKkop=Uk1kLfqSfW|4`gk@Ys zipDyQE5`>9cxDB?0xDkELB}n8s+dEDhPwMCLSu|4iHQ z(DHKkRWNE9Lt|r>Z{l=d#xK`fy23k)a~RYWcEC?h{HM_g9uo#*ABqTMF83qVi#!*l zFt!j4Nho;0%1IbrE{qtVn{{t&kc1V36*h+4n|3U4G{fNPk^s5n&-?TTq zI_91@-HHJh-gMxAgz5?7RdYOI*Nr!&HJ>qGO4jylnKKd>LHN8!GuUU(t-?M#Ht%Ab zlPV=j_ncbqygkFuNxg6VhI>EHfAP$I!=ul5f~?Sd1TX?TGO#-ck%N>~p|; zQEtvOjqYn`&>md%1muKSm0WMq%~$CQx1lQ4T5-Q@*Wb1;+=_CYVO4Uyj%RLa)k^f| z90nYGaxRx{(=wUfmP{+b233?%Oa&c(^fVGY1w1z+@ro@^0)|koxYen(qRi*k?WUvyFxXcF*W%-#A9M3Y;}* z&>@XV$#5Z=@a`Q#UFSdDqW^201n0m1vEP5LZEP;z|NIHgf7;8C`YFp;vG__6)#a`; zmsJqU8N%WVTTJKDqLX>Oe-Ijc`U7%V&*s_BZ@?v)hK6(7P>xg3QJ#JsV6375&nNnI zfx%)qQw@w73vehZXOCUY?GcI@jb%K$A1xweYkyYQ&v@Tyou^K(Dxrpg0AV~x3M&q4 zDWN+g5i!$ty+W6#WP)gNeM(2CL*G}TPbEN$I_i9&-p9&s<}UwPf7{~@%Md-@C>3+mexA1wZA7x7Asr(l%+*}4|6u2(Q9G552e3ARZTO?w>b z1H2DiCqqM?@FT;kwZjR9>H$y`<+QxS*b7FdTx!{XPf4#ypjPtKeA%j*u5YlJI}s9F zxN}XmbfDE~O@pVJf2KEwn)90KSRky=%rk*-%7n9X8L=UTd&KCl@fi+nc5CTM}n zmd(*Efw%FrQpZj>bK*B3mNzGw8%6cp;0_=8L|oH#O<#r6|Lbmj&~Jt+-8}Hsh3>;h zJwwBT?xb)qTm$HKKQ`B$EpQ2SqB164v5q?A?+xdy3l1$tfA3}8S2TDOqEXDat2h3< z5#=ylPV1zI%uBRxZlZ|K-f#?Y7dSk6x&QvC-(TK{EI)1XzjaLg3Kv0h<3By!wB`Tx z$4{2>|6P~=ji-yQx0rTFqCu6UA`Vq)BA$>74mXv6qXHD>W;5c4b>Mf^<*X3Omi)dQ zzM;8Fj-~(+e;!N1;wl~1PcQcSRM*KxKXVXDurY1Qw=pjirjWdjMA7i}6|(L3y)Wz- zOWo!eOI=w031t-P#a zXpp(pj?}wohs4Ln2<;*}wgG~oIiJ<2u%jvFB^g%5e^gRi!%1BEq_@F)+@)~&994QX zpjB?804s+&7*;Q!YYMjF*h)B2Pr2)UFWTR8Tae_#Zqw7{XcSoGT#ve)Z@QZvb1wyt zySe}Co-PKar<=?D|IY9K+O=xs0S>-vzTf#47#6kbQO;WEk{g&2 zMqNfbfA<(2fs5x;g*bts8xqKGGqIC*(I6)zS7|nZ%{jRWk}Rc-Up!nZd|^mefvj2K zRdC?omZcE|HFg4eWCDW9Y3BPo7-IKe=hgc|j842TC@~T*v-Ez+Vd8jTsE9DFjmIc1 zhHw&fj7XEB!c|Q<>f?X+vho!g>}u8{{35#Nf4F8FxWZqUKAGdT5E-Oz<9a{iOiwl( zhMj|Pn|j0Zf6sw{7S6-r1o;cEiVf8$w`3*d2=ugPs{D+YAnrT2m;9d191Z)@&BA}) zW%F0Ue{rjW+l`1xNsSsiQv>7jR9-zzMIpz4Lr$%)QBz}ONX^hO8Ka(Dd!E<*mb$^4 zfB3OCg9gp%ITb~-=LQXwWlM71?bsS!k|l{jKjdFAzI+~YEqTRFS_a4T=Vpw^o9tW( zqFgVDn!sE(h4xLv2wiG6=OjzjCF@TyiUu=@OTjW38@zxg!g7f|V*5dzcZZ6}0 z-XZ^wtjmeK+0SE(qc_V~*mesPm3Wg@G`Rp0*)@khD!qcx=3L>PwdD-6G>wLw9~#d$ z`2vL9b5}itlj{yRJ#{83*aR(KtG9AhD_z&4+N`9ts$*qn`RD2Rwd=RuVkStuf9ehH z1D0UJE2&+1VNq^AkW0cws0#EUAzd!dsBI{=uN{bbm<%vupWEHoAiP^hKkZ*HUfSle-cck))z6- zg_-CA43sVmo-T_C+?`8+OO>`MBGuKc0{SE&ZWs zfre3YQVqUS6{f3F8uS`X3bX;MR2XK9jk=lz6(`C@OVC_BMxI-1)b1q7HCviT96Zh0 z3R=(b4Q;-i7q|YtsOlNEe*gygX}8=)S=VK^b=_^2uibh#IvZ$RM(SpruSVO!kF*ESwaNc_(J^({OYiHI=7Kt3rbq=5#}#i7=*1TroCx2)Aw*Rj`*?hcw|8b}GfAlI}RG#DKM0=r9u+RHGsh?!re?TJhxX8#~6`F<= z({N}5=_sBlmrR!PC}8JO6L#)VNRYD}U|eST2j)*uWvGmW&b=(3$ROH5PM4hKZIx0n z=Cyd_BEDgl8V#pY*(`jOp%14yxz*9F@+TBo*BLMocdG8H)k^n{u75S?tHW?IJ;U%n z6B*AfsB&+>Am+XQe_DTJ#edq^e6+Oxyo>8!qYWO8WzJ#X=c>GR4%ik{RRsyGN&(9d z3`14atVuvJq9~(5o@FI_1)`i6eVl?s7)--*-0PxE1@e}nJ77UDit`}oE77GGvaSFd zv5KIv`;!W#`vr?W#syv{Fh?jtkQLJi87Th~nfnJU?kT=f9$rZ>e=zA3XZ^Eoy#CewD zy<^uNt!;hIB^MTsR~c$rZ%Hu(o}9)_^Xvjnx&=d@0GDtUH(k+SoDxJ5r-a+|albnh zC&jDbf4lqk-TuMR*4~jXdkjse3Cz%Y=rEgJA?t&dN1PnF*KzWUb8oQ|dc_@7lr2;_ z3onfrr}d0{rgp#k+jo=iM&G^u?(KJn-G+72%m(5!xq$$zXNaQ?YTk2*&HR1}AS5 zNpDmCE6SXjf}fF4c)VY8N2y&);h!wG4w%+Z&WaPjf z)HEJ4&(;pA}{`YQ+jr`xc_fZff@$@}x>9}Bdj9gQU ztq#mu7to&DXQwk^)*KDRSV#$+S)K9Ke>=UJ{D;2cCm9S8Uhn4l=?B+xtIA1k3oJ zcVYiuVa^jJn!~Hp9iI1WH5yP8zgx8x0RVD09VRn83FBcePOXzT9g?+Eq&f}qe?#Ov znL{G6UH6dsu|%Cce*tyKA5!}m(|rgGMP3UKYMNqyg>5AFdx1T8$It9dM|Paex?WLOIvW;K1{Zr(UM!Rz^q0HuJ9e2e@Ve!g9oC9BHR=&h%Um!_LWpwd(kr}3`L4guy7>w zxTTA^>};*BJ4dR!N^%Sl1-#JTc{h&6JHyeVF$$RVZF*0Tzp&R0ufmqQBmz!!Qs_&t@j3SikP4e2w`60e|~j$z^(O67$kFuR)NT$h(E#vvMo z*2*@iyjoju*q(@q;xSIMf83*6nwl-HECtd}jK{-|W#G2R{e;mnKpMvW(|Ob|0BOOv zp`Q+nX=vSOc2_>R`g4soObuPQ?tYa{+>SVHKhk-W0LOxpqvZ{ne5bmB23A-$i(?rs zDJv(5O@U>}@AM~fJN+4R+|PbxH?&dd-*i-(m!1fcHA@qiu!`_RfB7gXJUHxWQOy<` z!cKc2K^JEBz}hu=+_WlKngh{zRA}zZ@6^Q18Kp&HKEn|Fmc=lGI0Qa!Ad^#=<#9YU zwnH((c!EV;J3f`==9%an&mLhboM4SRHT0%!W!N!(iZKQGnUJGDQ_y}}^}usOWH!Wi zDvq0a`^K#%t5OVZOxx;9vye}fFdt7lij*_XSyW|fU!|61U;$iPg`n`YEis?B>;r zng+^YlMv9NN6u!uX23&u3M;3iGXtHf4Vw$$f}?ij&NXUI*+SX4OV=1xEPWPUguh3n=7?4G)+-0dt*= zW_ci>8_+D=e|`F2@6m$?w;%_{+FIehxFvBZ!mK0AxHY7UBojJ8nS12D9{1miZtQ&W zV%H?PRHxQ@o0?eAG=jiCsiCMa8dTr=bWWn*`YDMLl+$NN7e04dPPn(3N;RF1);xQP z&DG|r;SSbeEP(6X z9R3`oJ#IUt+GI*EkIq0^PKQy!d@fI71N(n&cWnMud<#ijM`cW9(UkaMm|4re`KjX8E7jxaKQM*bvGV;Y?acCtK^!@ z{=;_^jKi>G<0M9!cUwZL-fuxAi&T(WO_Mr+Q+bWY3+%VmQGi<{;w6}~7R8TfwFE&| zW0f=~v5ZqDq#_l7f(KcKJ+YWow=+si60U|tdUkdOTN|XUDTis-^Sn~8Zn(>o-#H3R|=ksO{4NPXHX%;R%ysP;gWb}U|K}gYn zjxA}nySsO|b8y6V_m1}4mmZT^O%*9-z;qU+c&8fTfi|cEZHQ_L)L*vVyx%!wf4%1e zX8)^|-QQ!|`+Kk6?7}+hwd2xfFZbEr{?Y5*y`O6jM-+)Gj@(wpdG@ypY3Kg7Vv3#5 zLyDi;+lr|nZiiNl{)tiQq~914P?rlni)lm84kbRNd`^ovouCcC_`=n;q5$e}ruvvIVx) zt|4=5i`N`_ul?3$Y%h>P+8$+>Y2}7_l3iF9HDWxuXHE*}%;g)=E{2PaB0Q6m8Y$1F zi;2ti37I32-((u)k&YzqHV;T=45hPn5)Z0y_c2Q5p9`((U{^!k`Co{CN z_Sz~epL6^hzyHwmKZ_Z&f8R>~v%a=z>3<%ruWu~vKkttIhi^H??qKMDZmsYcg6uD> zrf#irxwXP&F?GwL%9h1cEiHD$q@@8R(TtRxgUa;2BYeHMu*3e{=56-Y>`Z37_EI z`=8$IZU=we`P==IS{>!`%&K&-`wPhZ?pi7!+x_N%Z1+1IZpDK($2=1C&y-<$gfbv_CH z1qto1Kxd0T3bq{je^d;JO~W{EVM2y;8p&&dS|~xLq6@-ek_@makB$;eHDTq|#6rb> zKl-fcW0kXh;^WV99PvOb++0q%0Rdd|7zO8oLBDC-P@W#~xKp(!tkzGPS3X<$RQ26c zto7PmO>s-Jo?@@p?alA!7+#R#Ci91}8s^^BB=JD9pVI?-f2Xjr>oFQpO}R)PSv`QG zRdwNR9-&FgO!Eq}*fZccJzrpdu63z->#W;Y>T_WscU%kadNQXeW5>N+TM9(Iu@&Zd z9?Qs46>r!o0vlm>>9b_s{y)LUu*2djIsl!w|8H*C@gJW&eZ1WN@527y>gV$dFsWjb>AW{{QSkM1B7^yqo_a z@t+@W*5f}fN!khY6k9PRgDAqX*g%-b-+=v~#a5;H&UJsDjICkM;RG z=>dNet!%h_-EhiRmQ(OmJbS)Ij|Q2^6JHQCe_(d>S0*B8NW(uei3~oU=`o65$d(~l zewA4Y6UbCQWVXZ&GUZp9l~qrDGws!Cqz7x3uW1_srqp$V&TxZPv4DrRl7d_fj8{c% zL9uDj5Rs(ch%H9(or7`j#xU`+BJc6g+W?P8;SNB+iW8AQQlR(_r^zgj%PXVp-?Gzs ze=ub&(mB2rQO1b8Dg1w6q{%kbca<+tpg(9kXw}bfa&>wuN^b^n6ihhzhyF>5ISBgDVtY|@~_2H>dfixMs(-5 z0$+mbK1sf;PYrE*j;5LeU$=yVStJTdVI^Q71%k{MrxzgLe~q~5 zkVw;FomB-)!xef>5amuuv8{q31hlj1N(9sqhQiy`82LWG{Kby$kUeR}gDxxQv*E{} zq%wtHyA8Hv1);R6-3@n4%k~$w0kd#=6@QFI3Nb>cQdqrELkrdRA}Ig*=;)pAzpJK| zDhLB2JDAOYRoMG%eRIu5$~orHe^Bcj)^;E2yAg7%7}Q+iX!97Gs**x?!8S|EcnTzH zR;RZq1zOx1j>(KY#I$;(SL4;wq^6hW2DE1e2$ypkql^7|+*Bd#nE?|Gpt0M%S5lzi zwhrBkiy(a7+fpXN!tEg@px=GlhNIpgrNGluKer&OeD)Y#z*g8HFrma8fBeq;z8C$b z*MQuK@T{zi-3?oBD@XpM#nUsEci&m0w&LcAhKo)gNRK8Z8^{2sz__=WJu>Y8O?N14 z=i@MP1ZouFb|Z?g*yVv1l|Nm%hW36`ozrKwBcL(kN z1Z~Va-yQH`dIV6Bq(}F(ju7IsrFrJw&*5AcjrN70jjHJRu{(>X40r?e0G>*hj-fo= zXmnZ_Z{6})KQ6i~f2u@_^(@%HoAMgK8rD-*T`jK;*b&>g!KT@)DAQ{YMTQMcH)fU< zRGJ2*O0*#uX3w&;mZ-s~oq}6Tp=BLAM+0YNHOT_4l&3ODOmK#e6*zvhsZJi(n;dX2 zBwhLJ;g5Au(J;EGTir!cJ#m?bQ`>jAE=zbAqJwo`M!+eue=8X?&k#dVxU$;UtRfe3 zzjk`nLkApoFTRHvqITyx8>_BH!V=&9mT)SaJMfhNXKTFYa+(l^4i(1abh2ohaU**^o0PS5)5AgR8oVwlmwUZpCSLDE68|)g1{eQ|MBF}`ex1k zV{`fb_io95f6*ug{-#H#IKZU-Tv4!$-f&{lj4j`i5356TfZz&kF zUgSf{E+M*lT{t{(Ro);BiorX;IMqnz`OQh@R#exw(Gn{0c>^q}DMu4VcQlH{Bix^e z`~in=N`L+AAzQ~g$JuF_gAhzNN>z1s8L{6$I>gtBQAIJzY>7bnZOde!@!d%nrxf<$ zxTON%WAtgj)=oSqq1hG^=Dxc>dV6#@t;-0`dTwhk$K9pQc5CCIi~v6|y;tNleo$eK z5+e4giBfhIp)@|HBspAOq0EaP!oh0Jp?QM3gW>U# zxVaU6)6YtjK&sg?JnwbUF=>{fN#dYxv({hWEE`TsY_Yl@Ao~N$poG%s1q6oKBV|SZ zww*-T^9KF1wb{{y=&Olvx98pFj+=34Nq?MrhIybN;`1#f_( zw&Bb3l8s{2-e%M`aE=y@$EvUZy8UJ)kzAf)sYKF#r)M=fcae#QEMW=~g788h-hU?- z|Md0bz-`{5lEpAOtmuSE`y%<+*Wah2p6mZ?dTYj9Swk#rmh7NJT{~6=K_zjKokmG^ z$+fpr#EFJ{CJFZz(SID1Z9ZYfVeZlYLW(U6`?*n6l2eRQWm=m9>A+FFo` zjys}<*;tif#BL+^X+FHPF&`u2T>a@qlrcR)ND;+P4@B-kLQKgpuEdm~WzagMo25 z%|Ttf$s*$!BS; zu@$y0R4}CW5hRZ9i))3O%^+&6a$o-dq!?$jWW-J*7Go#?G=CzYIBf;|pQYUEGdej! zzd*thKyd|f^P~c^!-ELuuZ%rMdug0}EoN9>|7Dbhsk9N9eT^I7dH!D>Kds&WZf27iO9KMwbSG80`0%I`9>`GKIrnYvZU z_59D}7Tv5?d)s$xjx7c6?KX!p=~fO5>yP`6)hrO0O?hYa!u5{tSeqv*&cmA6u5|22 zd&l;SQe73?L>g(UN!IIX$yBd;MestKcD;g@T#ckf6MuSfD@$*~*o)}Rp464vGhL~> z(S<{8LaSUCR4Zu3C#Ore1%1KQ*J0fco$LMQwbL=*xbBWmt_ELy9azye7DL++lc5E9 z181uX+E6I(MRVLRY3#=KzanYWw-YqWOhu8t{zEhIR3zx@KU4{e>U=w)HZhhV9p~F` z!!$f^(SO-leA18y3~%VlE{D%+D}!Xzgl9tIPi(HOm%K9fxPpg|VH}$dy^w8d)V_k& zE2B#eRk`1Q!}s3tiB<~NIoZDV3`BOgAy9WOGpn;R^j%FR?i>bQzgN(%yA61X5;B7A z0!RYkKey1-qYql}!z2+?R0!qw3pssvO@FR7we?fH3Jk<2cIz?}7GlxI65~Bv zJ^|2qP?V?gdG0Wop&@AXoQMb+b(0{;&&sG0K89H`n~)&^*)aQ>R8obsCd&YyduYMD z0Y0bJ2J;i18uDuY=OEEZjaH_5{B;^(*vUXS%V9oQ7APu>&j1U4WC)C`=Z+^#f{zrc zr+*rOgg9nBj*s3mYt31BGybLNB~b0$(~K(J(oM5;6qMO>b9gWkv%M+7ZZ@(?d8bL3 zet51Iw)`)MLr~Rn%eH7>*r_+&t=1lI{rXvVFt53P*_YC;^IuU0<0zSat>?dU@Bf}Y zeQdw~eX_Ci|9*$he-+Cv%GX3G`r?~S?SIg+w|A-Hh---Sxq#=DF43_{>Mr6|MO0F0 z-FYrk=#Z)|vz78su!C!+(NY z*ES)oSB!A0>zOu+%DIrbqn6~09*3GyK*uMv2u6zjM=F{#NWGTB&??Y?wqH^eSF7Sf*D6^)*)?kBqf+%ypNiT%U~s?FNL@POZ^JUqbQ^;TUOsbamPYI{EVuyO z)n2PsM{u%KQ!i2t3bG1Sm$6qWMSo$<13%nf`DE3)zE7x}XC-FZ5U%e#R=SQKdNrSi z9+lCt6A21A3P7RbMkSh16PaC?$j-|wMCCx6J>$~az+SviyulJ(`NSXbeyfF=goW7w zNwzIeu})pK>vUGwEhFq{P)Yw!Qt-y9?Cy! z-nzHeB~o7ArvLdqMSO0qe^~d$S8ikO`hQ~k|J;21WcmK{5BV4iT#$fT;66Jfwm`w> z52J`YBwXe(s+rmOEQWn1J2zuMF+Rf(5QV?GdLEbK*(n}@Rxwb-DrBxu$zsVPmY?Nk z`B{GM(C7aH009600{~;Pq*VZf0g(|#l2V2jHvlj)GBz_eH#0UcFaR(yG&V6d03a}v zVF6^b0aFSAe~~$o6fg_`^LfR5U?^FarOn95d4Vnykx&!ydd#MqOYK(s^?E&i{`iif zACKqr_q?Oy9p8Ta{dgW_#9Df=RCfr7p%9UHce@`40Y+MpC1x__j8 zHmENRPy2GGPiWp=ikB33qftX{O<5@kfwA~H*Z8488oV9u(wdG971zO~qHY$0W*$7y n*KsEu8kYuwG_*Lf*L@&*FS_~G{hY#`5|4kYi*; 6.0", ">= 6.0.0" + spec.add_dependency "rails", ">= 6.0" spec.add_dependency "web-push", "~> 3.0" spec.add_dependency "concurrent-ruby", "~> 1.1" spec.add_dependency "net-http-persistent", "~> 4.0" diff --git a/app/models/actionwebpush/subscription.rb b/app/models/actionwebpush/subscription.rb index c9064aa..54e1377 100644 --- a/app/models/actionwebpush/subscription.rb +++ b/app/models/actionwebpush/subscription.rb @@ -4,6 +4,8 @@ module ActionWebPush class Subscription < ActiveRecord::Base self.table_name = "action_web_push_subscriptions" + belongs_to :user + validates :endpoint, presence: true validates :p256dh_key, presence: true validates :auth_key, presence: true diff --git a/lib/actionwebpush.rb b/lib/actionwebpush.rb index baa5439..9d93c87 100644 --- a/lib/actionwebpush.rb +++ b/lib/actionwebpush.rb @@ -65,4 +65,10 @@ def config if defined?(Rails) require "actionwebpush/railtie" require "actionwebpush/engine" + + module Generators + autoload :InstallGenerator, "actionwebpush/generators/install_generator" + autoload :VapidKeysGenerator, "actionwebpush/generators/vapid_keys_generator" + autoload :CampfireMigrationGenerator, "actionwebpush/generators/campfire_migration_generator" + end end diff --git a/lib/actionwebpush/railtie.rb b/lib/actionwebpush/railtie.rb index 2df8c52..b1d4738 100644 --- a/lib/actionwebpush/railtie.rb +++ b/lib/actionwebpush/railtie.rb @@ -33,8 +33,16 @@ class Railtie < ::Rails::Railtie end initializer "action_web_push.set_autoload_paths" do |app| - app.config.autoload_paths << File.expand_path("../../app/models", __dir__) - app.config.autoload_paths << File.expand_path("../../app/controllers", __dir__) + models_path = File.expand_path("../../app/models", __dir__) + controllers_path = File.expand_path("../../app/controllers", __dir__) + + unless app.config.autoload_paths.include?(models_path) + app.config.autoload_paths += [models_path] + end + + unless app.config.autoload_paths.include?(controllers_path) + app.config.autoload_paths += [controllers_path] + end end end end \ No newline at end of file From f56f24ea97b3f34ba5a541aa2440e81cad8a4eb0 Mon Sep 17 00:00:00 2001 From: Keshav Kk Date: Sat, 20 Sep 2025 21:35:53 +0900 Subject: [PATCH 2/2] lock file --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 92fafe3..c9d4115 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -4,7 +4,7 @@ PATH actionwebpush (0.1.0) concurrent-ruby (~> 1.1) net-http-persistent (~> 4.0) - rails (~> 6.0, >= 6.0.0) + rails (>= 6.0) web-push (~> 3.0) GEM