Статические активы не обслуживаются на Heroku / Thin - PullRequest
2 голосов
/ 08 августа 2011

У меня проблемы со статическими ресурсами (изображениями, js и таблицами стилей), которые не обслуживаются в Heroku. Прекрасно работает в моей локальной среде разработчиков.

Ошибки выглядят так:

2011-08-08T02:58:45+00:00 app[web.1]: Started GET "/stylesheets/reset.css" for 98.234.235.21 at 2011-08-07 19:58:45 -0700
2011-08-08T02:58:45+00:00 app[web.1]: 
2011-08-08T02:58:45+00:00 app[web.1]: ActionController::RoutingError (No route matches "/stylesheets/reset.css"):

Я использую:

  • Рубин 1.9.2
  • Рельсы 3.0.7
  • Heroku с бамбуком-Mri-1.9.2 и тонким веб-сервером. (Я следовал стандартным инструкциям по настройке на heroku.com)

Я искал в google / stackoverflow и попробовал следующее безуспешно:

  • удалить config.ru
  • добавить use ActionDispatch::Static, "#{Rails.root}/public" на config.ru
  • set config.serve_static_assets = true in staging.rb

Может кто-нибудь предложить исправление? Должен ли я использовать кедр вместо бамбука? Должен ли я использовать что-то еще вместо тонкого?

Спасибо!


EDIT: Файлы js обслуживаются, а изображения и таблицы стилей - нет. Я проверил, что пути в моих ссылках совпадают.

myapp.heroku.com/stylesheets/reset.css - не удается myapp.heroku.com/javascripts/jquery.js - успешно

Я также попытался установить следующее: config.action_dispatch.x_sendfile_header = nil. Это согласуется с config.serve_static_assets = true, но мы заметили, что Heroku использует эти параметры независимо от того, как вы их установили. во время запуска он делает следующее:

-----> Detected Rails is not set to serve static_assets
       Installing rails3_serve_static_assets... done
-----> Configure Rails 3 to disable x-sendfile   
       Installing rails3_disable_x_sendfile... done

Ответы [ 2 ]

3 голосов
/ 09 августа 2011

Проблема оказалась в том, что файлы ресурсов не были перенесены в heroku (у меня была ошибка с git, а не проблема с heroku).

Поддержка Heroku указала на это, когда я связался с ними.Они быстро ответили подробным ответом, который также включал в себя следующие комментарии:

  • Не требуется, чтобы гем Heroku работал на Heroku
  • Укажите гем postgres в Gemfile;локально используйте postgres для разработки вместо sqlite3
  • config.ru: не запускайте диспетчер напрямую, запустите контейнер приложения
  • , не устанавливайте x_sendfile_header равным nil, так как это неправильно поддерживается в Rails3 (это настройка Rails 3.1)
0 голосов
/ 08 августа 2011

Я не уверен, что Heroku работает в среде staging, я думаю, что вместо этого она работает в среде production, и именно поэтому ваши настройки не применяются.

...