#ruby-on-rails #rails-sprockets
#ruby-on-rails #rails-sprockets
Вопрос:
Я переношу приложение Rails 5.2 на 6.0 для ActionMailbox, ActionText и нескольких баз данных. Однако я не знаю webpack и хотел бы использовать Sprockets вместо этого.
Как мне правильно удалить webpack из Rails 6 и установить Sprockets? rails new app
сразу устанавливает файлы webpack. Есть ли способ легко установить sprockets по умолчанию?
Предполагалось, что Rails (Ruby) является соглашением о настройке, но Webpack (Javascript) отменяет это, добавляя много конфигурации и сложности.
Комментарии:
1.
rails new —help
предоставляет множество опций при создании приложения.2. В итоге я вернулся к Rails 5.2.4, поскольку функции Rails 6 не стоили таких затрат (оперативная память усилия)
3. Вам когда-нибудь удавалось заставить actiontext работать без webpacker?
Ответ №1:
Я нашел эту ссылку полезной, я опубликую ее здесь:
Используйте опцию —skip-webpack-install при создании нового приложения
Измените Gemfile, удалите webpacker
, добавьте:
gem 'sass-rails', '>= 5'
gem 'sprockets', '~> 4'
gem 'sprockets-rails', :require => 'sprockets/railtie'
Затем
bundle update sass-rails sprockets # if you are updating
bundle install # or simply install
Если вы используете sprockets 4, измените app/assets/config/manifest.js
на:
//= link_tree ../images
//= link application.js
//= link application.css
Если вы используете sprockets 3, добавьте в config/initializers/assets.rb
:
# Rails.application.config.assets.precompile = %w( application.js )
Восстановить app/assets/javascripts/application.js
:
//= require rails-ujs
//= require turbolinks
//= require_tree .
Измените javascript_pack_tag
на javascript_include_tag
в app/views/layout/application.html.erb
Комментарии:
1. У меня работает ( github.com/ecovillage/cabler/commit / … )
2. Следует отметить одну вещь: при использовании
--skip-keeps
опции при создании приложения Rails она не создаетapp/assets/images
папку, в результате чего происходит сбой Sprockets без указания причины. Запускtouch app/assets/images/.keep
исправляет это. Я потратил несколько часов на это препятствие!3. У меня это не работает, поскольку у меня есть
application.scss
файл. Вот мой manifest.js://= link_tree ../images //= link_directory ../javascripts .js //= link_directory ../stylesheets .scss //= link application.scss
Ответ №2:
Если вы хотите пропустить добавление webpacker gem при создании нового приложения rails, используйте —skip-javascript (поскольку Webpacker является компилятором JavaScript по умолчанию для Rails 6).
как указано в этой ссылке