heroku db: push throws "Ошибка сервера Taps: неопределенный метод` symbolize_keys 'для nil: NilClass " - PullRequest
5 голосов
/ 02 августа 2011

Я в процессе перехода на хостинг Heroku. У меня на локальном компьютере есть копия текущей производственной базы данных (> 100 M), и я не могу отправить ее к героку.

Я получаю одну и ту же ошибку снова и снова:

Taps Server Error: undefined method `symbolize_keys' for nil:NilClass

Похоже, это связано с некоторыми значениями NULL в базе данных (не со всеми). Любые идеи о том, как это исправить? Спасибо!

Вот полный вывод:

!!! Caught Server Exception
HTTP CODE: 500
Taps Server Error: undefined method `symbolize_keys' for nil:NilClass
/app/lib/taps/data_stream.rb:183:in `parse_json'/app/lib/taps/server.rb:69:in 
POST /sessions/:key/push/verify_stream /app/.bundle/gems/ruby/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:863:in
call/app/.bundle/gems/ruby/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:863:in 
route /app/.bundle/gems/ruby/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:521:in
instance_eval /app/.bundle/gems/ruby/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:521:in
route_eval /app/.bundle/gems/ruby/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:500:in 
route!/app/.bundle/gems/ruby/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:497:in 
catch/app/.bundle/gems/ruby/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:497:in 
route!/app/.bundle/gems/ruby/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:476:in 
each/app/.bundle/gems/ruby/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:476:in 
route!/app/.bundle/gems/ruby/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:601:in 
dispatch! /app/.bundle/gems/ruby/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:411:in
call! /app/.bundle/gems/ruby/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:566:in 
instance_eval /app/.bundle/gems/ruby/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:566:in
invoke/app/.bundle/gems/ruby/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:566:in 
catch /app/.bundle/gems/ruby/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:566:in
invoke /app/.bundle/gems/ruby/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:411:in
call!/app/.bundle/gems/ruby/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:399:in 
call/app/.bundle/gems/ruby/1.8/gems/rack-1.2.1/lib/rack/auth/basic.rb:25:in 
call /app/.bundle/gems/ruby/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:979:in 
call /app/.bundle/gems/ruby/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:1005:in 
synchronize/app/.bundle/gems/ruby/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:979:in
call/home/heroku_rack/lib/static_assets.rb:9:in 
call'/home/heroku_rack /lib/last_access.rb:15:in 
call'/app/.bundle/gems/ruby/1.8/gems/rack-1.2.1/lib/rack/urlmap.rb:47:in 
call'/app/.bundle/gems/ruby/1.8/gems/rack-1.2.1/lib/rack/urlmap.rb:41:in 
each'/app/.bundle/gems/ruby/1.8/gems/rack-1.2.1/lib/rack/urlmap.rb:41:in 
call'/home/heroku_rack/lib/date_header.rb:14:in 
call'/app/.bundle/gems/ruby/1.8/gems/rack-1.2.1/lib/rack/builder.rb:77:in 
call'/app/.bundle/gems/ruby/1.8/gems/thin-1.2.7/lib/thin/connection.rb:76:in         
pre_process'/app/.bundle/gems/ruby/1.8/gems/thin-1.2.7/lib/thin/connection.rb:74:in 
catch'/app/.bundle/gems/ruby/1.8/gems/thin-1.2.7/lib/thin/connection.rb:74:in       
pre_process'/app/.bundle/gems/ruby/1.8/gems/thin-1.2.7/lib/thin/connection.rb:57:in
process'/app/.bundle/gems/ruby/1.8/gems/thin-1.2.7/lib/thin/connection.rb:42:in     
receive_data'/app/.bundle/gems/ruby/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in 
run_machine'/app/.bundle/gems/ruby/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in 
run'/app/.bundle/gems/ruby/1.8/gems/thin-1.2.7/lib/thin/backends/base.rb:57:in 
start'/app/.bundle/gems/ruby/1.8/gems/thin-1.2.7/lib/thin/server.rb:156:in 
start'/app/.bundle/gems/ruby/1.8/gems/thin-1.2.7/lib/thin/controllers/controller.rb:80:in 
start'/app/.bundle/gems/ruby/1.8/gems/thin-1.2.7/lib/thin/runner.rb:177:in 
send'/app/.bundle/gems/ruby/1.8/gems/thin-1.2.7/lib/thin/runner.rb:177:in 
run_command'/app/.bundle/gems/ruby/1.8/gems/thin-1.2.7/lib/thin/runner.rb:143:in 
run!'/app/.bundle/gems/ruby/1.8/gems/thin-1.2.7/bin/thin:6/usr/ruby1.8./bin/thin:19:in  
load'/usr/ruby1.8.7/bin/thin:19

Ответы [ 2 ]

4 голосов
/ 15 марта 2012

В блоге Heroku есть хорошая дискуссия о стратегиях передачи больших данных в героку с помощью нажатий

  1. Чтобы разбить задание, нажимайте только на определенные таблицы
    heroku db: pull -журналы таблиц, тэги

  2. Возобновить передачу с использованием файла журнала сбоев
    heroku db: pull --resume-filename-session_file.dat

подробнее см .: http://blog.heroku.com/archives/2010/4/21/supporting_big_data_part_1/

0 голосов
/ 02 августа 2011

Я получил эту ошибку, когда неправильно написал имя столбца таблицы.Например:

create_table "tags", :force => true do |t|
   t.stinrg    "name"
 end

Где имя t.stinrg неверно и должно быть t.string.Проверьте все целые поля.Специально для того места, где у вас есть add_column, потому что rails обычно генерирует неверные имена таблиц, а когда я add_column, я неправильно пишу это как add_column :tags, :post_count, :integer

...