【Rails】herokuでエラー

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)

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA


ABOUTこの記事をかいた人

子どもが産まれたことをきっかけに働き方を見直し、フリーランスSEになった30代の父親。 埼玉県某市在住。 妻と娘(5歳)とペット(フェレット)で、日々悩みながらも楽しく過ごしています。