ruby on rails - Tareas de producción de rastrillo no reconocen mis modelos
heroku login (2)
Cuando estaba corriendo Heroku Bamboo, esto nunca fue un problema. Ahora, en Cedar, recibo errores cada vez que intento acceder a mis modelos desde una tarea de rake en el servidor. Esto sucede con rake db:seed
, una tarea de rake estándar, así como con mis propias tareas personalizadas que incluyen explícitamente: environment. Incluso lo hago de manera redundante:
namespace :db do
desc "Update db"
task :new_seed => :environment do
require ''./Scraped_Data/Games/code/column-headers.rb''
require ''csv''
require ''net/http''
require ''./config/environment.rb''
# code here...
end
end
No puedo encontrar ninguna mención de este problema en otra parte, y todas estas tareas funcionan perfectamente en desarrollo. Gracias por cualquier idea, y aquí está el mensaje de error lleno de escupir tareas tan pronto como se encuentran con un modelo mío en Heroku:
rake aborted!
uninitialized constant Object::Movie
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/ext/module.rb:36:in `const_missing''
/app/lib/tasks/new_seed.rake:187:in `block in load_scraped_data''
/app/vendor/bundle/ruby/1.9.1/gems/rest-open-uri-1.0.0/lib/rest-open-uri.rb:37:in `open''
/app/vendor/bundle/ruby/1.9.1/gems/rest-open-uri-1.0.0/lib/rest-open-uri.rb:37:in `open''
/app/lib/tasks/new_seed.rake:148:in `load_scraped_data''
/app/lib/tasks/new_seed.rake:550:in `block (2 levels) in <top (required)>''
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call''
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute''
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each''
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute''
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain''
/usr/local/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize''
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain''
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke''
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task''
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block (2 levels) in top_level''
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each''
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block in top_level''
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling''
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level''
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `block in run''
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling''
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run''
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>''
/app/vendor/bundle/ruby/1.9.1/bin/rake:19:in `load''
/app/vendor/bundle/ruby/1.9.1/bin/rake:19:in `<main>''
Tasks: TOP => db:new_seed
Por defecto, threadsafe establece dependency_loading = false
Si desea habilitar el uso de hilos en su aplicación y acceder a sus modelos en su tarea, deberá cargarlo.
# Enable threaded mode
config.threadsafe!
config.dependency_loading = true if $rails_rake_task
Ref .: http://nowhereman.github.com/how-to/rails_thread_safe/
¡Espero que esto ayude!
¡Tenía threadsafe! = true
threadsafe! = true
configurado en mi entorno de producción en config/environments/production.rb
Deshabilitar esto resuelve el problema.
La respuesta que se encuentra aquí: ¡ rake abortado! Objeto constante no inicializado :: País, ¿por qué no se puede ver el modelo? da más explicación y otras opciones de solución (particularmente el último enlace)