- project
- controllers
- public
- views
- app.rb
- config.ru
- Gemfile
- Gemfile.lock
Gemfileを作成するには「 bundle init 」を実行します。
Gemfile
# frozen_string_literal: true
source "https://rubygems.org"
gem 'sinatra'
gem "rack"
gem 'puma'
gem "rackup"
gem 'sinatra-contrib'
config.ru
require './app'
use Rack::Static, :urls => ["/css", "/images", "/javascripts"], :root => "public"
run Rack::URLMap.new({
'/content' => ContentController,
'/top' => TopController
})
app.rb
require 'sinatra/base'
require './controllers/content_controller'
require './controllers/top_controller'
views/content/index.erb
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="/css/style.css" type="text/css" media="all">
<script src="/js/script.js"></script>
</head>
<body>
<h1>content/index</h1>
<img src="/images/hello.png" alt="">
<p><%= @message %></p>
</body>
</html>
views/top/index.erb
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>top/index</h1>
<p><%= @message %></p>
</body>
</html>
controllers/base.rb
require 'sinatra/base'
class Base < Sinatra::Base
set :root, File.join(File.dirname(__FILE__), '..')
set :views, Proc.new { File.join(root, "views") }
end
controllers/content_controller.rb
require './controllers/base'
require 'sinatra/reloader'
class ContentController < Base
get '/' do
@message = "hello"
erb :"content/index"
end
end
controllers/top_controller.rb
require './controllers/base'
require 'sinatra/reloader'
class TopController < Base
get '/' do
@message = "hello"
erb :"top/index"
end
end
public/css/style.css
h1 { color: red; }
Sinatra アプリの起動
bundle exec rackup
gem install
bundle install --path vendor/bundle
アンインストールするには、次のようにしますが管理者権限でコマンドプロンプトを起動する必要があります。
bundle exec gem uninstall gem名