ファイル構成
他にもいろいろあるけど、とりあえず。
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