Replace tilt/ERB views with Phlex components
Assisted-by: Claude Opus 4.6 via pi
diff --git a/Gemfile b/Gemfile
index 81b64b1..734a2bd 100644
--- a/Gemfile
+++ b/Gemfile
@@ -4,10 +4,10 @@ source "https://rubygems.org"
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
+gem "phlex"
gem "puma"
gem "rackup"
gem "roda"
-gem "tilt"
gem "sequel"
gem "sqlite3"
diff --git a/Gemfile.lock b/Gemfile.lock
index d610586..a13c2d2 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -49,6 +49,9 @@ GEM
parser (3.3.10.1)
ast (~> 2.4.1)
racc
+ phlex (2.4.1)
+ refract (~> 1.0)
+ zeitwerk (~> 2.7)
prism (1.9.0)
puma (7.2.0)
nio4r (~> 2.0)
@@ -69,6 +72,9 @@ GEM
rbs-inline (0.12.0)
prism (>= 0.29)
rbs (>= 3.8.0)
+ refract (1.1.0)
+ prism
+ zeitwerk
roda (3.100.0)
rack
securerandom (0.4.1)
@@ -104,7 +110,6 @@ GEM
strscan (3.1.7)
terminal-table (4.0.0)
unicode-display_width (>= 1.1.1, < 4)
- tilt (2.7.0)
tsort (0.2.0)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
@@ -112,6 +117,7 @@ GEM
unicode-emoji (~> 4.1)
unicode-emoji (4.2.0)
uri (1.1.1)
+ zeitwerk (2.7.4)
PLATFORMS
aarch64-linux-gnu
@@ -127,6 +133,7 @@ PLATFORMS
DEPENDENCIES
minitest
+ phlex
puma
rack-test
rackup
@@ -136,7 +143,6 @@ DEPENDENCIES
sequel
sqlite3
steep
- tilt
CHECKSUMS
activesupport (8.1.2) sha256=88842578ccd0d40f658289b0e8c842acfe9af751afee2e0744a7873f50b6fdae
@@ -168,6 +174,7 @@ CHECKSUMS
mutex_m (0.3.0) sha256=cfcb04ac16b69c4813777022fdceda24e9f798e48092a2b817eb4c0a782b0751
nio4r (2.7.5) sha256=6c90168e48fb5f8e768419c93abb94ba2b892a1d0602cb06eef16d8b7df1dca1
parser (3.3.10.1) sha256=06f6a725d2cd91e5e7f2b7c32ba143631e1f7c8ae2fb918fc4cebec187e6a688
+ phlex (2.4.1) sha256=e596717fbfe38b5271840266758779ebe75092e02629f0c170287e6290a70b12
prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85
puma (7.2.0) sha256=bf8ef4ab514a4e6d4554cb4326b2004eba5036ae05cf765cfe51aba9706a72a8
racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f
@@ -180,6 +187,7 @@ CHECKSUMS
rb-inotify (0.11.1) sha256=a0a700441239b0ff18eb65e3866236cd78613d6b9f78fea1f9ac47a85e47be6e
rbs (3.10.3) sha256=70627f3919016134d554e6c99195552ae3ef6020fe034c8e983facc9c192daa6
rbs-inline (0.12.0) sha256=0b84ec69fa5b3deb89e60f08d9b47966c9e26a222c7c65b5014857a3b10c62b2
+ refract (1.1.0) sha256=ee3b9627e39f7692831101e2fedd73e0d09a592ff5d5c05f171d14211fc7a9c7
roda (3.100.0) sha256=35d36f43c68d2bd1974dc77ade8c873558265a191018e1ada88ca662f1fa8e62
securerandom (0.4.1) sha256=cc5193d414a4341b6e225f0cb4446aceca8e50d5e1888743fac16987638ea0b1
sequel (5.101.0) sha256=d2ae3fd997a7c4572e8357918e777869faf90dc19310fcd6332747122aed2b29
@@ -196,12 +204,12 @@ CHECKSUMS
steep (1.10.0) sha256=1b295b55f9aaff1b8d3ee42453ee55bc2a1078fda0268f288edb2dc014f4d7d1
strscan (3.1.7) sha256=5f76462b94a3ea50b44973225b7d75b2cb96d4e1bee9ef1319b99ca117b72c8c
terminal-table (4.0.0) sha256=f504793203f8251b2ea7c7068333053f0beeea26093ec9962e62ea79f94301d2
- tilt (2.7.0) sha256=0d5b9ba69f6a36490c64b0eee9f6e9aad517e20dcc848800a06eb116f08c6ab3
tsort (0.2.0) sha256=9650a793f6859a43b6641671278f79cfead60ac714148aabe4e3f0060480089f
tzinfo (2.0.6) sha256=8daf828cc77bcf7d63b0e3bdb6caa47e2272dcfaf4fbfe46f8c3a9df087a829b
unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42
unicode-emoji (4.2.0) sha256=519e69150f75652e40bf736106cfbc8f0f73aa3fb6a65afe62fefa7f80b0f80f
uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6
+ zeitwerk (2.7.4) sha256=2bef90f356bdafe9a6c2bd32bcd804f83a4f9b8bc27f3600fff051eb3edcec8b
BUNDLED WITH
4.0.3
diff --git a/lib/views/series/new.rb b/lib/views/series/new.rb
new file mode 100644
index 0000000..a1c4e98
--- /dev/null
+++ b/lib/views/series/new.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+require "phlex"
+
+module Views
+ module Series
+ class New < Phlex::HTML
+ def view_template
+ h1 { "New Series" }
+
+ form(method: "post", action: "/series") do
+ label(for: "name") { "Name" }
+ input(type: "text", id: "name", name: "name", required: true)
+
+ button(type: "submit") { "Create" }
+ end
+ end
+ end
+ end
+end
diff --git a/lib/web.rb b/lib/web.rb
index ff450a9..7dfe7d4 100644
--- a/lib/web.rb
+++ b/lib/web.rb
@@ -2,12 +2,12 @@
require "roda"
-class Web < Roda
- plugin :render, engine: "erb"
+require_relative "views/series/new"
+class Web < Roda
route do |r|
r.root do
- render("series/new")
+ Views::Series::New.new.call
end
end
end
diff --git a/views/series/new.erb b/views/series/new.erb
deleted file mode 100644
index e6d477c..0000000
--- a/views/series/new.erb
+++ /dev/null
@@ -1,8 +0,0 @@
-<h1>New Series</h1>
-
-<form method="post" action="/series">
- <label for="name">Name</label>
- <input type="text" id="name" name="name" required>
-
- <button type="submit">Create</button>
-</form>