Почему мой сайт RoR работает нормально на моем компьютере, но не работает на Heroku? - PullRequest
0 голосов
/ 02 июля 2010

У меня есть модель запроса, в которой есть поле requestteeID.Когда я запускаю сайт на своем локальном компьютере, я могу запустить следующую строку кода:

a = Request.find_all_by_requesteeID(current_user.id)

, и она работает нормально (примечание: я не могу выполнить current_user.requests, потому что модели объединяютсядругое поле, requestterID).Но когда я запускаю его на Heroku, он вылетает со следующей ошибкой:

NoMethodError (undefined method `find_all_by_requesteeID' for #<Class:0x2ae0d29606d0>):

Я запустил heroku db: push, поэтому база данных обновлена.Что может быть причиной этой ошибки на Heroku?Спасибо за чтение.

Ответы [ 2 ]

4 голосов
/ 02 июля 2010

Если это новый столбец базы данных, даже если вы используете db: push или db: migrate, вам может потребоваться перезагрузить heroku для Rails, чтобы понять, что у вас есть новый столбец базы данных.

Перейдите к своему приложению локально и выполните:

heroku restart

Это перезапустит ваши серверы приложений и перезагрузит все.

2 голосов
/ 03 июля 2010

Мои советы по работе с герокой -

  1. убедитесь, что вы работаете на локальном хосте - есть определенные случаи, когда код будет работать в Webrick, но не в тонком

  2. попробуйте настроить производственную среду на локальном хосте и запустить в ней свой код - некоторый код будет работать в режиме разработки, но не будет работать в производственной среде независимо от хостинг-провайдера - если вы запустите производственную среду на ваш локальный хост, вы можете просто поймать эту ошибку

  3. rake db: push не всегда делает достаточно, как кто-то другой предложил - я часто запускаю heroku rake db: drop, а затем heroku rake db: migrate или heroku rake db: seed теперь, когда я перестал использовать active_record - просто попробуйте полностью обнулить вашу базу данных и воссоздать ее с нуля - подсказка, этот совет - последнее средство

  4. пару дней назад я установил в приложение гем mongoid-slug, и он отлично работал в разработке, но когда я перешел в производство, он начал вызывать всевозможные проблемы - ошибка была вызвана тем, что Я не указал версию gem в своем Gemfile, поэтому heroku устанавливал немного более новую версию - всегда указывайте точную версию, которая работает на вашей машине для разработки - я буду делать это с этого момента

  5. одинаковая версия ruby ​​в обеих средах

Надеюсь, вы это исправите - главное, чтобы попытаться, это настроить производственную среду на вашей машине разработки, и есть вероятность, что вы обнаружите, что код там не работает, как это происходит на heroku

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...