From 1eea08bdb9a01e3b9039694d22f3bb28590dd0b3 Mon Sep 17 00:00:00 2001 From: Patrik Ragnarsson Date: Fri, 24 Sep 2021 02:08:01 +0200 Subject: [PATCH] Use SSL/TLS in development See https://github.com/socketry/localhost/tree/v1.1.9/guides/browser-configuration Uses the new integration in Puma: https://github.com/puma/puma/pull/2610 --- .foreman | 1 + Gemfile | 1 + Gemfile.lock | 4 +++- Procfile | 1 + config.ru | 17 +++++++++++++++-- test/integration/app_boot_test.rb | 14 ++++++++++++++ vendor/cache/localhost-1.1.9.gem | Bin 0 -> 11264 bytes 7 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 vendor/cache/localhost-1.1.9.gem diff --git a/.foreman b/.foreman index 29b7b59d..b4ba4c03 100644 --- a/.foreman +++ b/.foreman @@ -1 +1,2 @@ +formation: development=1 port: 8080 diff --git a/Gemfile b/Gemfile index 99fcbbeb..0a6976fa 100644 --- a/Gemfile +++ b/Gemfile @@ -27,6 +27,7 @@ gem 'pry' group :development do gem 'foreman' + gem 'localhost' end group :test do diff --git a/Gemfile.lock b/Gemfile.lock index 5d445e62..9908e104 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -34,6 +34,7 @@ GEM domain_name (~> 0.5) i18n (1.8.10) concurrent-ruby (~> 1.0) + localhost (1.1.9) method_source (1.0.0) mime-types (3.3.1) mime-types-data (~> 3.2015) @@ -145,6 +146,7 @@ DEPENDENCIES github-markup haml html-pipeline + localhost minitest octokit pg @@ -170,4 +172,4 @@ RUBY VERSION ruby 2.6.8p205 BUNDLED WITH - 2.2.23 + 2.2.25 diff --git a/Procfile b/Procfile index c2c566e8..b4cb6a5c 100644 --- a/Procfile +++ b/Procfile @@ -1 +1,2 @@ web: bundle exec puma -C config/puma.rb +development: bundle exec puma -b tcp://localhost:$(($PORT-100)) -b ssl://localhost:$(($PORT-100-1000)) diff --git a/config.ru b/config.ru index 0dd13ec9..c753777a 100644 --- a/config.ru +++ b/config.ru @@ -16,8 +16,21 @@ end require_relative 'config/app' -unless development? || test? - use Rack::SSL +# SSL/TLS in development on port $PORT-1000 (port $PORT will redirect there) +# https://github.com/socketry/localhost +require 'localhost' if development? + +unless test? + options = if development? + # Subtract 100 because of foreman offset bug: + # https://github.com/ddollar/foreman/issues/714 + # https://github.com/ddollar/foreman/issues/418 + { host: "localhost:#{ENV.fetch('PORT').to_i - 100 - 1000}" } + else + {} + end + + use Rack::SSL, options end use Rack::Session::Cookie, diff --git a/test/integration/app_boot_test.rb b/test/integration/app_boot_test.rb index c1b5511a..c4a68e1b 100644 --- a/test/integration/app_boot_test.rb +++ b/test/integration/app_boot_test.rb @@ -25,4 +25,18 @@ def test_app_boot WaitForIt.new(command_from_procfile, options) do |spawn| end end + + def test_app_development_boot + options = { + timeout: 5, + wait_for: /Worker.+booted/, + } + + ClimateControl.modify(RACK_ENV: "development", PORT: "5000") do + command = command_from_procfile(worker: "development") + + WaitForIt.new(command, options) do |spawn| + end + end + end end diff --git a/vendor/cache/localhost-1.1.9.gem b/vendor/cache/localhost-1.1.9.gem new file mode 100644 index 0000000000000000000000000000000000000000..4effe57bbf8ae07da10709c1ca6a312516583e46 GIT binary patch literal 11264 zcmeHMbx@pJmPdj+!JVMNp>en1uEE_M8WP-{MnZ6CNE!_gpm7cE1b0FR4nczj8t8qq zyHzv$W^3l3d2gp`bLy+_ez$IY=bU?_?(dxIW(TygwE|jkIRqg5QN;5b@$>T|{AK)& zem?^Ec?A%7`FZ(xh4}dd_yrMocme$ULI`v`f0ROh%h%TjXyyHzO0OL4>|FnL;dkHv zZ2iCX_Sen*?)QJ!DQzM;g8hJ^6%z8Xp-D=mFk#4K&G6?jarrOObcRj}d|CKPN=Wqd zBhK@i*4_NgWaz1#_tydivt?y_R1+WVUkPxlMkI~xOz!+}$ohV8PyuH#72(VfApnlG zVyE8*70Qv`4mYa4E$N)o*yx~j_(&aVqRW?z_Kdhwj%Ox4 z`A%O22l(m7kaO*JmOZX(u#w$x5)BP&Bz%0{cV!dFMd>&`WKO6 z(IFWC@EQ#Y2Ou94-%qVglJw!nCF&cl^Kem#;1;C&0T|tOYn@N96&vz6*j~MkH{(yg z6niRiY+}@d-u*(oITxelGvrPb^S-$9EngTDtBz6{%;l;@tjPjAlcCz$qMrTL!&Lr^zo8$c1()`Uo4zqUyD1^W7 z1UEFjG@~jF;app)BwxJLw;~pPe^Vh}{Zt7q901y1T~M`OmZmPfOwrTlE$(~=Uao>$ImkVOq}*neimT+{;_;S9uS z{Mj`$rz}=f`>yobTE7cd#f`InaTlujS~ab9hu$!CqVJCJj51bQNsmyG{8d(RC68dW zX)s8DsUI>u&>cuwLy{p7{#=69hZr_M9==^%LD^r>ZDgkL!Tp)A7JK9Rs^E^(O%Jb# z?ecaD+f7%hTSm`M!S^S?I%|NB>F}277q&I|?V7$>UxuVHBH&3CTA93~i|yfSuSI@O zpPnbDMD8+WXs8xM9{n4~$Gbw;e(89J-STVhx${}R>be94z@vOjIb(519nf94mPpgF zK(&q-N;mZyVVkwZ*4NX^MTRA?uSlJSRbZL>dvdjEFdG57tZ}$SWWcS~@{fBXEXcbX%57lhi1|8QD=D8x&>26RbNQ+4WmM`t^|PN3 z_+gpR5Blruxa@~IX!LVv2*S~Lz{hN-$PVkyHL)mCP{jd3>VO{3t>2CZ{f* zF9j2ju*s(dnn*Sd=}%~XYS+Ht)dV34yz!e5mS_PXpE$ZHX7z1L>ZP06gSmE$Ds_+< z@7(K3BOZFFS1V7}I8Ih{ocf@hlqWCMf?d$3yeOT5YzsYRcY$6G$%ZAv!Y5}d8*|Ej zn%lm^cBUn}>20eO^%=Fbpo6la-a?^Y_WsFo$Ke;;iUVcG>gduoHvb91GkO7zz~ty`#^>;FI?SIBtp>ZY#<}Bi~T%0ezx!v|2=b?Z*!>6_D0#D#hi-`sn&zg?IaM zCv2jW^Q_JOLmJ4gSWGk=%^k|P$5tymH3@a((T1Jm8ZpwuRP@FIx@0YA!8@?TEp4s+ zhUm*9K|%xMJZX+;;{uxIM0->CB@M6`^wVwl{OC>p2)%?Ycz^jR;QQ?5{V`nalhlLi zWTc3iM0Oi`*T5%_$nu{br{8>|=~=AM;g0#jd(Xtr%)|MKGz^qt|NdUNAZbAvJbW5k z7<%`udPYB#JwXawQ+Ka;r}&IxH9wpGW&>x?=+Um6N)Fq`k+gWEc?&6I4bfbZ{5+QI z!J}tFw77ebphM@%Jz&0VT3Wi9Hn#n}w7AYSAej%LiX@varn!dW+TbnHs z*<*|!hyCQ_80*N^)e9S~^#*_8c$Y999L?k|)pl*YO~_8G;Fz$iYUz|7IS0Oh-`$vN z@SAHHzxAW~#8}HJy0N}W1#KRYvOgc_<8C#JIj#364d5>Dun1vrxa~0iWL~XlvT0E> zS9W|h5{1A#Kk<8j>gD!V{Kw_vjCm#gbn|4w-|N!N;OoK0%AXR4K-!fblMH>A)Wjq2pQN%rgVkDCl3YB?r2 zU}?s)a`x&etD53+cIY&)-O6h4jWarSmE;^LIWYLhCfu~;9Ee}2DwPSd< zdfJ_#@Gj>`Fxu1f=O{Po=!XOD(H!2=3XJUTT&K@e zv#Y5#6k8NQ8`M9gf9H-refpoZ-)|Mr|6%If35$HC|rD2 zS_CadYNnWIk&INrn4Pkg*9K9_&fg-~q?Z9axb4RZBJoQt>&Sa&h?FahJSPBrv#-#AO$gP3!x^}h7$$5+V%56zH_3I zqKH2k$c|G7KU;Wmw${qw+X+DC0-u~zT>0)iGB45`JV}J5ei@esHBd|}3h=eEWJ*}* zq;yoKyBC-OCT*_s7e}}O^d!f9ee=%xuaL4(d%MhfzubRq4}2miNAa0_kK+tu%T_@S zv%y_xFK zEH;fAmthk?@a`x{^zI*{$*Ye;d#`HZMTZuZMRh6d`MUSK(t0x&+Wc3z}Nbvts|}^nOUdm zXfDc@H^`I{lGrmJhY(e9rC2z;k?;7Rx!pN^x)As1<#?F+0+ksbz!fVY7i$FhdSK=Y zdKCLX!UKyWI3Uj&L?2E@ePbs-KE=uSsv@rdi_F;r1m?ZdL)O_FEKdPWqA^boYXKA$ z_CA#5*uJ*IMa#r}1`PN7x?h;rt@vpU1`$1r7I_~UhFHhdV2+oAC~%AkHaJAS3?P{l-`I^a5ypmtawiHSdg59` z>*c?ESGaN$>xY!G2;cRp_k|k35$|4`z?-i^|N8}Zx+*;Sy6WR0MU9FThk*-d$A6)k z^2XdW%}+J3zZfe{E6xYEB0O>nDGZx?&yxTuri8McDN9plg#MWtX$q$SM^Yx}D>%|5 zg9>j3b$au#$%L&Hm{2EF&F#t?>2*Lgqge3Rg`h~gWm z&9V<$K6wQl-!2YIvE>RINpw;PuYki*-m+7XrA*Fk8(QO&bR1Y@NS66K9Sh;+7x{ig zm?J-WzAu~QJcEzQKwmPTq4mh_vR631Q>H;3`sBEU$&s$%1xqfyX0_{}b7@K{5S`&k z&C*4fn+%=eaKI9a3NNyPN=uq(<=y9T^IgbM7upyMq3Ev?_Sw09l2HrrOis<0NqO_L zyo%$ymW;G&2Pa+pwPthG8>QDOqfYpP<}AltHlm=Mde%2*ipc=R&DABSLpHZY{G_-@ zLeZwx!t{(0?s;A^fHItdrQ_Km+bHHuc`2v7(h9l%#>E1ek#x(lBQ``v8TQWoTS>Bt>O;#9FgPqKI8*NM^?mqGc35; zmV~o232ubnz`N-E5P>G6flW{O`z3}9_)bfxxcmK@`wamZ5@=TC*3)yP_YEyd-7xP2;IFf|>7Gm}?i<2BRN?#NX*=G%KW1 zS=#HP+i6DY(W5?-N*f(ZSBRuaT_6bR6c>p(wP(;hJUB(l72J>luRxpWDa9&===Ly? zn(N7g)<1bk-hA}eKm_wWK6RvIV*v_FhZ;zXGP}(OB&A2IkgqW90uj`sJPnAcFm+lX zjgyVwlD zf$T8w;#(Pr_8jJ;$Y5G#E(=c~eV_YR=XB7e{`Nh-w{rQM&dni|QW)C2>IserAZ?#l zU~dHn>0=nC;S%6F^<+?wQeRSWQJq0PKas_itz=DCM#^z7q6;)?NgXpG)U)I8XIGEw zXa4|FUe?2Es0Cg`x+jYbo+07IOyM2`lm(tYrPBB|>)bG}HCt`}U0|W|r(g~m*1*N< z%3TXTU)9f}d7);0DPz7tk{4(okYVcm7Iz#1A|-ak*C7Y=*Ld-7F#Eo2?6OhO>u73y@KK#62H3cZ>;|8sfb~^iHDUIXT5Y7(=7%(EZ0&swiK*u2n8iqxE) zc{BGg&Eu8o2e1=N^R^*$Ds>x@t^rbDG_HK$1uk;;;BA>#=+q*yXCsfyJvnWxGVM&R z8bwcAx}3ZAa@2VcoEt`;5`MZX4$skmzx@PZNZE=^Xb5;y2d=%GZK67CyRGHa<`&-{ zLBr_2=kVu2IALtR+9n^)Q}MQEufDlH_rX|RQJiGN6octJmwY82Pgp4W?5TX&Va2hG zAz8sV#6c=4Q7FSV?Zc0a+~_zFQc}(zdU7Ud4Ml2gc^!oF!;y+2a&NI0v5d@~Y@rmC zA;P4*QtQ%p!W1)oM|0Hsx$jrI3?Bl!;Go`nG&t>2IvhSPY90z-eeDYkhPVIC155FT zx8M4a;*ydO#xnTUuUElM*PHNGT>{-|j;|I?;V1|Qa5yr8fgqv>0^gqjf&X92_?!Cg z->Lt@3;1>a_ou`qvJPENfp$yaPR7l+wp|~VY-qU#lzo^s(diqA#qP&Ky{)vc&DKVW z`jH=$id);2xwA2$|I;v56=vw+1LdW4z2kNB({2yB#oZ4ZB=A*tkHatJmhCa9;+oyJ ztk2PS1a~HnhZ(IuG>@sN+nPKVo2_pK`!+yy76J3q!g&?kc2(%*RIlS)+qRu?OAHw{DN8ZW+mO3d}dcVC> z6i09Bws7aARV8ji44TH~3)R>pb!7Cv;gHddksFONp9a(?MldlcRIw0PX?)0wxcfPg z3q*p+wN@<9X7-%e>`A`N71ZGH%c13#?ix39@0$c|gj5XaB_L#4exXL1miOIOc1!Rc z$oj6qk3M$%LB78~w*-61J7T!s@dWI>bu_@_Ae9|*B=w6k&X@pbdz^0#tx z{bRa7|E&MZFYtH$UqRkq{ojA!wSV2xU;96HsUqG)(%3I9M54KQ-d+#n0K7Gd44UJV zSQYcZG_m*}R00CvQiYR4DW|l>*N?9QVZM?siw?oC+r0<%)zZo|opf6sEuUi}NRw)C zvoZe$I8qRetZiEjF>ABsbPQ%4yl~3BelCqKs(kEC?#b64QIMyUjmJz|QQE0dhf)$n zq(*8*wK~F0o#C7tlOep#!zEXJ`vk z^|js@>YzfA9+WWy_K4(WXR0oGy?uS(Xl3vVGP=NwqNbUv^Q^P?#i|QK7I@`d*mH>g zI(z@Sar(Rb{{v9KKg<8WzyA>c2>v?%|CCT6OvrLFA?PcQpNNj%A8aiCoM?B!Z_+IG zGVL)VIzv#NC4>^W<5~?jAqCwh%3NuMH9fq#?|f&is5?}u3Dbl>W^mftgBYW(f{YDb z%)^bz&3cBRg=W)!FXUHWAoK_&s|0rsI_p<4Siy*nJhZ*3?Rhu7?(S;GVZoLYkWve5 zgSt%>`e+&aZsYF}rxAYk-LifX5q5~>Yo(+yyqdM*qiSo&uYhkX(Zb|~+0EZmKUrEz zzEm7gkUa8jtl*?DAYp+i2j-R&n;P%i+p_U!H!xcu4$b>1Z0}4X*f)LP9K*8LvzrFv zsndf8x|!PzYmrTG_<3#B3eN1HF`-E7L(4=_#mn6p!YQXbi{93F&bVZ0X#NQk9MmUC z9pp^SK5}lvqjWHrsh2qxg);W?ZrF?-<&sL*A5kvD@5ztbkAn3UN37H5b<10L?vm)| zzm(5**FRjUlNsiCfI49)klbO~w+Gf;RQ&^@?moL((|K7uPQw}@Pf`fmi2*PF6es@@ Q^2-9hEbz+$|BD6w0~n4pR{#J2 literal 0 HcmV?d00001