2010-08-13 15 views
0

J'utilise sass (à partir haml-edge) pour les fichiers de traitement css, et il se bloque sur les chemins absolus comme paramètres:Sass (Ruby compresseur CSS) Les paramètres de chemin absolu sous Windows

K:\sass>sass.bat k:/sass/css/*.scss k:/sass/css/*.css --trace 
d:/Programs/Ruby/lib/ruby/gems/1.9.1/gems/haml-edge-3.1.62/lib/sass/files.rb:23:in `read': No such file or directory - k 
(Errno::ENOENT) 
    from d:/Programs/Ruby/lib/ruby/gems/1.9.1/gems/haml-edge-3.1.62/lib/sass/files.rb:23:in `tree_for' 
    from d:/Programs/Ruby/lib/ruby/gems/1.9.1/gems/haml-edge-3.1.62/lib/sass/plugin.rb:220:in `update_stylesheet' 
    from d:/Programs/Ruby/lib/ruby/gems/1.9.1/gems/haml-edge-3.1.62/lib/sass/plugin.rb:71:in `block in update_stylesheets' 
    from d:/Programs/Ruby/lib/ruby/gems/1.9.1/gems/haml-edge-3.1.62/lib/sass/plugin.rb:71:in `each' 
    from d:/Programs/Ruby/lib/ruby/gems/1.9.1/gems/haml-edge-3.1.62/lib/sass/plugin.rb:71:in `update_stylesheets' 
    from d:/Programs/Ruby/lib/ruby/gems/1.9.1/gems/haml-edge-3.1.62/lib/haml/exec.rb:433:in `watch_or_update' 
    from d:/Programs/Ruby/lib/ruby/gems/1.9.1/gems/haml-edge-3.1.62/lib/haml/exec.rb:349:in `process_result' 
    from d:/Programs/Ruby/lib/ruby/gems/1.9.1/gems/haml-edge-3.1.62/lib/haml/exec.rb:41:in `parse' 
    from d:/Programs/Ruby/lib/ruby/gems/1.9.1/gems/haml-edge-3.1.62/lib/haml/exec.rb:21:in `parse!' 
    from d:/Programs/Ruby/lib/ruby/gems/1.9.1/gems/haml-edge-3.1.62/bin/sass:8:in `<top (required)>' 
    from d:/Programs/Ruby/bin/sass:19:in `load' 
    from d:/Programs/Ruby/bin/sass:19:in `<main>' 

j'ai pu faire travail en commentant une condition dans split_colon_path (Ruby \ lib \ Ruby \ gemmes \ 1.9.1 \ gemmes \ haml-bord-3.1.62 \ lib \ haml \ exec.rb):

def split_colon_path(path) 
    one, two = path.split(':', 2) 
    if one && two && #### this part was commented # ::Haml::Util.windows? && 
     one =~ /\A[A-Za-z]\Z/ && two =~ /\A[\/\\]/ 
    # If we're on Windows and we were passed a drive letter path, 
    # don't split on that colon. 
    one2, two = two.split(':', 2) 
    one = one + ':' + one2 
    end 
    return one, two 
end 

y at-il une meilleure solution pour la détection de la plate-forme?

+0

'' sass' vs k:/ssas/'- est le premier élément de votre chemin une faute de frappe? – sarnold

+0

@sarnold: petite faute de frappe en remplaçant les chemins réels – alexandrul

Répondre

1

Ceci est un bug connu. Il est corrigé dans la dernière version stable de Sass, sauf si vous utilisez mingw Ruby, auquel cas il sera corrigé dans la prochaine version stable (à paraître ce week-end).

+0

J'utilise mingw Ruby, merci pour les bonnes nouvelles. – alexandrul

1

Problème résolu en haml-edge 3.1.64.

Pour mémoire, mingw a été ajouté aux host_os valeurs possibles {Ruby folder}\lib\ruby\gems\1.9.1\gems\haml-edge-3.1.64\lib\haml\util.rb:

# Whether or not this is running on Windows. 
# 
# @return [Boolean] 
def windows? 
    RbConfig::CONFIG['host_os'] =~ /mswin|windows|mingw/i 
end 
+0

Merci pour l'explication. On dirait que c'est vous qui avez expliqué ce bug sur l'index internet public :) – user80805