Подтвердить что ты не робот

Heroku undefined метод пуст? при обновлении моего приложения до ruby ​​2.0

Недавно я обновил приложение Heroku от Cedar-10 до Cedar-14 без проблем (все еще использую ruby ​​1.9.3). Затем я попробовал обновить свое приложение, чтобы использовать ruby ​​2.0.0-p645 и нажать его на сервер heroku. Когда я это делаю, я больше не могу обращаться к своему приложению, и я получаю следующую ошибку в журналах:

2015-07-09T12:27:37.480991+00:00 app[web.1]: 
2015-07-09T12:27:37.480996+00:00 app[web.1]: NoMethodError (undefined method `empty?' for nil:NilClass):
2015-07-09T12:27:37.480998+00:00 app[web.1]:   app/controllers/wines_controller.rb:18:in `index'
2015-07-09T12:27:37.480999+00:00 app[web.1]: 
2015-07-09T12:27:37.481001+00:00 app[web.1]: 
2015-07-09T12:27:37.481462+00:00 app[web.1]: Processing by WinesController#index as HTML
2015-07-09T12:27:37.481465+00:00 app[web.1]: Completed 500 Internal Server Error in 100.1ms

Если я смотрю строку 18 контроллера wines_controller, у меня есть следующее:

respond_to do |format|
  format.html
  format.json {render json: @wines.as_json}
end

Я думал, что это что-то в моем index.html, поэтому я взял это обратно к этому;

%h1 Wines

Только с одной строкой в ​​моем index.html.haml все еще была проблема.

Если я попытаюсь получить доступ к wines.json, это сработает и даст мне список моих вин. Запуск в моем ящике разработки с использованием 2.0.0 отлично работает, и все мои тесты проходят.

Обновление: добавьте контроллер и дополнительную информацию о index.html

Вот мой контроллер вин

  def index
    # Search via Ransack
    @q = current_user.wines.includes(:wine_rack).unconsumed.order("LOWER(winery)").search(params[:q])
    @wines = @q.result.page params[:page]
    @total = @q.result.sum(:qty)

    respond_to do |format|
      format.html
      format.json {render json: @wines.as_json}
    end
  end

В отношении моего файла index.html.haml я загрузил версию моего проекта, которая включала только одну строку;

%h1 Wines

В представлении нет петель, и я все еще получаю ошибку.

Строка 18 относится к следующей строке моего контроллера:

    respond_to do |format|
4b9b3361

Ответ 1

Я нашел ответ. Мне пришлось обновить myrerelic_rpm. Это единственное, что я изменил, и теперь он работает.

-    newrelic_rpm (3.5.0)
+    newrelic_rpm (3.12.1.298)

Я протестировал, загрузив еще один экземпляр heroku и несколько раз отправляя свое приложение с различными битами контроллера и вырезая вид, ничего не изменилось, пока я не заметил камень newrelic_rpm, и он начал работать. Поэтому я обновил его вместо удаления драгоценного камня, и теперь он работает.

Единственная причина, по которой я его удалил, - это то, что я искал различия между разработкой и производством. Он был отмечен как производственный камень только в моем Gemfile.