LoginSignup
10
10

More than 5 years have passed since last update.

Webアプリのスケルトンを作る(sinatra編)

Last updated at Posted at 2015-04-22

Webアプリを作るときに以下の機能と環境をサッと使えるようにするためのスケルトンを作りました。
サーバーサイド
sinatra / slim / activerecord / sqlite3 / rspec
フロントエンド
sass / coffeescript / jquery / bootstrap3

ゴールとしては、コマンド一発でWebサーバーを起動してフロントエンド周りをビルドして、
js、css、rubyのファイル更新時にライブリロードさせることです。ビルドツールはgulpを使います。
とりあえずgemファイルから。

Gemfile
source 'https://rubygems.org'


gem 'sinatra'
gem 'slim'
gem 'sqlite3'
gem 'sinatra-activerecord'
gem 'rake'



group :development, :test do  
  gem 'shotgun' # ローカルサーバー
  
  gem 'foreman' # コマンドの一括実行
  
  gem 'rspec'
end

アプリケーションの起動にはforemanというgemを使います。
foremanはProcfileに書いたコマンドを一括で実行してくれます。

bundle exec foreman start

これでサーバーを起動してビルドを走らせたいのでProcfileを次のように書きます。

Procfile
application: bundle exec shotgun -p 8000

gulp: gulp

foremanではshotgunというgemを実行します。
shotgunを使うことでファイル編集時にサーバー再起動する必要がなくなるので、
sinatraアプリ側にsinatra/reloaderを記述せずにすみます。
ホストを指定したい場合はoオプションで指定します。ポートを指定しない場合は9393が使われます。
shotgunはrackアプリケーションなので、config.ruを読み込んで実行します。

config.ru
require './app'
run App

ここではsinatraのapp.rbをロードして実行しています。
これで、sinatra -> shotgun -> foreman の流れができました。
あとはapp.rbです。

app.rb
# encoding: utf-8
require 'bundler'
Bundler.require
set :database, { :adapter => 'sqlite3', :database => 'db/app.db' }

class App < Sinatra::Base

  
  get '/' do    
    slim :index  
  end


end

Bundler.requireで手持ちのgemを呼び出しておいて、sinatra-activerecordを使ってDB接続します。
アプリから使うにはこれでいいのですがマイグレーションもしたいので、rakeを実行できるようにRakefileも作ります。

Rakefile
require 'sinatra/activerecord/rake'


namespace :db do
  task :load_config do  
    require './app'  
  end
end

これでrake db:createやrake db:migrateができるようになります。
サーバーサイドはここまでにして、次はフロントエンドの方やっていきます。

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