2016-06-16 6 views
0

Ich habe mit dieser für eine Weile gekämpft, aber im Grunde jedes Mal, wenn ich eine Änderung an meine CSS-Dateien unten (layout.scss zum Beispiel), muss ich stoppen Server und run rake assets:clobber dann starten Sie den Server neu, bevor ich die Änderungen sehen kann.Rails 4 nicht aktualisieren css in dev, wenn Änderungen vorgenommen werden

Es ist unnötig zu sagen, dass dies extrem mühsam ist. Unten ist meine Konfiguration; Bitte lassen Sie es mich wissen, wenn Sie etwas anderes möchten.

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 
*/ 

anwendungs ​​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

können Sie * = require_tree in application.scss hinzufügen und überprüfen? – gates

+0

Es ist möglich, dass Ihre CSS-Änderungen im Browser zwischengespeichert werden. Wenn Sie das nächste Mal Ihr CSS ändern, löschen Sie den Cache Ihres Webbrowsers und prüfen Sie, ob CSS-Änderungen vorliegen. – Tommyixi

+0

@Tommyixi - Ich habe einen Cache-Killer in meinem Browser –

Antwort

1

Nach der Jagd nach einer Idee von @gates in den Kommentaren meiner ursprünglichen Antwort gebracht hinunter, stieß ich auf this blog post

Grundsätzlich, da sprockets wurde die Belastung nicht zu tun, scheint es, dass es keine Änderungen neu zu kompilieren wurde zu einzelnen Dateien (obwohl ich nicht weiß, warum eine Gesamtrekompilierung nicht aktualisiert wurde), so habe ich jetzt auf die Anweisung des Blogs, sprockets das Laden aller Dateien und ich importiere Mixins nach Bedarf. Etwas wie folgt aus:

application.css

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

authentifiziert/authentifizierte-layout.scss

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

body { 
    // etc... 
} 

ich jetzt eine Änderung an meiner SCSS Dateien machen und neu zu laden die Seite, ohne die Assets zu überlisten und/oder den Server neu zu starten!

0

Glauben Sie, wir brauchen die Datei in 'initialisers/assets.rb' hinzufügen? Das hat einmal für mich funktioniert.

Verwandte Themen