Я развертываю свое приложение на моем новом сервере Rails 3.1 с capistrano.
Когда я пытаюсь просмотреть страницу, я получаю сообщение об ошибке.
Глядя на error.log
, вот что я вижу:
ActionView::Template::Error (Permission denied - /var/www/episodecalendar/production/releases/20111227204950/tmp/cache/55B):
32: </div>
33: <div id="footer">
34: <div id="footer_content">
35: <% cache("footer") do %>
36: <%= render :partial => "partials/footer" %>
37: <% end %>
38: </div>
app/views/layouts/application.html.erb:35:in `_app_views_layouts_application_html_erb___3483336897212790867_58416560'
Очевидно, что файлы в папке /tmp
не имеют «правильных» разрешений. Пример:
root@Ubuntu:/var/www/episodecalendar/staging/current/tmp/cache/assets/C0C/690# ls -la
total 12K
drwxr-xr-x 2 root root 4.0K 2011-12-27 21:33 .
drwxr-xr-x 3 root root 4.0K 2011-12-27 21:33 ..
-rw-r--r-- 1 root root 2.6K 2011-12-27 21:33 sprockets%2F31007441199035e09c0c45c33930cf06
Единственный способ это исправить, это chmod 777 tmp/ -R
, и тогда сайт сразу загружается.
Я мог бы добавить исправление chmod в рецепт капистрано, но это похоже на уродливый взлом.
Почему папка / tmp не имеет «правильного» разрешения после развертывания и как я могу это исправить?