Подтвердить что ты не робот

Большинство моих активов внезапно возвращают 404 после толчка героику

Я развернул это приложение (rails 3.2.11) миллион раз, я не испортил никаких настроек, но теперь меня встретили следующим образом:

enter image description here

Почему это произошло неожиданно? Мои приложения application.rb включают config.assets.enabled = true - никогда не возникало проблем.

Фактически, его запуск локально на порт 3000, похоже, не имеет каких-либо проблем.

После развертывания в heroku этим утром кажется, что он ничего не загружает внутри /assets/

Интересно, что после копирования файлов, чтобы попробовать и просто создать новое приложение, git commit приведет к тому, что вы ожидаете, а также длинный список из них, который, как я думаю, может быть связан:

enter image description here

Изменить: Интересно, что некоторые из объектов загружены, как логотип и фон, но все остальное, как вы можете увидеть возврат 404.

4b9b3361

Ответ 1

У меня была эта проблема сегодня с рельсами 4 на героку. Статья, предоставленная @Jeff, немного устарела, но хранилище gem имеет хороший readme. Подводя итоги, вам нужно добавить два драгоценных камня в ваш Gemfile:

  • gem 'rails_serve_static_assets' (он решит проблему статических активов) и
  • gem 'rails_stdout_logging' (от которого зависит предыдущий).

Ответ 2

положить строку в config/environment/production.rb

config.assets.compile = true

он работал, поскольку он будет компилировать активы во время выполнения, как и в среде разработки, но делает приложение медленным, лучший способ - либо скомпилировать активы локально в рабочей среде с помощью функции rake (RAILS_ENV = производственный пакет exec rake assets: precompile) и передать ваши сгенерированные активы в public/assets, а затем выполнить развертывание. или, heroku запустить rake assets: precompile

Ответ 3

Heroku выпустила драгоценный камень для обработки активов без необходимости отключения компиляции или компиляции вручную.

https://devcenter.heroku.com/articles/ruby-support#static-assets

Просто добавьте это в свой Gemfile и повторно разверните.

gem 'rails_serve_static_assets', group: [:production]

Ответ 4

Для Rails 4 используйте:

config.serve_static_assets = true

По умолчанию установлено значение false. Мы нуждались в этом после удаления драгоценного камня rails_12factor.

Ответ 5

Rails рекомендовал отключить этот параметр config.serve_static_assets по умолчанию, т.е. установить значение false. Вот конфигурация по умолчанию в config/environments/production.rb, сгенерированная в rails app

Отключить статический сервер ресурсов Rails (Apache или nginx уже сделают это)

config.serve_static_assets = false

Итак, если вы устанавливаете его в true в своем локальном приложении, тогда это все равно. Но если вы развертываете свое приложение на Apache или ngix или что-то другое, кроме heroku, то не рекомендуется делать config.serve_static_assets=true в вашем файле конфигурации production.rb. Вот документация из направляющих Rails.

config.serve_static_files настраивает Rails для обслуживания статических файлы. Значение по умолчанию равно true, но в рабочей среде как серверное программное обеспечение (например, NGINX или Apache), используемое для запуска вместо этого приложение должно использовать статические активы. В отличие от установите для этого значение true при работе (абсолютно не рекомендуется!) или тестирование вашего приложения в режиме производства с помощью WEBrick. В противном случае вы не будете быть в состоянии использовать кеширование страниц и запросы на файлы, которые существуют регулярно под общим каталогом все равно попадет в ваше приложение Rails.

URL - http://guides.rubyonrails.org/configuring.html

Ответ 6

Чтобы загружать активы с соответствующим отпечатком каждого файла, проверьте, что конфигурация config/environments/production.rb имеет инструкцию:

ruby # Load assets with fingerprint behavior config.assets.digest = true