- 「Docker swarmを組んだから、とりあえずWEBサーバーを動かしたい」
- 「ECSでSSMからパスワードを取れているか確認したい」
そんなとりあえず適当なWEBサーバーを動かしてみたいことが、時々ありますよね?
まあ、Sinatra でチョロっと書けばいいのですが、Sinatraのドキュメントを調べたりしているうちに「チョロっと」に毎回30分ぐらいかかっている自分に最近気づいたので、次の機会のためにコードを記事とGithubレポジトリに残しておきます。
ご自由に改変してお使いください。
コード
一応、特長を挙げると
- 1ファイルにまとめている(
views/
ディレクトリを掘るのが面倒臭い!)こと - HAMLを使っている
- marx.cssを適用しているので表示が微妙にオシャレ
- reload に対応(reload しても
__END__
以降の部分の変更が反映される)
下記ファイルをコピーして実行してください。
# app.rb
#
# $ gem install thin sinatra sinatra-contrib haml
# $ ruby app.rb
#
require 'sinatra'
require 'sinatra/reloader' if development?
get '/' do
# Reading lines below __END__ (Almost equivalent to DATA.read).
# DATA.read does not work with sinatra-reloader.
code = File.readlines(__FILE__).drop_while { |l| l !~ /^__END__$/ }.drop(1).join
haml code
end
__END__
%html
%head
%title Test
%link{rel: "stylesheet", href: "https://cdnjs.cloudflare.com/ajax/libs/marx/3.0.7/marx.min.css", integrity: "sha256-hPp3aL54H6hqtJdIpwV2551XMfx3e5ZqZDzmTsX0ol0=", crossorigin: "anonymous"}
%body
%main
%h1 Test
%h2 Host
%pre= `hostname`
%h2 Environment variables
%pre= ENV.map { |k, v| "#{k}=#{v}" }.join("\n")