with pricing postgres error addon ruby-on-rails mongodb heroku mongoid mongohq

ruby-on-rails - pricing - mysql heroku addon



Mongoid 3+Heroku(MongoHQ) causa ciclomotor:: Errores:: Falla de OperaciĆ³n (3)

Como solución alternativa, el hardcoding del uri de la configuración de heroku parece ser el truco.

ex:

production: sessions: default: uri: "mongodb://heroku:[email protected]:000/appyyyy" options: skip_version_check: true safe: true

Supongo que el error de nilclass fue porque <% = ENV [''MONGOHQ_URL'']%> estaba volviendo nulo

Con Rails 3, después de actualizar de Mongoid 2.x a Mongoid 3.x, mi configuración de Heroku + MongoHQ dejó de funcionar. Lo gracioso es que mis marcos de desarrollo y prueba y todo mi conjunto de pruebas pasan muy bien.

Sospecho que el problema está en mi archivo mongoid.yml, pero traté de buscar en los documentos, google y stackoverflow, y usé todos los formatos sugeridos, incluyendo este: heroku mongohq y Mongoid Mongo :: ConnectionFailure o en realidad esto: https://gist.github.com/2900804

ACTUALIZADO el 16 de julio: así es como se ve mi archivo mongoid.yml, después de probar varias cosas + Después de lo que sugirió Jason de MongoHQ :

development: sessions: default: database: development hosts: - localhost:27017 test: sessions: default: database: test hosts: - localhost:27017 production: sessions: default: uri: <%= ENV[''MONGOHQ_URL''] %> options: skip_version_check: true safe: true

(a mi entender, es esencialmente el mismo que el de los enlaces de arriba, excepto que usa el uri; intenté para el otro lado, dividiendo el MONGOHQ_URL en los campos separados también, pero no ayudó)

Intenté configurar mongoid como 3.0.0rc y dejar la versión en blanco en mi Gemfile. El uso de la versión de github falló debido a los certificados HTTPS o algo así, así que no me molesté en intentarlo varias veces.

Lo que el controlador de acción dice es esto:

Moped::Errors::OperationFailure in Home#index Showing /app/app/views/home/index.html.haml where line #2 raised: The operation: #<Moped::Protocol::Command @length=68 @request_id=4 @response_to=0 @op_code=2004 @flags=[:slave_ok] @full_collection_name=".$cmd" @skip=0 @limit=-1 @selector={:count=>:posts, :query=>{}} @fields=nil> failed with error "db assertion failure"

y cuando corro

heroku run console

.. Entiendo esto:

irb(main):052:0> Location.create! NoMethodError: undefined method `[]'' for nil:NilClass from /app/vendor/bundle/ruby/1.9.1/gems/moped-1.1.1/lib/moped/node.rb:74:in `block in command'' from /app/vendor/bundle/ruby/1.9.1/gems/moped-1.1.1/lib/moped/node.rb:522:in `[]'' from /app/vendor/bundle/ruby/1.9.1/gems/moped-1.1.1/lib/moped/node.rb:522:in `block (3 levels) in flush'' from /app/vendor/bundle/ruby/1.9.1/gems/moped-1.1.1/lib/moped/node.rb:521:in `map'' from /app/vendor/bundle/ruby/1.9.1/gems/moped-1.1.1/lib/moped/node.rb:521:in `block (2 levels) in flush'' from /app/vendor/bundle/ruby/1.9.1/gems/moped-1.1.1/lib/moped/node.rb:113:in `ensure_connected'' from /app/vendor/bundle/ruby/1.9.1/gems/moped-1.1.1/lib/moped/node.rb:517:in `block in flush'' from /app/vendor/bundle/ruby/1.9.1/gems/moped-1.1.1/lib/moped/node.rb:532:in `logging'' from /app/vendor/bundle/ruby/1.9.1/gems/moped-1.1.1/lib/moped/node.rb:516:in `flush'' from /app/vendor/bundle/ruby/1.9.1/gems/moped-1.1.1/lib/moped/node.rb:505:in `process'' from /app/vendor/bundle/ruby/1.9.1/gems/moped-1.1.1/lib/moped/node.rb:70:in `command'' from /app/vendor/bundle/ruby/1.9.1/gems/moped-1.1.1/lib/moped/node.rb:356:in `refresh'' from /app/vendor/bundle/ruby/1.9.1/gems/moped-1.1.1/lib/moped/cluster.rb:101:in `block in refresh'' from /app/vendor/bundle/ruby/1.9.1/gems/moped-1.1.1/lib/moped/cluster.rb:114:in `each'' from /app/vendor/bundle/ruby/1.9.1/gems/moped-1.1.1/lib/moped/cluster.rb:114:in `refresh'' from /app/vendor/bundle/ruby/1.9.1/gems/moped-1.1.1/lib/moped/cluster.rb:67:in `nodes'' ... 15 levels... from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.6/lib/active_support/callbacks.rb:405:in `__run_callback'' from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.6/lib/active_support/callbacks.rb:385:in `_run_save_callbacks'' from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.6/lib/active_support/callbacks.rb:81:in `run_callbacks'' from /app/vendor/bundle/ruby/1.9.1/gems/mongoid-3.0.1/lib/mongoid/callbacks.rb:98:in `run_callbacks'' from /app/vendor/bundle/ruby/1.9.1/gems/mongoid-3.0.1/lib/mongoid/persistence/insertion.rb:23:in `prepare'' from /app/vendor/bundle/ruby/1.9.1/gems/mongoid-3.0.1/lib/mongoid/persistence/operations/insert.rb:26:in `persist'' from /app/vendor/bundle/ruby/1.9.1/gems/mongoid-3.0.1/lib/mongoid/persistence.rb:50:in `insert'' from /app/vendor/bundle/ruby/1.9.1/gems/mongoid-3.0.1/lib/mongoid/persistence.rb:251:in `block in create!'' from /app/vendor/bundle/ruby/1.9.1/gems/mongoid-3.0.1/lib/mongoid/threaded/lifecycle.rb:173:in `_creating'' from /app/vendor/bundle/ruby/1.9.1/gems/mongoid-3.0.1/lib/mongoid/persistence.rb:249:in `create!'' from (irb):52 from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.6/lib/rails/commands/console.rb:47:in `start'' from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.6/lib/rails/commands/console.rb:8:in `start'' from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.6/lib/rails/commands.rb:41:in `<top (required)>'' from script/rails:6:in `require'' from script/rails:6:in `<main>''irb(main):053:0>

Creo que busqué en Google todo, revisé varios problemas de github mongoid, leí la documentación varias veces ... y me estoy quedando sin ideas aquí.

¿Alguna idea me viene a la mente? ¿Debería intentarlo ahora?

ACTUALIZACIÓN 16 de julio: esto es lo que Heroku dice cuando git push heroku master (Después de hacer lo que Jason de MongoHQ sugirió):

git push heroku master Counting objects: 7, done. Delta compression using up to 16 threads. Compressing objects: 100% (4/4), done. Writing objects: 100% (4/4), 372 bytes, done. Total 4 (delta 3), reused 0 (delta 0) -----> Heroku receiving push -----> Ruby/Rails app detected -----> Installing dependencies using Bundler version 1.2.0.pre Running: bundle install --without development:test --path vendor/bundle --binstubs bin/ --deployment Using rake (0.9.2.2) Using i18n (0.6.0) Using multi_json (1.3.6) Using activesupport (3.2.6) Using builder (3.0.0) # ... shortened this # Using libv8 (3.3.10.4) Using moped (1.1.2) Using origin (1.0.4) Using mongoid (3.0.0.rc) Using omniauth (1.1.0) Using quimby (0.4.5) Using bundler (1.2.0.pre) Using rails (3.2.6) Using therubyracer (0.10.1) Using thin (1.3.1) Your bundle is complete! It was installed into ./vendor/bundle Cleaning up the bundler cache. -----> Writing config/database.yml to read from DATABASE_URL -----> Preparing app for Rails asset pipeline Running: rake assets:precompile Asset precompilation completed (31.24s) -----> Rails plugin injection Injecting rails_log_stdout Injecting rails3_serve_static_assets -----> Discovering process types Procfile declares types -> (none) Default types for Ruby/Rails -> console, rake, web, worker -----> Compiled slug size is 18.7MB -----> Launching... done, v92 http://xxxxx.herokuapp.com deployed to Heroku To [email protected]:xxxxx.git b2d97xy..7b0aczy master -> master

ACTUALIZACIÓN 2 16 de julio: hizo lo que Jason y MrKurt dijeron (primero se olvidó de ejecutar actualización mongoid mongoid, pero eso tampoco ayudó). Ahora el error cambió, sin embargo:

NoMethodError in Home#index Showing /app/app/views/home/index.html.haml where line #2 raised: undefined method `[]'' for nil:NilClass Extracted source (around line #2): 1: %h1 Most recent posts 2: - if @posts.length > 0


Deberá usar Ruby 1.9.3. Consulte la documentación de Mongoid here y la documentación de Heroku here sobre cómo usar 1.9.3.

También estaba recibiendo errores similares, y cambié mi gemfile para incluir ruby ''1.9.3'' y todo funcionó como esperaba de nuevo.

Editar: @herb señaló que necesitas la versión más reciente de bundler para que esto funcione ( gem install bundler --pre ). De lo contrario, ruby ''1.9.3'' en tu Gemfile no funcionará.


Intente agregar un área de "opciones" a la sesión predeterminada y agregue "skip_version_check: true" como una de las opciones.

Jason MongoHQ