Scaffold Ruby project with Roda, Sequel, and Phlex
Assisted-by: GLM-5.1 via pi
diff --git a/Gemfile b/Gemfile
new file mode 100644
index 0000000..576c30a
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+source "https://rubygems.org"
+
+ruby "~> 3.3"
+
+gem "roda"
+gem "puma"
+gem "rackup"
+gem "phlex"
+gem "sequel"
+gem "sqlite3"
+gem "rake"
+
+group :development, :test do
+ gem "minitest"
+ gem "rack-test"
+end
diff --git a/Gemfile.lock b/Gemfile.lock
new file mode 100644
index 0000000..b2eec0d
--- /dev/null
+++ b/Gemfile.lock
@@ -0,0 +1,68 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ bigdecimal (4.1.2)
+ drb (2.2.3)
+ minitest (6.0.6)
+ drb (~> 2.0)
+ prism (~> 1.5)
+ nio4r (2.7.5)
+ phlex (2.4.1)
+ refract (~> 1.0)
+ zeitwerk (~> 2.7)
+ prism (1.9.0)
+ puma (8.0.1)
+ nio4r (~> 2.0)
+ rack (3.2.6)
+ rack-test (2.2.0)
+ rack (>= 1.3)
+ rackup (2.3.1)
+ rack (>= 3)
+ rake (13.4.2)
+ refract (1.1.0)
+ prism
+ zeitwerk
+ roda (3.103.0)
+ rack
+ sequel (5.104.0)
+ bigdecimal
+ sqlite3 (2.9.3-aarch64-linux-gnu)
+ sqlite3 (2.9.3-aarch64-linux-musl)
+ sqlite3 (2.9.3-arm-linux-gnu)
+ sqlite3 (2.9.3-arm-linux-musl)
+ sqlite3 (2.9.3-arm64-darwin)
+ sqlite3 (2.9.3-x86-linux-gnu)
+ sqlite3 (2.9.3-x86-linux-musl)
+ sqlite3 (2.9.3-x86_64-darwin)
+ sqlite3 (2.9.3-x86_64-linux-gnu)
+ sqlite3 (2.9.3-x86_64-linux-musl)
+ zeitwerk (2.7.5)
+
+PLATFORMS
+ aarch64-linux-gnu
+ aarch64-linux-musl
+ arm-linux-gnu
+ arm-linux-musl
+ arm64-darwin
+ x86-linux-gnu
+ x86-linux-musl
+ x86_64-darwin
+ x86_64-linux-gnu
+ x86_64-linux-musl
+
+DEPENDENCIES
+ minitest
+ phlex
+ puma
+ rack-test
+ rackup
+ rake
+ roda
+ sequel
+ sqlite3
+
+RUBY VERSION
+ ruby 3.3.8p144
+
+BUNDLED WITH
+ 2.6.7
diff --git a/Rakefile b/Rakefile
new file mode 100644
index 0000000..a06b1c5
--- /dev/null
+++ b/Rakefile
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+require "rake/testtask"
+
+Rake::TestTask.new(:test) do |t|
+ t.libs << "test"
+ t.libs << "lib"
+ t.test_files = FileList["test/**/test_*.rb"]
+end
+
+task default: :test
diff --git a/bin/setup b/bin/setup
new file mode 100755
index 0000000..6e2106c
--- /dev/null
+++ b/bin/setup
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+bundle install
diff --git a/config.ru b/config.ru
new file mode 100644
index 0000000..d8576e9
--- /dev/null
+++ b/config.ru
@@ -0,0 +1,5 @@
+# frozen_string_literal: true
+
+require_relative "app"
+
+run App
diff --git a/lib/app.rb b/lib/app.rb
new file mode 100644
index 0000000..c130264
--- /dev/null
+++ b/lib/app.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+require "roda"
+
+class App < Roda
+ route do |r|
+ r.root do
+ "ok"
+ end
+ end
+end
diff --git a/test/test_app.rb b/test/test_app.rb
new file mode 100644
index 0000000..81dd232
--- /dev/null
+++ b/test/test_app.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+require_relative "test_helper"
+require "rack/test"
+require_relative "../lib/app"
+
+class TestApp < Minitest::Test
+ include Rack::Test::Methods
+
+ def app
+ App
+ end
+
+ def test_root
+ get "/"
+ assert_equal 200, last_response.status
+ assert_equal "ok", last_response.body
+ end
+end
diff --git a/test/test_helper.rb b/test/test_helper.rb
new file mode 100644
index 0000000..a93651f
--- /dev/null
+++ b/test/test_helper.rb
@@ -0,0 +1,3 @@
+# frozen_string_literal: true
+
+require "minitest/autorun"