Rails 3.1 + Heroku Cedar - Статические изображения не обслуживаются - PullRequest
24 голосов
/ 23 июня 2011

Я развернул приложение Rails 3.1 на Heroku Cedar. По какой-то причине мои статические изображения не обслуживаются:

2011-06-23T18:14:13+00:00 app[web.1]: Started GET "/assets/me_reminder-30f9d1dead32e12238888adbee4b92d3.png" for 98.207.60.248 at 2011-06-23 18:14:13 +0000
2011-06-23T18:14:13+00:00 app[web.1]: Served asset /me_reminder-30f9d1dead32e12238888adbee4b92d3.png - 200 OK (0ms) (pid 1)
2011-06-23T18:14:13+00:00 app[web.1]: cache: [GET /assets/me_reminder-30f9d1dead32e12238888adbee4b92d3.png] miss, store
2011-06-23T18:14:13+00:00 heroku[router]: GET xxxx.herokuapp.com/assets/me_reminder-30f9d1dead32e12238888adbee4b92d3.png dyno=web.1 queue=0 wait=0ms service=35ms status=200 bytes=0

Как видите, он возвращает что-то с 0 байтами. Само собой разумеется, изображение не показывает.

Однако все остальные мои статические ресурсы (css, javascripts) обслуживаются правильно. Есть идеи, что тут может быть не так?

Кстати, у меня на Heroku есть еще одно приложение на Rails 3.1, которое работает просто отлично, поэтому я не думаю, что это проблема звездочек и т. Д.

Спасибо.

Ответы [ 4 ]

27 голосов
/ 05 августа 2011

У меня была такая же проблема.В config/environments/production.rb файле, комментарий:

config.action_dispatch.x_sendfile_header = "X-Sendfile"

И вместо этого есть:

config.action_dispatch.x_sendfile_header = nil # For Heroku

Это также рекомендуемый способ сделать это.Как предложено в Heroku Docs .

Работает для меня.

9 голосов
/ 03 августа 2011

У меня была такая же проблема. изменение конфигурации файла production.rb на

config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect'

от

config.action_dispatch.x_sendfile_header = "X-Sendfile"

работал на меня. поскольку Heroku использует nginx впереди.

1 голос
/ 28 августа 2013

У меня была эта проблема, потому что я ссылался на изображения в конвейере ресурсов, используя HTML. Пример:

<img src="/assets/hello.jpg" />

Ресурсы изображений будут работать локально, но не на Heroku. Переключение на использование Rails 'image_tag view helper решило проблему. Пример:

<%= image_tag "hello.jpg" %>
0 голосов
/ 23 июня 2011

Если я правильно помню, при использовании изображений в конвейере ресурсов может возникнуть непредвиденное поведение. Чтобы избежать этого, вы можете оставить их в public/, как и в предыдущих версиях rails.

Смотрите обсуждение здесь .

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