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.
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