Rails 6: как отключить Webpack и использовать вместо него Sprockets

Я переношу приложение Rails 5.2 на 6.0 для ActionMailbox, ActionText и нескольких баз данных. Однако я не знаю веб-пакет и вместо этого хотел бы использовать Sprockets.

Как правильно удалить веб-пакет из Rails 6 и установить Sprockets? rails new app сразу устанавливает файлы webpack. Есть ли способ легко по умолчанию использовать звездочки?

Rails (Ruby) должен был быть соглашением, а не конфигурацией, но Webpack (Javascript) отменяет это, добавляя много конфигурации и сложности.


person Jun Dalisay    schedule 18.03.2019    source источник
comment
rails new —help предоставляет множество возможностей при создании приложения.   -  person Unixmonkey    schedule 18.03.2019
comment
В итоге я вернулся к Rails 5.2.4, так как функции Rails 6 не стоили затрат (ОЗУ + усилия).   -  person Jun Dalisay    schedule 13.12.2019
comment
Вам когда-нибудь удавалось заставить actiontext работать без webpacker?   -  person Nick M    schedule 20.01.2020


Ответы (2)


Если вы хотите пропустить добавление гема webpacker при создании нового приложения rails, используйте --skip-javascript (поскольку Webpacker является компилятором JavaScript по умолчанию для Rails 6).

как указано в этой ссылке

person widjajayd    schedule 18.03.2019

Я нашел эту ссылку полезной, я отправлю ее сюда:

Используйте опцию --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

Если вы используете звездочки 4, измените app/assets/config/manifest.js на:

//= link_tree ../images
//= link application.js
//= link application.css

Если вы используете звездочки 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

person eikes    schedule 23.10.2019
comment
У меня работает (github.com/ecovillage/cabler/commit/) - person Felix; 17.02.2020
comment
Следует отметить одну вещь: при использовании параметра --skip-keeps при создании приложения Rails папка app/assets/images не создается, что приводит к сбою Sprockets без указания причины. Запуск touch app/assets/images/.keep исправляет это. Я потратил несколько часов на это препятствие! - person Goulven; 20.02.2020
comment
У меня это не работает, так как у меня есть файл application.scss. Вот мой manifest.js: //= link_tree ../images //= link_directory ../javascripts .js //= link_directory ../stylesheets .scss //= link application.scss - person drweird; 01.04.2020