LoginSignup
1
1

【Webアプリ】Rubyで作れる超絶簡単なアプリをRailsを使わずに作ってみた

Last updated at Posted at 2024-05-21

どうもこんにちは。

今回は、RailsではないRubyのフレームワーク「sinatra」を使用して簡単なアプリを作ってみました。

sinatraについて

sinatraはRuby製のオープンソースフレームワークです。
RubyのフレームワークといえばRuby on Railsがとても有名ですが、Railsよりも少ない労力でWebアプリケーションを開発できます。

Railsとsinatraの比較

RailsだとMVCモデルという概念に沿って作られているので、ファイルを行ったり来たりする必要があります。
ただ、sinatraはそんな概念がないので、1つメインコードファイルを作って、viewファイルを作成すればほぼ完成します。
Railsを使用している方でルーティング、コントローラの概念がいまいちわからない方はsinatraを使用することで理解が深まると思います。

自分は普段からRailsを使用していますが、sinatraとRailsには近しいものを感じましたが、DBを使用しないのであればsinatraで開発した方が圧倒的に楽かなと感じました。DBを使用するのであれば、MVCモデルの概念があるRailsを使用するのが良いと思います。

ソースコードはこちらです。

Let's Go!!

手順

1. 任意のディレクトリに移動する

mkdir ruby_code
cd ruby_code

2. ターミナルでファイル/ディレクトリを作成する

touch Dockerfile
touch docker-compose.yml
touch Gemfile
touch your_script.rb
touch config.ru
mkdir views

3. Dockerfileに以下のコードを記述する

# ベースイメージとして公式のRubyイメージを使用
FROM ruby:latest

# 作業ディレクトリを設定
WORKDIR /usr/src/app

# GemfileとGemfile.lockをコピー
COPY Gemfile Gemfile.lock ./

# 依存関係をインストール
RUN bundle install

# アプリケーションのソースコードをコピー
COPY . .

# デフォルトのコマンドを設定
CMD ["bundle", "exec", "rackup", "--host", "0.0.0.0", "--port", "4567"]

4. docker-compose.ymlに以下のコードを記述する

version: '3.8'

services:
  app:
    build:
      context: .
    volumes:
      - .:/usr/src/app
    ports:
      - "4567:4567"
    environment:
      - RACK_ENV=development

5. Gemfileに以下のコードを記述する

source "https://rubygems.org"

gem "sinatra"
gem "rackup"

6. Gemfile.lockを生成する

bundle install

7. your_script.rbに以下のコードを記述する

require 'sinatra'

$data = {}

get '/' do
  'Hello, World!'
end

get '/hello/:name' do
  "Hello, #{params[:name]}!"
end

get '/index' do
  erb :index
end

get '/form' do
  erb :form
end

post '/submit' do
  $data[:name] = params[:name]
  $data[:age] = params[:age]
  redirect '/show'
end

get '/show' do
  erb :show, locals: { name: $data[:name], age: $data[:age] }
end

8. viewsディレクトリにindex/form/showのファイルを作成する

詳しくはソースコード参照

9. config.ruに以下のコードを記述する

# config.ru
require 'sinatra'
require './your_script'

set :port, 4567

run Sinatra::Application

10. Dockerイメージをビルドする

docker-compose build

11. コンテナを実行してSinatraアプリケーションを起動する

docker-compose up

12. 使用しない時はコンテナを閉じる

docker-compose down

以上です。

1
1
0

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
1
1