LoginSignup
4
1

More than 3 years have passed since last update.

1ファイルでいい感じのWEBサーバーを作るサンプル with Ruby/Sinatra

Last updated at Posted at 2019-11-21
  • 「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")
4
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1