feat(example): add example app and blog app with demos

This commit is contained in:
dualfroz committed 2026-08-28 19:40:00 +02:00
1 parent 28e6bc3cf2
commit 7d2312b94b
13 files changed
+234

No files matched your search

+63
View File
@@ -0,0 +1,63 @@
$LOAD_PATH.unshift(File.expand_path('../lib', __dir__))
require 'prism'
class ExampleApp < Prism::Application
enable_sessions(secret: 'prism-demo-secret')
use Prism::Middleware::Logger
helpers do
def layout(title, inner)
erb(<<~TEMPLATE, locals: { title: title, inner: inner })
<!doctype html>
<html><head><title><%= title %></title></head>
<body><%== inner %></body></html>
TEMPLATE
end
end
get '/' do
html('<h1>Prism</h1>')
end
get '/hello/:name' do
greeting = erb('<p>Hello, <%= name %>!</p>', locals: { name: params['name'] })
layout('Hello', greeting)
end
get '/search' do
json(query: params['q'], page: params['page'])
end
post '/echo' do
json(received: params.to_h)
end
get '/files/*' do
json(path: params['splat'])
end
group '/api' do
get '/status' do
json(ok: true)
end
end
get '/count' do
session['count'] = (session['count'] || 0) + 1
json(count: session['count'])
end
get '/old' do
redirect '/', 301
end
end
if __FILE__ == $PROGRAM_NAME
server = Prism::Server.new(ExampleApp, port: (ARGV[0] || 0).to_i).start
puts "Prism example listening on #{server.url}"
trap('INT') do
server.stop
exit
end
sleep
end