Herokuに速攻デプロイするSinatraアプリテンプレートをつくる #3 DB/modelまわり

引き続きHerokuへのデプロイ用最軽量Sinatraアプリテンプレート的なのを作っていきます!

今回は多分最後で,databaseにデータを挿入するフォームとpostの処理を書いてきます.

サーバー上のPostgreSQLは動くようになりましたが,ローカルのSQLiteの設定をしていなかったのでまずはそこから.

SQLite設定

以下の記事を参考に進めていきます.

http://mslgt.hatenablog.com/entry/2014/12/31/010629

development環境でSQLiteが動くように設定をしていく.

まずはRakefileに以下の1行を追加.

# Rakefile
require './models/user'

db/database.ymlを作成.

development:
  adapter: sqlite3
  database: db/DATABASE.db

DBにアクセスするための処理を行うためのクラスmodels/user.rbを作成.

require 'sqlite3'
require 'sinatra/activerecord'

ActiveRecord::Base.configurations = YAML.load_file('db/database.yml')
ActiveRecord::Base.establish_connection(:development)

class Blogcontent < ActiveRecord::Base
end

これでつなげれるようになります!

あとは

$ bundle exec rake db:migrate

でmigrationファイルを実行できます.

form

まず簡単なformからつくってみます.

slimを採用しているので,以下を参考にさせていただきました.

http://qiita.com/amidaku/items/bf99a2e73478a37aa703

DOCTYPE
html
  head
    title Hello, Sinatra!

  body
    header#header
      h1.title Hello, Sinatra!

      h2 New User
      form action="/" method="post"
        label email: 
        input type="text" name="email"
        br
        label order: 
        input type="text" name="order"
        br
        input type="submit" value="Send"

      h2 Users
      - @users.each do |user|
        ul
          li = user.id 
          li = user.email
          li = user.order

post

postの処理を,app.rbに書きます.

以下のような感じにしました.

# app.rb
post '/' do
  user = User.new
  user.email = params[:email]
  user.order = params[:order]
  user.save
  slim :index
end

おわりに

これで一通りDB周りの操作もできるように設定できたかと思います!

リポジトリは以下なので,cloneしていただければすぐローカルで走らせれるのと,デプロイもできるようにはなっているかと思います.

何か不具合あれば教えていただければとても嬉しいです...!

https://github.com/totzYuta/sinatra-app-template-for-heroku