gem 'Rails', '3.0.0'
gem 'devise'
gem 'bson_ext', '>= 1.0.7'
gem 'bson', '>= 1.0.7'
gem 'mongo_mapper', :branch => 'Rails3', :git => 'http://github.com/jnunemaker/mongomapper.git'
gem 'devise-mongo_mapper', :git => 'git://github.com/collectiveidea/devise-mongo_mapper'
上記の設定では、リクエストで次のエラーが発生します。
Started GET "/users/sign_out" for 127.0.0.1 at 2010-09-27 13:16:30 +0300
Processing by Devise::SessionsController#destroy as HTML
Redirected to http://localhost:3000/
Completed 302 Found in 19ms
[2010-09-27 13:16:31] ERROR Errno::ECONNRESET: Connection reset by peer
/usr/local/Ruby/lib/Ruby/1.9.1/webrick/httpserver.rb:56:in `eof?'
/usr/local/Ruby/lib/Ruby/1.9.1/webrick/httpserver.rb:56:in `run'
/usr/local/Ruby/lib/Ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'
Started GET "/users/edit" for 127.0.0.1 at 2010-09-27 13:16:35 +0300
Processing by Devise::RegistrationsController#edit as HTML
Completed in 16ms
[2010-09-27 13:16:35] ERROR Errno::ECONNRESET: Connection reset by peer
/usr/local/Ruby/lib/Ruby/1.9.1/webrick/httpserver.rb:56:in `eof?'
/usr/local/Ruby/lib/Ruby/1.9.1/webrick/httpserver.rb:56:in `run'
/usr/local/Ruby/lib/Ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'
ユーザーモデル:
class User
include MongoMapper::Document
plugin MongoMapper::Devise
devise :registerable, :database_authenticatable, :recoverable
end
アイデア?
私の簡単な推測では、これはセッションに問題があり、protect_from_forgeryが開始されているように見えます。
同様の問題が発生し、数日間頭を壁にぶつけました。IDだけでなく、オブジェクト全体をセッションオブジェクトに割り当てていたことが判明しました。簡単に言うと、非GETリクエストは、protect_from_forgeryをトリガーするリクエストです。
WebRickはThinに置き換えられました。
次のことをすることは私のために働いた:
Gemfile:
gem 'thin'
今度はbundle install
これを私のdevelopment.rbファイルに追加すると、問題が修正されました。
config.assets.raise_runtime_errors = true
config.web_console.whitelisted_ips = replace_this_with_the_public_ip