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