и видим:
Errno::EACCES (Permission denied – /var/www/../public/video/media): /usr/lib/ruby/1.8/fileutils.rb:243:in `mkdir’ /usr/lib/ruby/1.8/fileutils.rb:243:in `fu_mkdir’ /usr/lib/ruby/1.8/fileutils.rb:217:in `mkpath’ /usr/lib/ruby/1.8/fileutils.rb:215:in `mkpath’ /usr/lib/ruby/1.8/fileutils.rb:201:in `mkpath’ /vendor/plugins/file_column/lib/file_column.rb:30:in `init_options’ /vendor/plugins/file_column/lib/file_column.rb:28:in `init_options’ /vendor/plugins/file_column/lib/file_column.rb:622:in `file_column’ /app/models/post.rb:48Ну все ясно. Сами писать можем, а апач — нет. chmod g+w -R shared
Перезагружаем страничку, ага. Могила все таки горбатого немного поправила. См. приложение №2. Лезем в тот же журнальный файл и видим там ту же хрень:
Это могло произойти, например, из-за того, что запускали в этом каталоге вебрик. Сотрем эту сессию от греха подальше. Да, и не забудем внести в Capistrano нужный таск, что бы временный каталог делал записываемым для веб-сервера.
Перезагружаем сайт, видим приложение №1. Что в этот раз?
ActionView::TemplateError (undefined method `media?’ for nil:NilClass) on line #4 of app/views/posts/_latest.rhtml: …. пропущены строки с шаблоном #{RAILS_ROOT}/app/helpers/application_helper.rb:45:in `flash_player_for’ #{RAILS_ROOT}/app/views/posts/latest.rhtml:4:in `run_rhtml_posts__latest’Ага! А строчкой №45 идет:
return "" unless post.media?Это означает что? Тестов мало было — вот что! А точнее, то, что мы не проверяли приложение при отсутствии данных. Править эту ошибку стоит, но не хочется. Ситуации, что не будет данных не будет. Поэтому запускаем консоль и добавляем сами нужную запись:
>cd current >./script/console production >> Video.create :name => “First video record!” Errno::ENOENT: No such file or directory – /tmp/mysql.sockО! Вот это новость. Ну конечно. Делали то приложение на Макоси, где обычно в /tmp/mysql.sock живет сокет, а разворачиваем на Дебиане. Вперед, правим database.yml. Не забываем его поправить прежде всего в репозитории (заодно разруливая ситуацию с тем, что в девелопмент окружении ходим под рутом, а на хостинге под другим пользователем)!
Все правим и понимаем, что rake migrate сделать забыли. Бестолочь!
Ага. Наконец таки наш пост через консоль добавился, по крайней мере, с базой данных мы все решили. Повторяем и видим проблему, которую мы, кажется, решали.
ActionView::TemplateError (undefined method `media?’ for nil:NilClass) on line #4 of app/views/posts/_latest.rhtml: …. пропущены строки с шаблоном #{RAILS_ROOT}/app/helpers/application_helper.rb:45:in `flash_player_for’ #{RAILS_ROOT}/app/views/posts/latest.rhtml:4:in `run_rhtml_posts__latest’Ах ты, тварь! Классы то закешированы, а прибить обработчик забыли. Не надо забывать. Прибиваем и любуемся запустившимся сайтом.
Все хорошо, но я умолчал про еще ряд характерных граблей, подстерегающих при первом деплое (это как первый секс у женщины — больно и мучительно, а потом сама прийдет)
RAILS_ENV=production. Выявляется по активности в log/development.log вместо log/production.log. Лечится раскоментированием первой строки в environment.rbВот так. Резюмируя: если после деплоя что-то не завелось, первым делом смотрим на права и на настройки БД.