罗盘(红宝石)编码误差(Compass (ruby) encoding error)

2019-09-17 02:04发布

我已经安装在Ubuntu解梦,没有任何问题我已经更新到精确的格式化/和保存/家庭指南针0.12(红宝石宝石),所以我需要重新安装红宝石(1.9.3)。

现在我得到这个错误,当我编译SCSS文件:

compass watch --trace

            Change detected at 12:45:09 to: style.scss overwrite css/style.css

Dear developers making use of FSSM in your projects, FSSM is essentially dead at this point. Further development will be taking place in the new shared guard/listen project. Please let us know if you need help transitioning! ^_^b - Travis Tilley

>>> Compass is polling for changes. Press Ctrl-C to Stop.
ArgumentError on line ["46"] of /usr/lib/ruby/1.9.1/pathname.rb: invalid byte sequence in US-ASCII
  /usr/lib/ruby/1.9.1/pathname.rb:46:in `chop_basename'
  /usr/lib/ruby/1.9.1/pathname.rb:102:in `cleanpath_aggressive'
  /usr/lib/ruby/1.9.1/pathname.rb:90:in `cleanpath'
  /usr/lib/ruby/1.9.1/pathname.rb:452:in `relative_path_from'
  /var/lib/gems/1.9.1/gems/fssm-0.2.9/lib/fssm/path.rb:82:in `split_path'
  /var/lib/gems/1.9.1/gems/fssm-0.2.9/lib/fssm/path.rb:70:in `run_callback'
  /var/lib/gems/1.9.1/gems/fssm-0.2.9/lib/fssm/path.rb:56:in `callback_action'
  /var/lib/gems/1.9.1/gems/fssm-0.2.9/lib/fssm/path.rb:36:in `update'
  /var/lib/gems/1.9.1/gems/fssm-0.2.9/lib/fssm/state/directory.rb:39:in `block in modified'
  /var/lib/gems/1.9.1/gems/fssm-0.2.9/lib/fssm/state/directory.rb:37:in `each'
  /var/lib/gems/1.9.1/gems/fssm-0.2.9/lib/fssm/state/directory.rb:37:in `modified'
  /var/lib/gems/1.9.1/gems/fssm-0.2.9/lib/fssm/state/directory.rb:18:in `refresh'
  /var/lib/gems/1.9.1/gems/fssm-0.2.9/lib/fssm/backends/polling.rb:17:in `block (2 levels) in run'
  /var/lib/gems/1.9.1/gems/fssm-0.2.9/lib/fssm/backends/polling.rb:17:in `each'
  /var/lib/gems/1.9.1/gems/fssm-0.2.9/lib/fssm/backends/polling.rb:17:in `block in run'
  /var/lib/gems/1.9.1/gems/fssm-0.2.9/lib/fssm/backends/polling.rb:15:in `loop'
  /var/lib/gems/1.9.1/gems/fssm-0.2.9/lib/fssm/backends/polling.rb:15:in `run'
  /var/lib/gems/1.9.1/gems/fssm-0.2.9/lib/fssm/monitor.rb:26:in `run'
  /var/lib/gems/1.9.1/gems/fssm-0.2.9/lib/fssm.rb:70:in `monitor'
  /var/lib/gems/1.9.1/gems/compass-0.12.1/lib/compass/commands/watch_project.rb:89:in `perform'
  /var/lib/gems/1.9.1/gems/compass-0.12.1/lib/compass/commands/base.rb:18:in `execute'
  /var/lib/gems/1.9.1/gems/compass-0.12.1/lib/compass/commands/project_base.rb:19:in `execute'
  /var/lib/gems/1.9.1/gems/compass-0.12.1/lib/compass/exec/sub_command_ui.rb:43:in `perform!'
  /var/lib/gems/1.9.1/gems/compass-0.12.1/lib/compass/exec/sub_command_ui.rb:15:in `run!'
  /var/lib/gems/1.9.1/gems/compass-0.12.1/bin/compass:29:in `block in <top (required)>'
  /var/lib/gems/1.9.1/gems/compass-0.12.1/bin/compass:43:in `call'
  /var/lib/gems/1.9.1/gems/compass-0.12.1/bin/compass:43:in `<top (required)>'
  /usr/local/bin/compass:19:in `load'
  /usr/local/bin/compass:19:in `<main>'

(其中“亲爱的开发”消息是输出的一部分)。

此错误不会出现在我第一次做出改变的SCSS文件,但第二个。

此外,指南针“吃”一个“S”,在一些文件,而不是编译他们为“style.css文件”(它应该是从该文件的名称是什么),它为“tyle.css”。

我花3小时,类似的问题在这里寻找,但我没能解决它。 我想包括#编码:对,没有运气的一些文件的顶部UTF-8。

一步请解释一步该怎么办,因为我是用Ruby总小白(我只是使用它,因为上海社会科学院)。

Answer 1:

我认为有一些问题的路径,也许它包含无效的非ASCII序列; 可能是吃了“S”的问题,也许这是无效字符,或者可能接近它的字符; 尽量保证路径是ASCII。

或者,也许在精确的readline包的一个错误? 尝试通过RVM安装Ruby 1.9.3,RVM应使用输入行与它捆绑在一起(见下面的评论详细内容)



Answer 2:

从我所看到的,有问题的文件pathname.rb包含此功能,这似乎是在麻烦的是:

def chop_basename(path)
  base = File.basename(path)
  if /\A#{SEPARATOR_PAT}?\z/o =~ base
    return nil
  else
    return path[0, path.rindex(base)], base
  end
end
private :chop_basename

下面是用同样的问题类似的问题的链接:

Ruby on Rails的应用程序将不会开始使用时,乘客中有应用程序路径非ASCII字符

因此,解决方法是明确坚持使用US-ASCII路径名。

下面是该类中的那个文档片段:

路径表示位于文件系统中的文件路径名。 该路径取决于操作系统:Unix上,Windows等路径名库的工作方式与本地操作系统的路径名。 然而非Unix路径名实验支持。

至于为什么它之前的工作,现在没有,这很难说。 这有可能是你的系统上的一些其他的库而改变,或红宝石1.9.3升级造成的引入的误差的微小变化。



文章来源: Compass (ruby) encoding error