質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.01%

Ruby on Rails Tutorial制作Appのログイン機能がheroku上でエラーに

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 827

hikaru923

score 25

前提・実現したいこと

ruby on railsを用い(この表現も正確か分かりません)自分でwebページを作ってみたいと思っております。
0から作るのではなく、
Ruby on Rails チュートリアルを全行程終わらせた成果物をブラッシュアップしていく、という形です。

現在、かなり迷走いたしまして
「git cloneして別のディレクトリに成果物をコピーしてそのアプリをいじっていたのですが
どうにもherokuにデプロイ出来なかったので結局 既存のworkspace/sample_appの本体を改造して
herokuにデプロイしていく」という状況になっております。
この質問の大前提として、プログラマ歴半年のペーペーですので
そもそも用語の使い方などにミスがあるかもしれません…すみません。

発生している問題・エラーメッセージ

sample_app以下をherokuにデプロイしたのですが
アプリ自体、トップページなどは動作するのですが
ログイン画面を利用し
ログインが完了した途端画面上に「We're sorry, but something went wrong.」と出てしまいます。
その他、「ログイン状態でなければいけないページ」には同様に遷移することが出来ません。
ちなみに、ログイン状態でなくても閲覧出来るページにおいては
画面上部のヘッダー部分は、ログイン時には「ログアウト」ボタンが現れ、ログイン状態であることが分かります。
以下に「登録済みの正しいメールアドレス/パスワードを入力してログインボタンを押した直後」の
heroku logs上のメッセージを掲載します。

2016-11-21T09:04:36.465065+00:00 heroku[router]: at=info method=POST path="/login" host=hikaru923app.herokuapp.com request_id=91150f45-3a27-4859-8fdc-5885b7559edc fwd="123.456.78.90" dyno=web.1 connect=0ms service=85ms status=302 bytes=951
2016-11-21T09:04:36.380374+00:00 app[web.1]: Started POST "/login" for 123.456.78.90 at 2016-11-21 09:04:36 +0000
2016-11-21T09:04:36.382891+00:00 app[web.1]: Processing by SessionsController#create as HTML
2016-11-21T09:04:36.382962+00:00 app[web.1]:   Parameters: {"utf8"=>"?", "authenticity_token"=>"KtXutd9ObuplqnfLlQZoBNFczQJrslgKx0QjwQeLUvL9QKmY7OITpShjywqtrLJMFfObE+utSzEaUW0YrBvg+A==", "session"=>{"email"=>"mofumofu_hikarun@docomo.ne.jp", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Log in"}
2016-11-21T09:04:36.385393+00:00 app[web.1]:   User Load (1.8ms)  SELECT  "users".* FROM "users" WHERE "users"."email" = $1 LIMIT 1  [["email", "mofumofu_hikarun@docomo.ne.jp"]]
2016-11-21T09:04:36.459518+00:00 app[web.1]:    (1.8ms)  BEGIN
2016-11-21T09:04:36.461819+00:00 app[web.1]:    (1.5ms)  COMMIT
2016-11-21T09:04:36.462262+00:00 app[web.1]: Redirected to https://hikaru923app.herokuapp.com/users/1
2016-11-21T09:04:36.462413+00:00 app[web.1]: Completed 302 Found in 79ms (ActiveRecord: 5.1ms)
2016-11-21T09:04:36.647766+00:00 heroku[router]: at=info method=GET path="/users/1" host=hikaru923app.herokuapp.com request_id=edea7163-91e7-42d9-b8a1-dded2e9935b2 fwd="123.456.78.90" dyno=web.1 connect=0ms service=10ms status=500 bytes=1714
2016-11-21T09:04:36.636031+00:00 app[web.1]: Started GET "/users/1" for 123.456.78.90 at 2016-11-21 09:04:36 +0000
2016-11-21T09:04:36.638840+00:00 app[web.1]: Processing by UsersController#show as HTML
2016-11-21T09:04:36.638858+00:00 app[web.1]:   Parameters: {"id"=>"1"}
2016-11-21T09:04:36.641309+00:00 app[web.1]:   User Load (1.7ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1  [["id", 1]]
2016-11-21T09:04:36.644114+00:00 app[web.1]: PG::UndefinedTable: ERROR:  relation "microposts" does not exist
2016-11-21T09:04:36.644115+00:00 app[web.1]: LINE 5:                WHERE a.attrelid = '"microposts"'::regclass
2016-11-21T09:04:36.644116+00:00 app[web.1]:                                           ^
2016-11-21T09:04:36.644117+00:00 app[web.1]: :               SELECT a.attname, format_type(a.atttypid, a.atttypmod),
2016-11-21T09:04:36.644119+00:00 app[web.1]:                      pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
2016-11-21T09:04:36.644121+00:00 app[web.1]:                 FROM pg_attribute a LEFT JOIN pg_attrdef d
2016-11-21T09:04:36.644121+00:00 app[web.1]:                   ON a.attrelid = d.adrelid AND a.attnum = d.adnum
2016-11-21T09:04:36.644122+00:00 app[web.1]:                WHERE a.attrelid = '"microposts"'::regclass
2016-11-21T09:04:36.644123+00:00 app[web.1]:                  AND a.attnum > 0 AND NOT a.attisdropped
2016-11-21T09:04:36.644123+00:00 app[web.1]:                ORDER BY a.attnum
2016-11-21T09:04:36.644124+00:00 app[web.1]:
2016-11-21T09:04:36.644262+00:00 app[web.1]: Completed 500 Internal Server Error in 5ms (ActiveRecord: 3.9ms)
2016-11-21T09:04:36.645436+00:00 app[web.1]:
2016-11-21T09:04:36.645437+00:00 app[web.1]: ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR:  relation "microposts" does not exist
2016-11-21T09:04:36.645438+00:00 app[web.1]: LINE 5:                WHERE a.attrelid = '"microposts"'::regclass
2016-11-21T09:04:36.645438+00:00 app[web.1]:                                           ^
2016-11-21T09:04:36.645439+00:00 app[web.1]: :               SELECT a.attname, format_type(a.atttypid, a.atttypmod),
2016-11-21T09:04:36.645439+00:00 app[web.1]:                      pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
2016-11-21T09:04:36.645440+00:00 app[web.1]:                 FROM pg_attribute a LEFT JOIN pg_attrdef d
2016-11-21T09:04:36.645440+00:00 app[web.1]:                   ON a.attrelid = d.adrelid AND a.attnum = d.adnum
2016-11-21T09:04:36.645441+00:00 app[web.1]:                WHERE a.attrelid = '"microposts"'::regclass
2016-11-21T09:04:36.645441+00:00 app[web.1]:                  AND a.attnum > 0 AND NOT a.attisdropped
2016-11-21T09:04:36.645441+00:00 app[web.1]:                ORDER BY a.attnum
2016-11-21T09:04:36.645442+00:00 app[web.1]: ):
2016-11-21T09:04:36.645442+00:00 app[web.1]:   app/controllers/users_controller.rb:13:in `show'
2016-11-21T09:04:36.645442+00:00 app[web.1]:
2016-11-21T09:04:36.645443+00:00 app[web.1]:

localhost:3000上でのアプリではこういう事は起きず、本番環境だから起きているみたいです。
色々知識もないままいじってしまったので(別のディレクトリにコピーするときも適当に色々操作してしまいました…)
この操作のせいでは?という心当たりが絞れません…。

該当のソースコード

どの部分が問題を引き起こしているのか不明なので省略させていただきます。
問題解決に向け必要なコードが御座いましたらお申し付けください。
早急に記述させていただきます。

試したこと

データベース関連のエラーかな?と思い

heroku pg:reset DATABASE


後に

heroku run rake db:migrate


を入力してデータベース再構築しようとしたのですが、最初のうちは成功しているのですが
途中から大量のエラーが…
概ね同じような内容なのでエラーを一部抜粋いたします。

・
・
・
(ここまで上手くいってそうなログ)
== 20161023193201 AddResetToUsers: migrating ==================================
(ここから怪しいログ?)
-- add_column(:users, :reset_digest, :stringreset_sent_at)
   (2.3ms)  ALTER TABLE "users" ADD "reset_digest" stringreset_sent_at
PG::UndefinedObject: ERROR:  type "stringreset_sent_at" does not exist
LINE 1: ALTER TABLE "users" ADD "reset_digest" stringreset_sent_at
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

PG::UndefinedObject: ERROR:  type "stringreset_sent_at" does not exist
LINE 1: ALTER TABLE "users" ADD "reset_digest" stringreset_sent_at
                                               ^
: ALTER TABLE "users" ADD "reset_digest" stringreset_sent_at
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.2/lib/active_record/connection_adapters/postgresql/database_statements.rb:155:in `async_exec'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.2/lib/active_record/connection_adapters/postgresql/database_statements.rb:155:in `block in execute'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.2/lib/active_record/connection_adapters/abstract_adapter.rb:473:in `block in log'
(以下略)


「stringreset_sent_at」という単語で検索しても何もヒットせず、詰んでいるという状況です。
チュートリアル上での指示でなければ、自分でこのような変数などを名付けた覚えはありません。

謝辞

問題解決にあたり、何か必要な情報などありましたら遠慮なくお申し付けください。随時追加させていただきます!
長文になりましたが、ここまで目を通していただき誠にありがとうございました。
何卒、お力添えをよろしくお願い申し上げます。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

add_columnのところは

add_column(:users, :reset_digest, :string)


が正しいんじゃないですかね。
多分ですけど、reset_sent_atって文字列をどっかでコピってそれを誤って
:stringの後ろに貼り付けちゃったんじゃないかなと
(reset_sent_atってカラム名ぽいし

最初のエラーはmicropostsがないよって言われてるよーな気がします。
これは推測ですけどmicropostsテーブルを作成する前に上記のadd_columnでエラーが発生して
つくられてないのかなーと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/11/24 13:51

    まさしくその通りでした…敬服いたします。
    雑多な情報に目を通していただき、また
    その中から簡潔に分かりやすいアドバイスをいただけて本当に
    申し訳なくもあり、ありがたくもあります。
    お世話になりました!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.01%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる