ruby-on-rails-3 heroku mongoid mongohq moped

ruby on rails 3 - Heroku & MongoHQ: ActionView:: Template:: Error(La operación:#<Moped:: Protocol:: Commands:: La autenticación falló con el error "auth failed")



ruby-on-rails-3 mongoid (1)

El problema es que sus credenciales de autenticación ya no son correctas. Específicamente, el usuario al que intenta autenticar ya no existe.

La razón es que cuando haces un rake db:reseed todos los datos se eliminan, incluidos los usuarios del nivel de base de datos.

Ejemplo:

➜ skadi git:(master) ✗ mongo MongoDB shell version: 2.0.7 connecting to: test > use skadi_development switched to db skadi_development > db.system.users.find() > db.addUser("joe", "passwordForJoe") { "n" : 0, "connectionId" : 191, "err" : null, "ok" : 1 } { "user" : "joe", "readOnly" : false, "pwd" : "dac588613249fe92703afb262ec53b82", "_id" : ObjectId("5030d5181cefbd2b04a99e30") } > db.system.users.find() { "_id" : ObjectId("5030d5181cefbd2b04a99e30"), "user" : "joe", "readOnly" : false, "pwd" : "dac588613249fe92703afb262ec53b82" } > exit bye ➜ skadi git:(master) ✗ rake db:reseed ➜ skadi git:(master) ✗ mongo MongoDB shell version: 2.0.7 connecting to: test > use skadi_development switched to db skadi_development > db.system.users.find() => Nothing

Entonces, cuando intenta conectarse a la base de datos, sus credenciales ya no son válidas.

Puede verificarlo en su panel de administración de MongoHQ. Puede encontrarlo yendo a Heroku, seleccionando su aplicación, haciendo clic en los recursos y haciendo clic en MongoHQ. A continuación, haga clic en la pestaña Usuarios de la base de datos.

rake db:reseed solía funcionar como esperabas, pero cambió con la nueva versión de mongoid. Para eliminar todas las colecciones, excepto system. *, Puede usar rake db:purge .

Es posible que necesite usar la rama maestra dado que esa tarea de rastreo aún no está disponible en la versión estable. ¡O simplemente usa Mongoid.purge! en tu código, eso funciona en estable.

Detalles: https://github.com/mongoid/mongoid/issues/2275

Tengo una aplicación de Rails 3 con MongoID 3 desplegada con éxito en Heroku (usando MongoHQ), pero luego sucedió algo (no se puede determinar qué era exactamente) y la construcción comenzó a fallar en Heroku.

Este es el error que obtengo:

TLDR: Moped::Errors::AuthenticationFailure (The operation: #<Moped::Protocol::Commands::Authenticate ... failed with error "auth fails")

Lo que hace que esto sea más difícil de depurar es que funciona perfectamente en localhost. Ahora me estoy quedando sin ideas de lo que podría ser esto.

app[web.1]: >> Thin web server (v1.4.1 codename Chromeo) app[web.1]: >> Maximum connections set to 1024 app[web.1]: >> Listening on 0.0.0.0:58731, CTRL+C to stop heroku[web.1]: State changed from starting to up app[web.1]: app[web.1]: app[web.1]: Started GET "/" for 212.86.9.90 at 2012-07-31 08:08:07 +0000 heroku[router]: GET cool-name-123.herokuapp.com/ dyno=web.1 queue=0 wait=0ms service=171ms status=200 bytes=1286 heroku[router]: GET cool-name-123.herokuapp.com/assets/application-8e7bfeeffc9291864e5b42d908c2fdda.css dyno=web.1 queue=0 wait=0ms service=11ms status=200 bytes=92524 heroku[router]: GET cool-name-123.herokuapp.com/assets/application-aa557bde70f1236cdf90c913043c4382.js dyno=web.1 queue=0 wait=0ms service=16ms status=200 bytes=122836 heroku[router]: GET cool-name-123.herokuapp.com/favicon.ico dyno=web.1 queue=0 wait=0ms service=3ms status=200 bytes=0 app[web.1]: app[web.1]: app[web.1]: Started GET "/originals/new" for 212.86.9.90 at 2012-07-31 08:08:11 +0000 heroku[router]: GET cool-name-123.herokuapp.com/originals/new dyno=web.1 queue=0 wait=0ms service=31ms status=200 bytes=1808 app[web.1]: app[web.1]: app[web.1]: Started POST "/originals" for 212.86.9.90 at 2012-07-31 08:08:34 +0000 app[web.1]: app[web.1]: Moped::Errors::AuthenticationFailure (The operation: #<Moped::Protocol::Commands::Authenticate app[web.1]: @length=154 app[web.1]: @request_id=3 app[web.1]: @response_to=0 app[web.1]: @op_code=2004 app[web.1]: @flags=[] app[web.1]: @full_collection_name="app123.$cmd" app[web.1]: @limit=-1 app[web.1]: @skip=0 app[web.1]: @selector={:authenticate=>1, :user=>"heroku", :nonce=>"xyz", :key=>"xyz"} heroku[router]: POST cool-name-123.herokuapp.com/originals dyno=web.1 queue=0 wait=0ms service=1486ms status=500 bytes=643 app[web.1]: @fields=nil> app[web.1]: failed with error "auth fails"): app[web.1]: app/controllers/originals_controller.rb:19:in `block in create'' app[web.1]: app/controllers/originals_controller.rb:18:in `create'' app[web.1]: app[web.1]: heroku[router]: GET cool-name-123.herokuapp.com/favicon.ico dyno=web.1 queue=0 wait=0ms service=3ms status=304 bytes=0 app[web.1]: app[web.1]: app[web.1]: Started GET "/" for 212.86.9.90 at 2012-07-31 08:09:40 +0000 heroku[router]: GET cool-name-123.herokuapp.com/ dyno=web.1 queue=0 wait=0ms service=11ms status=304 bytes=0

Recientemente he tenido problemas con Heroku, y como resultado, creo que debería tener las configuraciones correctas para la elección de controladores de bases de datos y servicio (usando el nuevo esquema yml + Ruby 1.9.3 en el Gemfile).

Cuando ejecuto heroku config --app app_name , obtengo

DATABASE_URL => postgres://rhalppyjrb:[email protected]/rhalppyjrb GEM_PATH => vendor/bundle/ruby/1.9.1 LANG => en_US.UTF-8 MONGOHQ_URL => mongodb://heroku:[email protected]:27054/app123 PATH => bin:vendor/bundle/ruby/1.9.1/bin:/usr/local/bin:/usr/bin:/bin RACK_ENV => production RAILS_ENV => production SHARED_DATABASE_URL => postgres://rhalppyjrb:[email protected]/rhalppyjrb

Mi mongoid.yml se ve así:

production: sessions: default: uri: <%= ENV[''MONGOHQ_URL''] %> options: consistency: :strong skip_version_check: true safe: true

Gemfile es así:

source ''https://rubygems.org'' gem ''bundler'', ''1.2.0.rc'' ruby ''1.9.3'' gem ''rails'', ''3.2.6'' gem ''thin'' gem ''rmagick'', :require => ''RMagick'' gem "carrierwave-mongoid", :git => "git://github.com/jnicklas/carrierwave-mongoid.git", :branch => "mongoid-3.0", :require => ''carrierwave/mongoid'' group :assets do gem ''sass-rails'', ''~> 3.2.3'' gem ''coffee-rails'', ''~> 3.2.1'' gem ''uglifier'', ''>= 1.0.3'' gem "therubyracer", :platform => :ruby end gem ''jquery-rails'' gem "haml", ">= 3.1.6" gem "mongoid", ">= 3.0.3" gem "devise", ">= 2.1.2" gem "devise_invitable", ">= 1.0.2" gem "cancan", ">= 1.6.8" gem "rolify", ">= 3.1.0" gem "bootstrap-sass", ">= 2.0.4.0" gem "simple_form" group :development do gem "guard", ">= 0.6.2" gem ''rb-fsevent'' gem ''growl'' gem "haml-rails", ">= 0.3.4" gem "guard-bundler", ">= 0.1.3" gem "guard-rails", ">= 0.0.3" gem "guard-livereload", ">= 0.3.0" gem "guard-rspec", ">= 0.4.3" end group :test do gem "database_cleaner", ">= 0.8.0" gem "mongoid-rspec", "1.4.6" gem "email_spec", ">= 1.2.1" end group :development, :test do gem "factory_girl_rails", ">= 3.5.0" gem "rspec-rails", ">= 2.11.0" end