Rails не загружает активы, находящиеся в общем каталоге в производстве

Здравствуйте, у меня есть активы в общедоступном каталоге (из-за простоты)

в макете я load

<link href="/bootstrap/css/bootstrap.css" rel="stylesheet">
<link href="/assets/css/jumbotron.css" rel="stylesheet">
<link href="/assets/css/application.css" rel="stylesheet">

а в разработке он работает хорошо, но в Производственные активы не загружены.

Мой Development.rb

Web::Application.configure do
  config.cache_classes = false
  config.whiny_nils = true
  config.consider_all_requests_local       = true
  config.action_controller.perform_caching = false
  config.action_mailer.raise_delivery_errors = false
  config.active_support.deprecation = :log
  config.action_dispatch.best_standards_support = :builtin
  config.active_record.mass_assignment_sanitizer = :strict
  config.active_record.auto_explain_threshold_in_seconds = 0.5
  config.assets.compress = false
  config.assets.debug = true
end

Мой Production.rb

Web::Application.configure do
  config.cache_classes = false
  config.consider_all_requests_local       = true # default false, zobrazuje errory
  config.action_controller.perform_caching = false # default true
  config.serve_static_assets = false
  config.assets.compress = true
  config.assets.compile = true # default false
  config.assets.digest = true
  config.i18n.fallbacks = true
  config.active_support.deprecation = :notify
end

Ответы

Ответ 1

Это потому, что у вас

  config.serve_static_assets = false

в вашем файле production.rb.

В Руководство по настройке Rails:

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

И как показано в этом руководстве, вы действительно не должны полагаться на обслуживание активов из public/ через ваше приложение Rails, лучше разрешить веб-серверу (например, Apache или Nginx) обрабатывать ресурсы обслуживания для производительности.

Ответ 2

Конфигурация изменена для Rails 4 и 5.

Для Rails 4:

config.serve_static_files = true

Для Rails 5:

config.public_file_server.enabled = true