Scaffold Ruby project with Roda, Sequel, and Phlex
Assisted-by: GLM-5.1 via pi
change prmvmuroomsswqxqkxrpwlkurtzuxnkp
commit fbbae0dd202c577ed732332b20ac1fce6598c8f4
author Alpha Chen <alpha@kejadlen.dev>
date
parent nvlzznwk
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"