3

私はHartlの優れたRoR(3.2)チュートリアルを実行していて(そしてHeroku全体にデプロイして)、Herokuバージョンがローカルでホストされているアプリの動作を反映しなくなった理由に困惑しました。

私はセクション7.4.4の終わりにいます:http ://ruby.railstutorial.org/chapters/sign-up?version = 3.2#top

ローカルでホストされているアプリはすべてのテストに合格し、ユーザー/メール/パスワードの入力が正しくないか仕様外の場合に、新しいユーザーを作成し、適切なエラーメッセージを表示することができます。アプリのHerokuデプロイメントでは、そのバージョンのパスワードダイジェスト機能に問題があるように見えるため、ユーザーの作成に成功せず、エラーページも修正されません。一般的なHerokuの「申し訳ありませんが、問題が発生しました」ページに移動します。

「herokulogs」コマンドで次のことがわかります。

Started POST "/users" for 97.81.107.108 at 2012-04-10 19:41:17 +0000 2012-04-10T19:41:17+00:00 app[web.1]: Processing by UsersController#create as HTML 2012-04-10T19:41:17+00:00 app[web.1]: Parameters: {"utf8"=>"✓", "authenticity_token"=>"0jnDCpFnVq9fd/v1lgLNB7g0wHuXGi5bocTD3SINRzc=", "user"=>{"name"=>"helloq", "email"=>"this@this.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Create my account"} 2012-04-10T19:41:17+00:00 app[web.1]: 2012-04-10T19:41:17+00:00 app[web.1]: app/controllers/users_controller.rb:12:increate '2012-04-10T19:41:17 + 00:00 app [web.1]:2012-04-10T19:41:17 + 00:00 app [web.1]:NoMethodError(未定義のメソッドpassword_digest=' for #<User:0x0000000229e9e0>): 2012-04-10T19:41:17+00:00 app[web.1]: 2012-04-10T19:41:17+00:00 heroku[router]: POST simple-sword-1851.herokuapp.com/users dyno=web.1 queue=0 wait=0ms service=128ms status=500 bytes=643 2012-04-10T19:41:17+00:00 app[web.1]: Completed 500 Internal Server Error in 104ms 2012-04-10T19:41:17+00:00 app[web.1]: app/controllers/users_controller.rb:12:innew'

password_digestメソッドがローカル展開で正しく機能しているときにNoMethodErrorが発生するのはなぜですか?ローカルバージョンとリモートherokuバージョンが同じであることをgitで確認し、データベースを移行してアプリを再起動することを確認しました。

提案をありがとう!

4

1 に答える 1

2

私もチュートリアルを進めており、ほぼ完了しています。マティアスのコメントをフォローアップしたいと思います。第7章を見ると、HerokuでDBをリセットする方法はまだ説明されていません。DBを完全にクリアして移行を再実行する場合は、次のようにします。

heroku pg:reset SHARED_DATABASE --confirm simple-sword-1851
heroku run rake db:migrate

移行中に何かを台無しにしたときに、時々問題が発生しました。

于 2012-04-10T23:11:30.107 に答える