herokuでRailsを動かすとローカル環境(AWS cloud9)では問題ないのになぜか
We’re sorry, but something went wrong.
If you are the application owner check the logs for more information.
とエラーが表示される画面がある。
ちなみに
- AWS cloud9:SQLite3
- heroku:PostgreSQL
という構成である。
データベースを更新していないため以下のコマンドを実行すると良い。というのが多くヒットしたが
ec2-user:~/environment $ heroku run rake db:migrate
これでも解決せず。
対処方法
heroku logs --tail
上記のコマンドでログを眺めつつ確認してみると
key = params[:key] @data = Table.where('key="' + key + '"').first
これが悪さしていることが分かった。
文字列変数をダブルコーテーションで括っている書き方がいけなかったので、下のように変更。
key = params[:key] @data = Table.where("key='" + key + "'").first
SQLiteでは文字列変数をダブルコーテーションで括っても問題なかったが、PostgreSQLはダメらしい。
基本RailsはDB依存しなけど、この差は吸収してくれないのか…。
SQLを発行するロジックに対しては、文字列変数はシングルコーテーションで括るというのを基本ルールにしておいた方がよいというお話でした。
【関連】
heroku Railsでエラー(2)
コメントを残す