代码之家  ›  专栏  ›  技术社区  ›  alexandrul

windows上的sass(ruby css compressor)绝对路径参数

  •  0
  • alexandrul  · 技术社区  · 14 年前

    我在用 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 回复  |  直到 14 年前
        1
  •  1
  •   Natalie Weizenbaum    14 年前

    这是一个已知的错误。它在sass的最新稳定版本中得到了修复,除非您使用mingw ruby,在这种情况下,它将在下一个稳定版本中得到修复(将于本周末发布)。

        2
  •  1
  •   alexandrul    14 年前

    问题解决于 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