2016-06-16 2 views
0

Я некоторое время боролся с этим, но в основном каждый раз, когда я делаю изменения в моих файлах css, перечисленных ниже (например, layout.scss), я должен остановить сервера и запустите rake assets:clobber, а затем перезапустите сервер, прежде чем я смогу увидеть изменения.Rails 4 не обновляется css в dev при внесении изменений

Излишне говорить, что это очень утомительно. Ниже приведена моя конфигурация; сообщите мне, если есть что-то еще, что вы хотели бы, чтобы я опубликовал.

Gemfile

source 'https://rubygems.org' 
ruby '2.2.3' 

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' 
    gem 'rails', '4.2.5' 

# DB Tools 
    gem 'pg' 
    gem 'money-rails' 
    gem 'pluck_to_hash' 

# View Development Tools 
    gem 'sassc-rails' 
    gem 'haml-rails' 
    gem 'friendly_id', '~> 5.1.0' 

# View Display Tools 
    gem 'jquery-rails' 
    gem 'font-awesome-rails' 

# Form Tools 
    gem "cocoon" 
    gem 'amoeba' 

# Angular Tools 
    gem 'angularjs-rails', '~> 1.4.7' 
    gem 'angular-rails-templates' 
    gem 'angular_rails_csrf' 

# API Tools 
    gem 'active_model_serializers', '~> 0.10.0.rc2' 
    gem 'easy_diff' 

# Authentication/Authorization 
    gem 'devise' 

# Use Uglifier as compressor for JavaScript assets 
    gem 'uglifier', '>= 1.3.0' 
    gem 'sdoc', '~> 0.4.0', group: :doc 

# Hosting, Serving & Deployment 
    gem 'puma' 
    gem 'foreman' 

# Env specific 
group :development do 
    gem 'awesome_print', :require => 'ap' 
    gem "better_errors" 
    gem "binding_of_caller" 
    gem 'annotate', '~> 2.6.6' 
    gem 'seed_dump' 
end 

group :development, :test do 
    gem 'byebug' 
    gem 'web-console', '~> 2.0' 
    gem 'spring' 
end 

development.rb

Rails.application.configure do 
    config.cache_classes = false 
    config.eager_load = false 

    config.consider_all_requests_local  = true 
    config.action_controller.perform_caching = false 

    config.action_mailer.raise_delivery_errors = true 

    config.active_support.deprecation = :log 

    config.active_record.migration_error = :page_load 

    config.assets.debug = true 
    config.assets.prefix = "/dev-assets" 
    config.assets.digest = false 
    config.serve_static_files = false 

    config.assets.raise_runtime_errors = true 

    config.sass.inline_source_maps = true 

    config.action_mailer.default_url_options = { host: 'localhost', port: 8080 } 

    config.action_mailer.delivery_method = :smtp 

    config.action_mailer.smtp_settings = { 
    address:    "smtp.gmail.com", 
    port:     587, 
    domain:    ENV["GMAIL_DOMAIN"], 
    user_name:   ENV["GMAIL_USERNAME"], 
    password:    ENV["GMAIL_PASSWORD"], 
    authentication:  "plain", 
    enable_starttls_auto: true 
    } 

end 

application.css

/* 
*= require_self 
*= require application-loader 
*/ 

приложения loader.scss

// common/ 
@import 'common/flexbox.scss'; 
@import 'common/baseline.scss'; 
@import 'common/fonts.scss'; 
@import 'common/mixins.scss'; 

@import 'common/common.scss'; 
@import 'common/forms.scss'; 
@import 'common/layout.scss'; 
@import 'common/pages.scss'; 
@import 'common/svg.scss'; 

@import 'authenticated/modules/stats.scss'; 

// authenticated/ 
@import 'application/application-layout.scss'; 
@import 'application/application-forms.scss'; 
+1

Вы можете добавить * = require_tree в application.scss и проверить? – gates

+0

Возможно, что ваши изменения CSS кэшируются в браузере. В следующий раз, когда вы измените свой CSS, очистите кеш веб-браузеров и проверьте изменения CSS. – Tommyixi

+0

@Tommyixi - У меня есть кеш-убийца в моем браузере. –

ответ

1

После гоняться идею воспитывали @gates в комментариях моего первоначального ответа, я наткнулся на this blog post

В принципе, так как sprockets не делает загрузку, то кажется, что это не перекомпиляции изменений к отдельным файлам (хотя я не знаю, почему общая перекомпиляция не обновлялась), поэтому по инструкции блога у меня теперь есть sprockets, загружая все файлы, и при необходимости импортирую mixins. Что-то вроде этого:

application.css

/* 
*= require_tree ./common 
*= require_tree ./authenticated 
*= require font-awesome 
*= require_self 
*/ 

подлинности/проверки подлинности-layout.scss

@import '../flexbox.scss'; 
@import '../mixins.scss'; 

body { 
    // etc... 
} 

теперь я могу внести изменения в любой из моих SCSS файлов и перезагрузки страницу без необходимости собирать активы и/или перезапускать сервер!

0

Как вы думаете, нам нужно добавить файл в «инициализаторов/assets.rb»? Это сработало для меня однажды.

Смежные вопросы