Ошибка развертывания Rails 7 на Render.com во время assets:precompile - ActionView::Template::Error (Ассет __ отсутствует в конвейере ресурсов.)

Эта ошибка внезапно затронула все наши 3 приложения Rails на Render.com. Кодовая база не изменилась, но развертывание внезапно перестало быть успешным.

Во время сборки на Render.com, особенно во время предварительной компиляции ресурсов, мы теперь видим следующие строки лога:

INFO** Execute assets:precompile
INFOrake aborted!
INFOJSON::ParserError: 859: unexpected token at '==> Using Node version 14.17.0 (default)
INFO==> Docs on specifying a Node version: https://render.com/docs/node-version
INFO==> Using Bun version  (default)
INFO==> Docs on specifying a bun version: https://render.com/docs/bun-version
INFO["ok"]'
INFO/opt/render/project/rubies/ruby-3.1.1/lib/ruby/3.1.0/json/common.rb:216:in `parse'
INFO/opt/render/project/rubies/ruby-3.1.1/lib/ruby/3.1.0/json/common.rb:216:in `parse'
[...]
INFO==> Uploading build...
INFO==> Build uploaded in 12s
INFO==> Build successful 🎉
INFO==> Deploying...
INFO==> Using Node version 14.17.0 (default)

Тогда сборка кажется успешной, но после запуска:

[104] Puma starting in cluster mode...
INFO[104] * Puma version: 5.6.8 (ruby 3.1.1-p18) ("Birdie's Version")
INFO[104] *  Min threads: 2
INFO[104] *  Max threads: 2
INFO[104] *  Environment: production
INFO[104] *   Master PID: 104
INFO[104] *      Workers: 2
INFO[104] *     Restarts: (✔) hot (✖) phased
INFO[104] * Preloading application
INFO[104] * Listening on http://0.0.0.0:10000
INFO[104] Use Ctrl-C to stop
INFO[104] - Worker 0 (PID: 109) booted in 0.0s, phase: 0
INFO[104] - Worker 1 (PID: 113) booted in 0.0s, phase: 0
INFO==> Your service is live 🎉

Каждый запрос завершается с ошибкой с каким-либо вариантом следующей ошибки:

CRITICALF, [2024-05-31T08:10:58.076796 #109] FATAL -- : [da58ff63-3c0c-4f42-bfe3-a3a243352908]   
ERROR[da58ff63-3c0c-4f42-bfe3-a3a243352908] ActionView::Template::Error (The asset "searches/show.css" is not present in the asset pipeline.
INFO):
INFO[da58ff63-3c0c-4f42-bfe3-a3a243352908]     1: <% content_for :head do %>
INFO[da58ff63-3c0c-4f42-bfe3-a3a243352908]     2:   <%= stylesheet_link_tag 'searches/show' -%>
INFO[da58ff63-3c0c-4f42-bfe3-a3a243352908]     3:   <%= stylesheet_link_tag 'elements/filters' -%>
INFO[da58ff63-3c0c-4f42-bfe3-a3a243352908]     4: <% end %>

Это начало происходить 30 мая одновременно для всех наших приложений Rails, работающих на Render.com.

Когда ресурсы предварительно скомпилированы локально, проблема не возникает. Таким образом, единственное решение, которое мы нашли на данный момент, — это предварительно скомпилировать ресурсы локально, а затем загрузить их. Но это не идеально и не долгосрочно.

Скорее всего, это влияет на многие приложения Rails на Render. Любая помощь будет принята с благодарностью!

Проблема, описанная здесь, кажется такой же: Community.render.com/t/…

Darme 01.06.2024 10:29
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
63
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мы решили эту проблему, добавив node --version; к нашей команде сборки в разделе «Настройки» > «Сборка и развертывание». Наша полная команда сборки теперь выглядит следующим образом:

node --version; bundle install; bundle exec rake assets:clean assets:precompile; bundle exec rake db:migrate;

В поддержке Render недавно разъяснили, почему так произошло, вот что мне написали:

Добавление node --version заставляет Node загружаться в среду, тогда как раньше он все время загружался автоматически. Мы внесли это изменение для динамической загрузки языков, поэтому, если мы не обнаруживаем Node, мы не загружаем его в среду.

Другие вопросы по теме