Sass (Ruby CSS компрессор) параметры абсолютного пути в Windows - PullRequest
0 голосов
/ 13 августа 2010

Я использую sass (из haml-edge ) для обработки css файлов, и он падает на абсолютные пути в качестве параметров:

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>'

Мне удалось заставить его работать, комментируя одно условие в split_colon_path (Ruby \ lib \ ruby ​​\ gems \ 1.9.1 \ gems \ haml-edge-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

Есть ли лучшее решение для определения платформы?

Ответы [ 2 ]

1 голос
/ 16 августа 2010

Проблема решена в haml-edge 3.1.64.

Для записи mingw было добавлено к host_os возможным значениям в {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
1 голос
/ 14 августа 2010

Это известная ошибка. Это исправлено в последней стабильной версии Sass, если вы не используете mingw Ruby, и в этом случае это будет исправлено в следующей стабильной версии (которая выйдет в эти выходные).

...