前回の記事で、cssをsqlite3に突っ込んで、sinatraを利用してjsonで出力するところまで作成しました。
今日は、更に進めてSinatraで作成したjsonを返却するプロジェクトをherokuにプッシュして簡易APIを作るところまでやりたいと思います。
ホントはRailsとgrapeでAPI作るのがよいだろうなとは思うものの、ruby殆ど書いたことない僕にとってはRailsはまだまだブラックボックス多いし、grapeも学習に時間かかりそうなので、ちゃんと理解しながら進める方法としてSinatra+herokuを選んでます。
結果
できませんでした。
sqlite3をpostgreSQLに変換するところがいまいちわからず..。RakeとかActiveRecordとかherokuの環境の知識が足りなすぎでした。あとmigrationのやり方が上手くわからなかった。もっと時間取る必要あったなぁ。とりあえず次回はローカルもPostgreSQLで作ってやろうと思います。悔しい。
試行錯誤をすこしだけ
試行錯誤がありました。herokuにプッシュしたのはいいのですが、エラーでないのにアクセスすると、Application Error
とか表示される。なんだこれー。ということで、これを解消するために色々しました。
まずHello Worldだけを表示させる画面をルートに作りました。でも、変わらない!なんで。そこで、JSONを返す部分をコメントアウトした上でもう一度pushしたところHello World表示されました。これはdbアクセスするところに問題がありそう。
ActiveRecord::Base.establish_connection( "adapter" => "sqlite3", "database" => "earth.db" )
この部分が原因と分かりました。調べてみるとherokuはデプロイ環境ではsqlite3は使えないので、postgreSQLを利用するということ。で、いろいろ調べたんですが、うまく行きません。あまりにもActiveRecord含め環境の知識が足りなすぎでした。。。
参考
- Heroku最速移行メモ | monoの開発ブログ
- 【Sinatra】ローカルではSQLiteで開発して、HerokuではPostgreSQLで運用をする方法 〜設定ファイルを書く – Try to try
- Heroku:postgres , localhost:sqlite3 @Rails | 毒林檎のblog
- » Railsで複数のデータベースを使用する TECHSCORE BLOG
- Sinatra✕ActiveRecord✕PostgreSQLでデータベース操作。 – NOT SO BAD
- Heroku上でSinatraアプリを動かすまでのまとめ – まちゅダイアリー(2011-10-02)
- これ読むと、mongoDBも簡単に出来るということで次回チャレンジしたい。