2014-12-18 4 views
15

Мы модернизированное к Сассам-рельсам версии 5.0.0 и получает это предупреждение устаревания:обновить SASS рельсы камня до 5,0 дает предупреждение устаревания

DEPRECATION WARNING: Extra .css in SCSS file is unnecessary. Rename /Users/foo/Projects/foo/app/assets/stylesheets/foo.css.scss to /Users/foo/Projects/foo/app/assets/stylesheets/foo.scss. (called from _app_views_layouts_application_html_erb__1560597815210891605_70190441246060 at /Users/foo/Projects/foo/app/views/layouts/application.html.erb:13) 

Кто-нибудь знает, что происходит с этим? Есть ли камень действительно хотите, чтобы я переименовать все мои таблицы стилей активов от:

app/assets/stylesheets/foo.css.scss 

к:

app/assets/stylesheets/foo.scss 

?

Кажется, что я должен работать против летнего соглашения Rails. Возможно, есть способ подавить предупреждение об утомлении?

+2

Похоже, там был туда и обратно здесь: https://github.com/ рельсы/Sass рельсы/фиксации/bac031b802f785cfc3d3b561617b0f7bd64d78ba. Вы можете всегда перезаписать его (например, в инициализаторе), если хотите. –

+1

Обсуждение здесь: https://github.com/rails/sass-rails/issues/290 – ipd

ответ

11

Да, вы должны переименовать .css.scss просто .scss как .css.scss не будет поддерживаться в звездочках 4.

Если вы хотите, чтобы подавить устаревание временным вы можете следующее config/initializer/deprecations.rb

Rails.application.config.after_initialize do 
    old_behaviour = ActiveSupport::Deprecation.behavior 
    ActiveSupport::Deprecation.behavior = ->(message, callstack) { 
    unless message.starts_with?('DEPRECATION WARNING: Extra .css in SCSS file is unnecessary.', 
           'DEPRECATION WARNING: Extra .css in SASS file is unnecessary.') 
     old_behaviour.each { |behavior| behavior[message,callstack] } 
    end 
    } 
end 

Или вы можете использовать патч обезьяны, чтобы не генерировать сообщение следующего вида:

module DisableCssDeprecation 
    def deprecate_extra_css_extension(engine) 
    if engine && filename = engine.options[:filename] 
     if filename.end_with?('.css.scss','.css.sass') 
     engine 
     else 
     super 
     end 
    end 
    end 
end 

module Sass ; module Rails ; class SassImporter 
    prepend DisableCssDeprecation 
end ; end ; end 
+0

Да, спасибо, мы переименовали их после того, как я получил начальный шок и недоверие. :/ – ipd

27

Это обрабатывается для меня:

#!/bin/sh 
for file in $(find ./app/assets/stylesheets/ -name "*.css.scss") 
do 
    git mv $file `echo $file | sed s/\.css//` 
done 
+0

Отлично работает, спасибо! –

+3

Дополнительная помощь: сохраните это в файле (что-то вроде 'remove_css_extension.sh'),' $ chmod a + x remove_css_extension.sh', '$./Remove_css_extension.sh', done. –

+2

Вместо sed просто используйте basename: 'git mv '$ file" $ (basename "$ file" .scss) ' – d4rky

1

Эта команда помогла мне переименовать много файлов .css.sass:

find ./app/assets/stylesheets -type f | sed 'p;s/\.css\.scss/.scss/' | xargs -n2 git mv 
Смежные вопросы