#ruby-on-rails #sprockets #rails-sprockets #i18n-js
Вопрос:
У меня есть файл под названием application.js в разделе приложения/активы/javascripts
// = require libs/jquery-retina
// = require libs/jquery.popupoverlay
// = require libs/messg
// = require site_logic/application
// = require serviceworker-companion
// = require i18n
// = require i18n-rules
// = require lazysizes.min
i18n на самом деле является драгоценным камнем, который я уже установил, и у меня нет файла i18n в той же папке, что и application.js файл находится внутри, и я уже видел в браузере, что файл был успешно объединен в application.js
Интересно, как это возможно? потому что обычно файл должен находиться в том же каталоге.
Ответ №1:
Звездочки будут просматривать пути , указанные в Rails.application.config.assets.paths
разделе, который включает app/assets
, lib/assets
а vendor/assets
также любые пути, добавленные двигателями Rails.
Ресурсы в рамках движка работают так же, как и в полном приложении. Поскольку класс engine наследует от Rails::Engine, приложение будет знать, как искать ресурсы в
app/assets
каталогах иlib/assets
каталогах движка.
Драгоценные камни, которые вы используете, написаны как движки и монтируются, когда это требуется Bundler.require(*Rails.groups)
in config/application.rb
.
Видеть:
Комментарии:
1. Спасибо за ваш ответ, я использую Rubymine, поэтому, когда я зависаю над i18n в application.js файл он показывает мне, что файл i18n расположен в /home/seifeslimene/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/i18n-js-3.0.0/app/assets/javascripts/i18n.js Но где в коде указано, что от gems может потребоваться любой файл?
2. Прочитайте руководство по двигателям — если этого недостаточно для вас, то поищите исходный код rails.
3. Я думаю, что в данном случае вы имеете в виду исходный код звездочек.
4. Да, но звездочки на самом деле просто просматривают список путей для поиска файла, как и любой загрузчик. Настройка путей выполняется с помощью рельсов.