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していただければすぐローカルで走らせれるのと,デプロイもできるようにはなっているかと思います.
何か不具合あれば教えていただければとても嬉しいです...!