非常に奇妙な問題が発生しました。これは、実稼働環境 (FreeBSD/Apache/Passenger/MySQL) でのテスト/バグ修正中にまったく予想外に発生しました。
$ tail log/production.log
Started GET "/users/sign_up" for 192.168.5.7 at 2011-08-06 21:37:53 +0400
Processing by Devise::RegistrationsController#new as
SQL (1.5ms) SHOW TABLES
Completed in 15ms
NoMethodError (undefined method `new_with_session' for #<Class:0x2b2a4e34>):
app/controllers/registrations_controller.rb:71:in `build_resource'
app/controllers/registrations_controller.rb:8:in `new'
ユーザー管理はDevise gemで構成されています。サインイン ページは問題ありませんが、サインアップ ページでこのエラーがスローされます。
データベースのフィールドの 1 つ (Devise とは関係ありません) を変更し (型を int -> bigint に変更)、db/schema.rb と db/migrations/20110412205837_rename_files.rb をアップロードするまで、すべてがうまくいきました。次に、データベースをリセットします
$ rake db:setup RAILS_ENV='production'
、でアプリを再起動しました
$ touch tmp/restart.txt
、新しいユーザーとしてサインアップしようとしました-そして、その不幸なエラーページとログファイルに NoMethodError レポートが表示されました。models/user.rb ファイルのデバイス セクションは変更しませんでした (OK、変更しましたが、その後アプリを再起動したところ、すべて問題ありませんでした)。
これが私の models/user.rb デバイス セクションです。
devise :database_authenticatable, :registerable
これは悲惨な問題だと確信しています。おそらく何か他のタイプミス、非常に小さな厄介なバグですが、それが何であるか想像できません.2日間探していましたが、見つかりませんでした.他にどこを見るべきかわかりません。助けてください!
私はすでに次のことを試しました:
- 以前のバージョンの db/schema.rb に戻し、DB をリセットしました。
- Rails アプリ全体を以前のバージョンにダウングレードしました。
- app/controllers/registrations_controller.rb を app/controllers/devise および app/controllers/registrations ディレクトリに移動しました。
- Devise gem を 1.1.7 から 1.1.2 にダウングレード。
- Passenger、Apache、および FreeBSD 全体を再起動しました。
- /var/log/httpd.log および /var/log/httpd_error.log ファイルを調べました。
- データベースを再作成しました。
- MySQL ユーザーと許可を確認して再作成しました。
- バンドルの更新;
何も役に立たない...
他に何ができますか?なぜこの問題が発生したのですか?
事前にご意見をお寄せいただきありがとうございます。