Проблема с Rails в производственном режиме, база данных mysql - PullRequest
0 голосов
/ 21 апреля 2011

Приложение работает нормально в режиме разработки, но при его развертывании на управляемом сервере открывается общедоступная страница / 500.html («Извините, но что-то пошло не так») , по-видимому, когда контентзапрашивает базу данных mysql.Создание статического содержимого работает, удивительно динамическое содержимое работает только локально в dev.

rake db: migrate прошло нормально, я вручную вставил тестовую запись в базу данных mysql.

Тем не менее, запрос на просмотр приводит к 500, и журнал выдает

ActionView::Template::Error (NULL pointer given):
    10:  ...
    11:    <% @projects.each do |project| %>
    12:  ...        

На сервере работает MySQL 5.1.54, в Rails установлен mysql gem.Любые намеки приветствуются!

edit:

Итак, я просто запустил

rails c production

на удаленном сервере и создал запись в моем "Модель клиента:

irb(main):003:0> c = Client.new => #<Client id: nil, name: nil, permalink: nil, created_at: nil, updated_at: nil> irb(main):004:0> c.name = "realclient" => "realclient" irb(main):005:0> c => #<Client id: nil, name: "realclient", permalink: nil, created_at: nil, updated_at: nil> irb(main):006:0> c.save => true

Хотя все поля, кроме name , отображаются пустыми в irb, действительная БД на сервере показывает все соответствующие поля, все в порядке:

2 realclient realclient 2011-04-22 13:59:12 2011-04-22 13:59:12 (идентификатор, имя, постоянная ссылка, создано, обновлено)

Итак, суть: Active Record не может правильно получить значения из БД, которые на самом деле там?

Ответы [ 2 ]

0 голосов
/ 25 апреля 2011

** Решено **

Мой хостинг-провайдер разрешает использовать только предустановленный mysql 2.7 gem.Любая ручная загрузка самоцвета mysql в Gemfile приводит к ошибкам Active Record - даже при загрузке собственной версии 2.7 сверху.Придерживаясь гема по умолчанию на управляемом сервере, все работает.

Настройка отдельной базы данных на сервере может, вероятно, позволить использовать собственные гемы базы данных.Так что, хотя это была очень специфическая проблема, возможно, ответ поможет кому-то еще, работающему с rails на управляемом сервере.

0 голосов
/ 22 апреля 2011

Когда вы запустили rake db:migrate, у вас, вероятно, не было набора RAILS_ENV, и вы все еще работали в среде development . Попробуйте запустить:

RAILS_ENV=production rake db:migrate

Посмотрите, получите ли вы ошибку, и если да, то вы можете перезапустить ее с опцией --trace для более подробной информации.

Вероятно, вам нужно отладить эту проблему на вашем config/database.yml - в разделе production что-то будет отсутствовать или неправильно настроено (или, может быть, вы не создали БД или что-то в этом роде, я не знаком с этим конкретным сообщением об ошибке).

...