Ruby on Rails Переключение с базы данных SQlite на Postgresql дает неопределенный метод to_sym для nil: ошибка NilClass - PullRequest
0 голосов
/ 04 ноября 2011

Я работаю над приложением Ruby on Rails, которое использовало систему аутентификации Devise.https://github.com/plataformatec/devise

Я искал в интернете проблему, похожую на мою, но безрезультатно.Я думаю, чтобы дать вам немного предыстории, все началось с 2 отдельных приложений.Одним из которых было использование устройства.В настоящее время я пытаюсь смешать оба приложения в одно.Даже после размещения представлений моделей и контроллеров там, где они были нужны, у меня не было никаких проблем.Однако нам нужно было переключиться с базы данных Sqlite3 на базу данных Postgresql.Как только я изменил файл database.yml, чтобы он указывал на новую базу данных Postgres, и перезапустил сервер, я начал получать различные ошибки to_sym по всему приложению и ошибки маршрутизации для новой функциональности, которая была добавлена ​​в приложение с помощью Devise.

Прежде чем я переключился на базу данных Postgresql, я прогнал свой файл development.sqlite3 через конвертер базы данных - это то, что я делал в прошлом без проблем.

Яне знаете, как отлаживать это приложение, так как эти ошибки to_sym встречаются повсюду.

Чтобы привести пример, вот одна из страниц, которая перестала работать:

NoMethodError в Home # index

Отображение C: /Users / chunter33 / Desktop / devise_forem / app / views / layouts / application.html.haml, где поднята строка # 19:

неопределенный метод `to_sym 'для nil: NilClass

16:% a {: href => "#"} = t ("web-app-theme.profile",: default => "Profile") 17:% li 18:% a {: href => "#"} = t ("web-app-theme.settings",: default => "Настройки") 19: - если подписано? 20:% li 21:% a 22: = current_user.email

Трассировка приложения:

app / helpers / application_helper.rb: 3: в подписанном файле

app / views / layouts / application.html.haml: 19: в _app_views_layouts_application_html_haml__944875441_29833656 '

1044*

Примечание: если я переключаюсь обратно на SQLite, я больше не получаю ни одной из этих ошибок.

Я использую Ruby 1.8.7 и Rails 3.1

Любые идеи, с которых я могу начатьглядя?

Дайте мне знать, если вам нужна дополнительная информация.

Ответы [ 2 ]

0 голосов
/ 07 ноября 2011

Я обнаружил корень проблемы.Я использовал набор инструментов ESF Database Migration для переноса моих данных из sqlite3 в Postgresql.Проблема заключается в том, что он не обрабатывает преобразование из sqlite3 в PostgreSQL должным образом, и автоматически увеличивающийся характер столбца, сгенерированного rails, не работает в PostgreSQL, как в Sqlite3.Чтобы это исправить, мне просто нужно было удалить все таблицы в моей базе данных, сбросить версию базы данных на 0 и запустить rake db: migrate, пока мой database.yml настроен на запуск базы данных PostgreSQL.

0 голосов
/ 04 ноября 2011

Я не знаю ruby, но я знаю PostgreSQL, и это не имеет ничего общего с базой данных.

Ваши две соответствующие ошибки:

  1. NoMethodError в Home #index
  2. неопределенный метод `to_sym 'для nil: NilClass

У вас есть объект nil / null, который пытается вызвать to_sym.Некоторая переменная в вашем шаблоне не определена.

Поскольку вы изменили базу данных, я подозреваю, что:

  1. Ошибка подключения к базе данных.
  2. Запрос не вернул ни одной строки, когда вы ожидали некоторых.

Что трудно сказать, но должна помочь дополнительная проверка ошибок и небольшая регистрация.

...