2011-08-08 18 views
2

私の実稼働環境(FreeBSD/Apache/Passenger/MySQL)のテストやバグ修正中に予期せず発生した非常に奇妙な問題があります。 ):Rails/Devise - NoMethodError(未定義のメソッドnew_with_session 'for#<クラス:0x2b2a4e34>)

$ tail log/production.log 

Started GET "https://stackoverflow.com/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で構成されています。サインインページはOKです。サインアップページでこのエラーがスローされます。

データベース(変更された型int - > bigint)でフィールドの1つ(Deviseには関係ありません)を変更し、db/schema.rbとdb/migrations/20110412205837_rename_files.rbをアップロードするまで、すべてがうまく行きました。それから私は、

$ rake db:setup RAILS_ENV='production' 

でデータベースをリセット

$ touch tmp/restart.txt 

でアプリを再起動し、新しいユーザーとしてサインアップしてみました - して、ログファイルにその不幸なエラーページとNoMethodErrorレポートを見ました。私はmodels/user.rbファイルのdeviseセクションを変更しませんでした(OK、私もそうでしたが、その後もアプリケーションを再起動し、すべて正常でした)。ここで

は私のモデル/ user.rbの工夫セクションです:

devise :database_authenticatable, :registerable 

私は、これは悲惨な問題、何か他の多分間違えた、非常に少し厄介なバグですが、私はできないことを確信していますそれが何であるか想像してみてください...私は2日間それを探していましたが、どこを見なければならないのか分かりません。人々が助けてください!

私はすでに次のことを試してみた:

のdb/schema.rbの以前のバージョンに戻さ
  • 、およびDBをリセットします。
  • レールアプリ全体の以前のバージョンにダウングレードしました。
  • 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ユーザと助成金を確認して再作成しました。
  • バンドルの更新。

何も助けない...

私は他に何ができますか?この問題はなぜ発生しましたか?

ありがとうございます。事前に入力してください!

答えて

0

私はその後

(ただしその時点で助けにはならなかった)WWW

$ chown -R www data 

に全体appディレクトリの所有者を変更し、以前(バグ狩り中に)格下げ更新に考案最新の1.4.2バージョン(

$ bundle update 

これですべてが助けられました。私はファイルの所有者がhttpdプロセスの所有者と同じ所有者でなければならないと考えている(私は理由を理解していないが)と思う($ ps aux | grep httpdでチェックする)。

# app/models/user.b 
devise :registerable 

モデルに:

Hopefulyそれはこの痛みを経験して他の誰のために誰か

4

を助ける、あなたは私と同じくらい愚かだったと含ん忘れてしまった可能性があります。

関連する問題