2016-01-14 3 views
0

Я пытаюсь преобразовать из sass-rails в sassc-rails. Я использую rails 4.2.2.Изменения в активах sassc-rails не компилируются

Когда я использую sassc-rails, изменения в моих scss-файлах не отражаются в представлении, даже если я останавливаю и перезапускаю сервер (я отключил spring). Если я остановлю сервер и сделаю rm -r tmp/cache/assets, изменения будут отражены.

Если я вернусь к sass-rails, он работает правильно, хотя я должен сделать rm -r tmp/cache/assets, прежде чем перезапустить сервер, чтобы он работал правильно.

Как исправить это?

+0

Вы используете среду разработки для NFS или какой-либо другой сетевой ресурс, например, используя Vagrant? Это, похоже, является источником проблемы, с которой мы сталкиваемся, пытаясь перейти к sassc. – boffbowsh

ответ

0

Это было исправлено путем удаления всех суффиксов файла в файле application.css. Например

@import 'pages.css.scss' 
@import 'morris.css' 

к

@import 'pages' 
@import 'morris' 

Эта задача была решена в sassc-rails благодаря boffbowsh и bolandrm

Обратите внимание, что, как представляется, другие причины возникновения этой проблемы, так и другой подход к turn off asset caching.

0

Вам необходимо создать конфигурационный файл importer.rb в lib/sassc/rails/в вашем приложении.

Вам нужно сделать что-то вроде этого.

class CSSExtension 
def postfix 
    ".css" 
end 
def import_for(original_path, parent_path, full_path) 
    import_path = full_path.gsub(/\.css$/,"") 
    SassC::Importer::Import.new(import_path) 
    end 
end 
+0

Я пробовал это, и это не помогло. Возможно, это связано с тем, что определения не загружаются автоматически. Я добавил '' 'config.autoload_paths + = Dir [" # {config.root}/lib/sassc/rails "]' '' к application.rb, но эти ответы http://stackoverflow.com/questions/ 3356742/best-way-to-load-module-class-from-lib-folder-in-rails-3 указывает, что автозагрузка будет работать только в том случае, если родительский каталог имеет то же имя, что и имя модуля. Кроме того, вы не можете патч обезьяны автоматически загружать и должны использовать config/initializer. (Ответ Сивэй Шена). Это может помочь, если вы могли бы объяснить, что вы пытаетесь сделать. – Obromios

+0

Теперь я переместил ваш код в инициализатор, с некоторыми изменениями, которые могут потребоваться, чтобы контекст был правильным. Я проверил в консоли, и новые определения теперь перегружают оригинальные методы. Однако это все еще не помогает этой проблеме. – Obromios