From 9150b575075db8a2de75ab476c9c7801d2352242 Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Tue, 1 Feb 2022 09:38:44 -0500 Subject: [PATCH] tidy up a bit --- README.md | 61 ++++++++++++++++++------- app/assets/images/favicon.png | Bin 0 -> 25716 bytes app/views/layouts/application.html.erb | 35 +++++++------- app/views/machines/index.html.erb | 8 +++- app/views/machines/show.html.erb | 7 ++- app/views/pages/index.html.erb | 3 +- app/views/players/_player.html.erb | 4 +- app/views/players/index.html.erb | 53 ++++++++++----------- app/views/players/show.html.erb | 7 ++- 9 files changed, 110 insertions(+), 68 deletions(-) create mode 100644 app/assets/images/favicon.png diff --git a/README.md b/README.md index 7db80e4..3d0b7b9 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,51 @@ -# README +# [pinrails](https://nomipinball.bhh.sh) -This README would normally document whatever steps are necessary to get the -application up and running. +just a silly little site to help run the pinball tournaments at +[the coin slot](https://thecoinslottc.com/). -Things you may want to cover: +currently running on ruby 3.0.2 -* Ruby version + bundle install + RAILS_ENV=production bundle exec rails db:migrate + RAILS_ENV=production bundle exec assets:precompile -* System dependencies +## nginx config: -* Configuration + server { + listen 80; + server_name nomipinball.bhh.sh; + return 307 https://$server_name$request_uri; + } + + server { + listen 443 ssl; + include snippets/ssl/bhh.sh; + root /srv/pinrails/pinrails/public; + server_name nomipinball.bhh.sh; + + try_files $uri $uri/index.html $uri.html @rails_app; + + location @rails_app { + include proxy_params; + proxy_pass http://localhost:4000; + } + } -* Database creation +## /etc/systemd/system/pinrails.service -* Database initialization - -* How to run the test suite - -* Services (job queues, cache servers, search engines, etc.) - -* Deployment instructions - -* ... + [Unit] + Description=pinrails + Wants=network.target + + [Service] + Type=simple + User=pinrails + Group=nogroup + WorkingDirectory=/srv/pinrails/pinrails + Environment=RAILS_ENV=production + Environment=PORT=4000 + Environment=RAILS_LOG_TO_STDOUT=true + ExecStart=/srv/pinrails/.rbenv/shims/bundle exec rails server -b 127.0.0.1 + + [Install] + WantedBy=multi-user.target diff --git a/app/assets/images/favicon.png b/app/assets/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..f6862b26c8e0c792f352d164720db4d34ab61c6d GIT binary patch literal 25716 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�;#&}`4bc!?2L4kSDOy3LQ@E78iu0Y!LJ0< z&xKe)zHL&}YUY_Ka@^*x3Fr;OwwzGX*p=A(C8{MgPi_L@Yp*8hQ8Vob=CMN5g_RY2 zL2k`Y;jlVhC|848E$t%=NyuEp-uLhN!EtFMwa|pUD=DDJj~AgbRS~F8bSY5<^6OKt zv_+=kH^DDnu*$N0S-MxUAvPcj?{tEEpG^BarVUM^tQ6POQEPT)Jjr@unLnIkaz@NRdWf=LS}<4#VxZQaOVlOC zY+pj;CH23a!Jt|gTtbevU_hW3*^Dci(7HNsfYZ5uzK}Y?G`sWYnLQxkpGAVyvSDgn zqlQ0U$pyj9OL@2o_UK(S;S7R^Y-sJVrPacClY~y0;yRoW<#;D!Cd^OxdB~n?$(bI= z!mJXfT8#7D`Gf!uj*${>nC-UbL0WAM?|ht4rNPMN+9v2_Z=|In*FuuH z^hA`nql(o%VTY8=*@iYNKHMDd?x2TkUJHI|`Dz{foO$*TiY?ylTkmjD365r)_@ZN! zWM_D;b^3nE8Cdy=0&u5G!WC67kLSzoVlo7IwyGufHZ&|tQJs=XrZ@w=18$%O;m*y7yV@Y zn&R}%!}?JYVbmWq&fTlTk8VK+y2?U5%b?#>^9&)G3(edx>9e?B(o$ilyK@pZIoQbE zb*Eh&6)k$xX6Y!f^7Lvk6IrV;_@);0odMEXK1Xn+2DEwo^M}%3(o;*MrfMlSM z6d{R`Rii3ucx;j)jX|(x)t9f@obD=X38s=IkVzu$`Szs(Pj=|NdjXDhwW z&)vymp2eNGPtiK0tSUAUdvC34{IJg~^wibf%5OGY1l%@PG$EKgBmjW<`JuGylTY;O zjE&g7kRn!z7p<7T9zq_nP@@sd(<(hFjT&-9!*+aL>253C^~iKzefccEn#)Wi%o3~u z6g%D}yB2t6J5${gF-U1#IBk9WK%@OdcnU%8@^G`u#7O$W-f^>k3Ojlg3IS^1`&F`^ zcycm)a|wb783!)A+?L|Me0_A#rklF_$zl3Mijbb8_g?w@W$U-6L-He+Rzp2QYmby4 zFYX01N=@yne%}4|%~IU~P1q4PEwi`n(87FdN#6}9F(*yC@{L;i(6V0&lm9N9`Yedd zzfd*LE3d^)F@cBx9js>>RfguDn-7I=#&dkL^FO&*L~{JXE&K0b8*&vADvia)+1=fm wpvdVmV(AS&51z(>)%yS69s`;`barN09!z;#^UGcEG!aPWh5@D&eJAw)05SF$`v3p{ literal 0 HcmV?d00001 diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 7795f10..ae0092e 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -1,22 +1,23 @@ - - Knockout - - <%= csrf_meta_tags %> - <%= csp_meta_tag %> + + Knockout + + <%= csrf_meta_tags %> + <%= csp_meta_tag %> - <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %> - <%= javascript_importmap_tags %> - + <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %> + <%= javascript_importmap_tags %> + <%= favicon_link_tag asset_path('favicon.png') %> + - - - <%= yield %> - + + +<%= yield %> + diff --git a/app/views/machines/index.html.erb b/app/views/machines/index.html.erb index a20a543..bde59c2 100644 --- a/app/views/machines/index.html.erb +++ b/app/views/machines/index.html.erb @@ -1,10 +1,14 @@ -<% if not notice.nil? %>

<%= notice %>

<% end %> +<% if not notice.nil? %>

<%= notice %>

+<% end %>

Pins

<% @machines.each do |machine| %> - <%= render machine %> +

+ <%= link_to machine.name, machine %> + <%= machine.edition %> +

<% end %>
diff --git a/app/views/machines/show.html.erb b/app/views/machines/show.html.erb index 4bba20c..584dac6 100644 --- a/app/views/machines/show.html.erb +++ b/app/views/machines/show.html.erb @@ -1,9 +1,12 @@ -<% if not notice.nil? %>

<%= notice %>

<% end %> +<% if not notice.nil? %>

<%= notice %>

+<% end %> + +

<%= @machine.name %>

<%= render "form", machine: @machine %>
<%= link_to "Delete #{@machine.name} ❌", @machine, data: { turbo_method: :delete, - turbo_confirm: "Are you sure you want to remove #{@machine.name}?"} %> + turbo_confirm: "Are you sure you want to remove #{@machine.name}?" } %>
diff --git a/app/views/pages/index.html.erb b/app/views/pages/index.html.erb index e9456ca..32cfa7f 100644 --- a/app/views/pages/index.html.erb +++ b/app/views/pages/index.html.erb @@ -1,3 +1,4 @@

Knockout

-

To start the tournament, add players and make sure that the pins are up to date. Then hit randomize to automatically pick teams!

+

To start the tournament, add players and make sure that the pins are up to date. Then hit randomize to automatically + pick teams!

The source code for this app can be found <%= link_to 'here', "#{GIT_REPO}/src/commit/#{GIT_SHA}" %>.

diff --git a/app/views/players/_player.html.erb b/app/views/players/_player.html.erb index 4d1abeb..4002ea5 100644 --- a/app/views/players/_player.html.erb +++ b/app/views/players/_player.html.erb @@ -1,6 +1,8 @@

- <% if player.paid %>✓<% else %> <% end %> + <% if player.paid %>✓ + <% else %>  + <% end %> <%= link_to player.name, player %>

diff --git a/app/views/players/index.html.erb b/app/views/players/index.html.erb index 772d19a..2c011d3 100644 --- a/app/views/players/index.html.erb +++ b/app/views/players/index.html.erb @@ -1,33 +1,34 @@ -<% if not notice.nil? %>

<%= notice %>

<% end %> +<% if not notice.nil? %>

<%= notice %>

+<% end %>

Players

<% if @players.any? %> -
- - - - - - - - - <% @players.each do |player| %> - - - - - - - <% end %> - -
NamePaidStrikesDelete
<%= link_to player.name, player %> - <% if player.paid %>✓ - <% end %><%= player.strikes %><%= link_to "❌", player, data: { - turbo_method: :delete, - turbo_confirm: "Are you sure you want to remove #{player.name}?" - } %>
-
+
+ + + + + + + + + <% @players.each do |player| %> + + + + + + + <% end %> + +
NamePaidStrikesDelete
<%= link_to player.name, player %> + <% if player.paid %>✓ + <% end %><%= player.strikes %><%= link_to "❌", player, data: { + turbo_method: :delete, + turbo_confirm: "Are you sure you want to remove #{player.name}?" + } %>
+
<% end %>

<%= pluralize(@players.count, 'total player') %>

diff --git a/app/views/players/show.html.erb b/app/views/players/show.html.erb index 3d0bb78..bd72bd3 100644 --- a/app/views/players/show.html.erb +++ b/app/views/players/show.html.erb @@ -1,9 +1,12 @@ -<% if not notice.nil? %>

<%= notice %>

<% end %> +<% if not notice.nil? %>

<%= notice %>

+<% end %> + +

<%= @player.name %>

<%= render "form", player: @player %>
<%= link_to "Delete #{@player.name} ❌", @player, data: { turbo_method: :delete, - turbo_confirm: "Are you sure you want to remove #{@player.name}?"} %> + turbo_confirm: "Are you sure you want to remove #{@player.name}?" } %>