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

Рельсы 3.1.3: попытка запустить локально на производстве, не работает рабочий трубопровод

Мое приложение отлично работает в режиме разработки.

Когда я запускаю в режиме производства с помощью RAILS_ENV=production rails s, ни один из моих файлов .css или .js не загружается. (Я прекомпилировал активы, используя RAILS_ENV=production bundle exec rake assets:precompile.)

В журнале webrick показано:

ActionController:: RoutingError (нет совпадений маршрута [GET] "/assets/application-a73ce43be7bf75953cd0c60b2b4a7eb0.js" ):

и

ActionController:: RoutingError (Нет сопоставлений маршрутов [GET] "/assets/application-986dd79830088c416c1632c12999ec69.css" ):

Файлы были скомпилированы (в соответствии с файлом log\production.log), и мой каталог public/assets показывает эти файлы с и без отпечатка пальца:

ls public/assets
application-986dd79830088c416c1632c12999ec69.css
application-986dd79830088c416c1632c12999ec69.css.gz
application-a73ce43be7bf75953cd0c60b2b4a7eb0.js
application-a73ce43be7bf75953cd0c60b2b4a7eb0.js.gz
application.css
application.css.gz
application.js
application.js.gz
4b9b3361

Ответ 1

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

config.serve_static_assets = true

Обоснование конфигурации по умолчанию Rails заключается в том, что предполагается, что вы будете работать за стандартным веб-сервером в режиме производства (Apache, Nginx и т.д.), который затем проксирует запросы к вашему Rails-приложению. Поскольку активы предварительно скомпилированы, Apache/Nginx/etc. могут напрямую обслуживать их без необходимости разговаривать с вашими процессами Rails.