sinatraでjsonを返すプロジェクトをherokuにアップして簡易APIを作成しようとしたができなかった

sinatraでjsonを返すプロジェクトをherokuにアップして簡易APIを作成しようとしたができなかった前回の記事で、cssをsqlite3に突っ込んで、sinatraを利用してjsonで出力するところまで作成しました。

  1. sqlite3にcsvからデータをインポートする – Morizotter Blog
  2. csvからsqliteに入れたデータをJSONで出力する – Morizotter Blog

今日は、更に進めてSinatraで作成したjsonを返却するプロジェクトをherokuにプッシュして簡易APIを作るところまでやりたいと思います。

ホントはRailsとgrapeでAPI作るのがよいだろうなとは思うものの、ruby殆ど書いたことない僕にとってはRailsはまだまだブラックボックス多いし、grapeも学習に時間かかりそうなので、ちゃんと理解しながら進める方法としてSinatra+herokuを選んでます。

結果

できませんでした。

sqlite3をpostgreSQLに変換するところがいまいちわからず..。RakeとかActiveRecordとかherokuの環境の知識が足りなすぎでした。あとmigrationのやり方が上手くわからなかった。もっと時間取る必要あったなぁ。とりあえず次回はローカルもPostgreSQLで作ってやろうと思います。悔しい。

試行錯誤をすこしだけ

試行錯誤がありました。herokuにプッシュしたのはいいのですが、エラーでないのにアクセスすると、Application Errorとか表示される。なんだこれー。ということで、これを解消するために色々しました。

Error

まずHello Worldだけを表示させる画面をルートに作りました。でも、変わらない!なんで。そこで、JSONを返す部分をコメントアウトした上でもう一度pushしたところHello World表示されました。これはdbアクセスするところに問題がありそう。

ActiveRecord::Base.establish_connection(
  "adapter" => "sqlite3",
  "database" => "earth.db"
)

この部分が原因と分かりました。調べてみるとherokuはデプロイ環境ではsqlite3は使えないので、postgreSQLを利用するということ。で、いろいろ調べたんですが、うまく行きません。あまりにもActiveRecord含め環境の知識が足りなすぎでした。。。

参考

Pocket
LINEで送る

You may also like...