Я работаю над приложением Rails 7, в котором использую карты импорта для объединения JavaScript и CSS с помощью Yarn вместо Sprockets. Несмотря на выполнение инструкций по установке, мои ресурсы неправильно загружаются из каталога /builds.
Проблема:
При загрузке моей домашней странице, файл CSS не найден, и в консоли браузера появляется следующая ошибка:
Код: Выделить всё
Failed to load resource: the server responded with a status of 500 (Internal Server Error)
Request URL: http://localhost:3000/stylesheets/application.css
Код: Выделить всё
[*]
Настройка:
- Версия Rails: 7.1.3.4
- Версия Ruby: 3.2 .2
- Объединение CSS: использование сценариев Yarn для компиляции файлов SCSS
- JavaScript: Использование карт импорта
Код: Выделить всё
app/assets
├── builds
│ └── application.css
├── config
│ └── manifest.js
├── stylesheets
│ ├── application.bootstrap.scss
│ ├── application.scss
[code]config/environments/development.rb[/code]:
Код: Выделить всё
Rails.application.configure do
config.cache_classes = false
config.eager_load = false
config.consider_all_requests_local = true
config.server_timing = true
config.hosts "public, max-age=#{2.days.to_i}"
}
else
config.action_controller.perform_caching = false
config.cache_store = :null_store
end
config.active_storage.service = :local
config.action_mailer.raise_delivery_errors = false
config.action_mailer.perform_caching = false
config.active_support.deprecation = :log
config.active_support.disallowed_deprecation = :raise
config.active_support.disallowed_deprecation_warnings = []
config.active_record.migration_error = :page_load
config.active_record.verbose_query_logs = true
config.public_file_server.enabled = true
config.public_file_server.headers = {
'Cache-Control' => "public, max-age=#{1.hour.to_i}"
}
end
[code]app/assets/config/manifest.js[/code]:
Код: Выделить всё
//= link_tree ../images
//= link_tree ../builds
[code]app/views/layouts/application.html.erb[/code]:
Код: Выделить всё
Improvement.Rocks
[*]
[url=#page-top]The Improvement Project[/url]
[list]
[/list]
- Убедилось, что файл application.css создается в /builds с помощью следующего скрипта Yarn:
Код: Выделить всё
"scripts": { "build:css": "yarn build:css:compile && yarn build:css:prefix", "build:css:compile": "sass ./app/assets/stylesheets/application.bootstrap.scss:./app/assets/builds/application.css --no-source-map --load-path=node_modules", "build:css:prefix": "postcss ./app/assets/builds/application.css --use=autoprefixer --output=./app/assets/builds/application.css", "watch:css": "nodemon --watch ./app/assets/stylesheets/ --ext scss --exec "yarn build:css"", "build:js": "esbuild app/javascript/application.js --bundle --outfile=app/assets/builds/application.js" }
- Добавлена конфигурация общедоступного файлового сервера в development.rb.
Мне нужна помощь, чтобы понять, почему ресурсы не обслуживаются из каталога /builds и почему сгенерированный HTML по-прежнему ссылается на /stylesheets/application.css вместо /builds/application.css. Я не знаю, что делать дальше.
Подробнее здесь: https://stackoverflow.com/questions/786 ... lds-direct