Sinatraを使ったWebアプリ開発 データベース編
はじめに
先日、Railsの勉強のために現場で使える Ruby on Rails 5速習実践ガイド
という本でタスク管理アプリを作成しました。
そこでよりRailsの理解を深めるためにもSinatraで
タスク管理アプリを実装することにしました。
今回はSinatra,PostgreSQL,ActiveRecordをデータベースの設定に
ついてまとめました。
database.ymlのproduction設定(Herokuにデプロイすることを想定)
productionにurl: <%= ENV['DATABASE_URL'] %>を追加
# database.yml default: &default adapter: postgresql encoding: unicode pool: 5 timeout: 5000 host: localhost port: 5432 username: password: development: <<: *default database: sinatra_development test: <<: *default database: sinatra_test production: url: <%= ENV['DATABASE_URL'] %>
ActiveRecordとの連携
database.ymlに記載した<%= %>部分でエラーが出たためロードする際に
ERB.newで読み込みできるように変更
# app.rb require 'erb' configure :development, :test do ActiveRecord::Base.configurations = YAML.load(ERB.new(File.read('config/database.yml')).result) end configure :production do ActiveRecord::Base.establish_connection(ENV['DATABASE_URL']) end
感想
RailsでActiveRecordを使用する際はRailsがよしなにしてくれるが
Sinatraの場合database.ymlを読み込む記述が必要になる。
今回、SinatraでActiveRecordを使用する際のdatabase.ymlの読み込む方法を
知ることができた。
また、database.ymlで<%= %>を使っている場合は、
読み込む際にERB.newが必要なこともわかった。