0

Наше приложение представляет собой сборник из 3-х двигателей, которые составляют наш базовый камень. Другие плагины, написанные специально для нашего базового драгоценного камня, могут быть использованы для добавления функциональности к базе.Rails 4.2: Пользовательский помощник для манифеста SCSS в двигателях

В настоящее время у нас есть 2 настраиваемых указателя звездочек и 1 пользовательский импортер Sass, который пытается динамически вытащить файлы SCSS из этих плагинов в базовый манифест. Надуманный пример выглядит примерно так:

//= depend_on_gemfile  # mimics default "depend_on" functionality 
//= depend_on_stylesheets # mimics default "depend_on" functionality 

... 

@import 'engine/namespace/settings/global'; 
@import 'engine/namespace/settings/colors'; 
@import 'engine/namespace/settings/fonts'; 
@import '[engine-plugins]/namespace/settings'; # mimics Sass Filesystem importer 

... 

Чтобы быть ясным, это работает. У нас возникают проблемы с тем, как Sass кэширует файлы, что слишком сложно для того, чтобы войти, и на самом деле не моя цель на данный момент.

Дело в том, что мы поняли, что удаление пользовательских указателей Sprockets и импортера Sass в пользу использования помощника Rails также решит нашу проблему, поскольку ERB будет скомпилирован перед SCSS, мы сможем находить и форматировать все пути, необходимые во всех включенных плагинах, в строку и выгружать ее в манифест. Что-то вроде:

@import 'engine/namespace/settings/global'; 
@import 'engine/namespace/settings/colors'; 
@import 'engine/namespace/settings/fonts'; 
<%= load_plugin_stylesheets_for('settings'); %> 

... 

Это кажется гораздо более простым решением, так как все, что мы делаем, находя каждый путь и преобразование этих путей в строки.

Проблема заключается в том, что помощники Rails полностью вне домена Sprockets.

Я нашел некоторые ресурсы, но все они, кажется, относятся к Rails 3.

Мне интересно, если кто-то имел эту проблему с помощью Rails 4, если они решили это и как. Или, если я просто думаю об этом, все неправильно, и есть лучший способ подойти к проблеме без подобного чрезмерного усложнения, как это было раньше.

TL; DR

Я хотел бы использовать регулярные Rails хелперы внутри Звездочки файла манифеста. Версия Rails - 4.2.4. У нас работают двигатели. Это возможно?


EDIT:

This comment ответил на мой вопрос.

После реализации этого решения в инициализаторе в нашем файле engine.rb были доступны все помощники Rails ActionView, в том числе мой пользовательский помощник.

ответ

0

У нас была аналогичная проблема некоторое время назад.

application.scss (в пределах драгоценного камня) выглядит следующим образом:

/* 
*= require_tree . 
*= require_self 
*/ 

@import "c3.min"; 
@import "analytics"; 

и gemspec содержит строку для включения всего кода из папки приложения.

Gem::Specification.new do |s|  
    s.files = Dir['{app,config,db,lib}/**/*', 'MIT-LICENSE', 'Rakefile', 'README.rdoc'] 
end 

Убедитесь, что у вас нет кеширования, включенного в файлах env.

+0

Спасибо, Майк, но я нашел другое решение, которое подойдет моему прецеденту немного лучше. Я связан с моим оригинальным сообщением. – meowsus