2

わかりました、これは非常に苛立たしくなっており、次から次へと問題が発生しています。アプリをherokuにプッシュし、URLにアクセスすると、ログイン画面が表示されます(当然のことです)。しかし、実際にログインしようとすると、「無効なユーザー名/パスワード」という警告メッセージが表示されます。ただし、私のローカルホストではすべて正常に動作します。アプリとデータベースとの通信に問題があると思います。「heroku run rake db:migrate」を実行しましたが、うまくいきません。

私のローカルホストでは、標準の sqlite3 データベースを使用していますが、エラーを避けるために、heroku にプッシュするときに gem ファイルに gem 'pg' を含める必要がありました。gem sqlite3 のままにしておくと、sqlite3.h ファイルまたはそのようなものが見つからないというエラーが表示されました。

データベースが postgres.heroku.com にあることがわかります。herokuサポートの推奨により、このgemもインストールしました

gem 'activerecord-postgresql-adapter'

ログイン情報を入力しようとしたときのherokuのログを次に示します。どんな助けでも大歓迎です。

←[36m2013-04-04T14:31:15+00:00 app[web.1]:←[0m Started POST "/session" for 74.143.68.203 at 2013-04-04 14:31:15 +0000
←[36m2013-04-04T14:31:15+00:00 app[web.1]:←[0m Processing by SessionsController#create as HTML
←[36m2013-04-04T14:31:15+00:00 app[web.1]:←[0m   Parameters: {"utf8"=>"???", "authenticity_token"=>"rQ1i9DRCV3qju2+RSBwp/9XYW8+6RiLfKfGZFNEcbT8=", "email"=>"admin@ciagent.com", "password"=>"[FILTERED]", "commit"=>"Login"}
←[36m2013-04-04T14:31:15+00:00 app[web.1]:←[0m   Rendered sessions/new.html.erb within layouts/application (0.9ms)
←[36m2013-04-04T14:31:15+00:00 app[web.1]:←[0m Completed 200 OK in 4ms (Views: 2.2ms | ActiveRecord: 1.2ms)
←[33m2013-04-04T14:31:16+00:00 heroku[router]:←[0m at=info method=GET path=/favicon.ico host=boiling-reef-2060.herokuapp.com fwd="74.143.68.203" dyno=web.1 connect=2ms service=7ms status=304 bytes=0
←[33m2013-04-04T14:31:15+00:00 heroku[router]:←[0m at=info method=POST path=/session host=boiling-reef-2060.herokuapp.com fwd="74.143.68.203" dyno=web.1 connect=1ms service=12ms status=200 bytes=1721

アプリが同じユーザー名/パスワードでlocalhostにあるときにログインできる理由がわかりませんが、アプリがherokuにあるとログイン情報を認識できません。

追加編集_ _ _ _ _ _ _ ____

ローカル アプリのコンソールを開くと、ユーザーを探すときに期待していたものが見つかりました。

$ rails c
Loading development environment (Rails 3.2.13)
irb(main):001:0> user=User.find(1)
  ←[1m←[36mUser Load (5.0ms)←[0m  ←[1mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1←[0m  [["id", 1]]
=> #<User id: 1, email: "admin@ciagent.com", hashed_password: "dc009272b087019fb2b20b691dc827dca1424a1a", created_at: "2010-10-29 19:43:00", updated_at: "2011-01-12 20:07:09", admin: "yes", logo: nil>

heroku でコンソールを開いたときにこれを探したところ、受け取ったエラーは次のとおりです。私は修正を探し続けますが、おそらく皆さんは明らかな危険信号を目にするでしょう。

Connecting to database specified by DATABASE_URL
Loading production environment (Rails 3.2.13)
irb(main):001:0> user=User.find(1)
user=User.find(1)
User Load (39.1ms)  SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1  [["id", 1]]
ActiveRecord::RecordNotFound: Couldn't find User with id=1
    from /app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.13/lib/active_record/relation/finder_methods.rb:343:in `find_one'
    from /app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.13/lib/active_record/relation/finder_methods.rb:314:in `find_with_ids'
    from /app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.13/lib/active_record/relation/finder_methods.rb:107:in `find'
    from /app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.13/lib/active_record/querying.rb:5:in `find' from (irb):1
    from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/commands/console.rb:47:in `start'
    from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/commands/console.rb:8:in `start'
    from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/commands.rb:41:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'
4

1 に答える 1

3

ローカル コンピューター (別名開発) でアプリを実行すると、ローカルsqlite データベースが使用されます。heroku (別名プロダクション) で実行すると、クラウドベースのpostgresデータベースが使用されます。これは、ライブ プロダクション データベースの破損を心配することなく、ローカル コンピューターでアプリを変更および開発できるようにするために必要です。データベースの設定は にありconfig/database.ymlます。

ユーザー名/パスワードを移行に追加した場合、db/seedsまたは移行を介して追加した場合、同じログインが開発と運用で機能することが合理的に期待できます。おそらく、これが機能したとあなたが言うとき、これはあなたが以前にしたことです。それか、本番環境と開発環境の両方が同じデータベースを指している (お勧めしません)。

ここでは機能していないため、コンソールまたはサイト自体からログインを追加したと思います。を実行heroku run rails consoleして実稼働サーバーでコンソールを開き、ログインを追加することができます。または、移行を介してそれらを追加し、本番環境で同じ移行を実行して、本番環境にも追加することができます。

于 2013-04-04T15:45:49.880 に答える