2016-04-01 2 views
0

Ich kann nicht Autoprefixer arbeiten. Es heißt, aber kein Ergebnis in meinem CSS-Code.Wie benutze ich rails-autoprefixer in der Sinatra App?

Es gibt Anweisungen für Sinatra App hier - https://github.com/ai/autoprefixer-rails

application.rb

class Application < Sinatra::Base 
    # Load path and gems/bundler 
    $LOAD_PATH << File.expand_path(File.dirname(__FILE__)) 
    require "bundler" 
    Bundler.require 
    register Sinatra::AssetPipeline 
    assets = Sprockets::Environment.new 
    AutoprefixerRails.install(assets)  
    ### other 

    # Actual Rails Assets integration, everything else is Sprockets 
    if defined?(RailsAssets) 
    RailsAssets.load_paths.each do |path| 
     settings.sprockets.append_path(path) 
    end 
    end 
end 

ich in Juwel Quelle gesucht und gefunden solche Beispiele:

@assets = Sprockets::Environment.new 
@assets.append_path(@dir.join('app/app/assets/stylesheets')) 
AutoprefixerRails.install(@assets, browsers: ['chrome 25']) 

oder

@dir = Pathname(__FILE__).dirname 
@css = @dir.join('app/app/assets/stylesheets/test.css').read 
AutoprefixerRails.process(@css) 

Antwort

1

Es sieht so aus, als ob Kettenräder nicht richtig konfiguriert sind. Sprockets::Enviroment nimmt einen Block, mit dem die Pfade zu den Assets konfiguriert werden müssen. Dies ist die Ordnerstruktur I für dieses Beispiel verwendet:

├── app.rb 
├── assets 
│   ├── some_more_styles.css 
│   └── styles.css 
└── views 
    └── index.erb 

Hier ist, wie ich die Pinion-Umgebung konfiguriert:

# app.rb 
require 'autoprefixer-rails' 

assets = Sprockets::Environment.new do |env| 
    # This ensures sprockets can find the CSS files 
    env.append_path "assets" 
end 

AutoprefixerRails.install(assets) 

Es gibt einen weiteren Schritt Pinion zu bekommen mit Sinatra zu arbeiten. Jeder der Assets muss manuell geroutet werden. Zum Beispiel, wenn die index.erb hat einen <link>-Tag, das eine Datei auf Pfad zu laden versucht /assets/styles.css, diese Route in einem 404 Not Found Fehlern führt, wenn sie nicht in app.rb definiert ist. Um diese 404s zu vermeiden, definieren die Route wie folgt:

# app.rb 
get '/assets/*' do 
    # The env["PATH_INFO"] results in the string '/assets/styles.css' in 
    # our example. We need to remove the '/assets' part since Sprockets 
    # will take care of appending it when invoked on the next line. 

    env["PATH_INFO"].sub!("/assets", "") 
    assets.call(env) 
end 

ich den vollständigen Code zu https://gist.github.com/kgrz/5caf63f827e5a6181597cefae484a515 für Ihren Referenz hochgeladen haben. Dies wiederum basiert auf der Sinatra Recipes article on Sprockets

+0

Vielen Dank für Ihre Hilfe. Ich habe vergessen zu erwähnen, dass ich RailsAssets verwende. Ich habe scss-Dateien, die in CSS kompiliert werden. Wie autoprefixer es in diesem Fall verwenden? – skrypalyk

+0

Ich bin nicht mit RailsAssets bekannt, also kann nicht viel helfen :( – Kashyap