LoginSignup
15
18

More than 5 years have passed since last update.

(Herokuで)Sinatraを使うためのあれこれ

Last updated at Posted at 2014-08-24

ファイル構成

他にもいろいろあるけど、とりあえず。

sinatra_app/
- views/
    - index.erb
- config/
    - database.yml
- app.rb
- Rakefile
- config.ru
- Gemfile
- model.rb

app.rb

  • model.rbを読み込ませる
app.rb
require 'sinatra'
require 'sinatra/activerecord'
require './model.rb'

get '/' do
  'hoge'
end

Gemfile

  • ローカルは、sqlite3を使う
  • herokuは、Posgresqlを使う
source 'https://rubygems.org'

ruby '1.9.3'

gem 'sinatra'
gem 'sinatra-activerecord', :require => 'sinatra/activerecord'
gem 'sinatra-reloader'
gem 'rake'

group :development, :test do
  gem 'sqlite3'
end

group :production do
  gem 'pg'
end

Rakefile

よくわかってない


require './app'
require 'sinatra/activerecord/rake'

config.ru

bundle exec rackup config.ruでSinatraアプリが起動する

config.ru
require 'rubygems'
require 'bundler'
Bundler.require
require './app'
run Sinatra::Application

model.rb

ローカル環境(:development, :test)

  • Databaseの設定はconfig/database.ymlを読み込む
  • Basic認証は、User:admin,Password:adminとする

Heroku(:production)

  • Databaseの設定は、herokuに従う(だめなら、postgres://localhost/mydbに接続する)
  • Basic認証は環境変数ENVを参照する
model.rb
configure :development, :test do
    ActiveRecord::Base.configurations = YAML.load_file('config/database.yml')
    use Rack::Auth::Basic do |username, password|
        username == 'admin' && password == 'admin'
    end
end

configure :production do
    ActiveRecord::Base.establish_connection(ENV['DATABASE_URL'] || 'postgres://localhost/mydb')
    use Rack::Auth::Basic do |username, password|
        username == ENV['BASIC_AUTH_USERNAME'] && password == ENV['BASIC_AUTH_PASSWORD']
    end
end

database.yml

開発状況にあわせて編集

config/database.yml
development:
  adapter: sqlite3
  encoding: utf8
  database: db/development.db

test:
  adapter: sqlite3
  encoding: utf8
  database: db/test.db

production:
  url: <%= ENV['DATABASE_URL'] %>

なお、herokuの仕様変更により、ActiveDirectroy4.1以降はdatabase.ymlを自動生成しないので、ちゃんと記述する必要があるようです。
(参考:The config/database.yml file no longer generated for applications using ActiveRecord 4.1+)

環境変数ENVの登録(Heroku側)

たとえば、PASSWORDの追加は下記のようにする。

$heroku config:add PASSWORD="hogehoge"

追加した環境変数ENVは、下記のコマンドで確認できる。

$heroku config
15
18
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
15
18