hack のためのネタ帳, etc,,,

2014-02-14 現在、以下のように起動時の更新チェックは動くのだが、ファイルの更新の監視が腐る。
$ compass watch
>>> Change detected at 00:28:06 to: screen.scss
identical stylesheets/screen.css
>>> Compass is polling for changes. Press Ctrl-C to Stop.
ArgumentError on line ["500"] of /home/kou/.rbenv/versions/2.0.0-p353/lib/ruby/2.0.0/pathname.rb: different prefix: "//tmpcompasssassscreen.scss" and "/tmp/compass/sass"
Run with --trace to see the full backtrace
--trace オプション付きで実行してみたら、原因は、ファイルの更新を監視するために使っている Ruby - fssm って gem の
FSSM::Pathname.segments て method だった。
この method でパスが ["//", ... ] って展開されるのだが、//〜 は UNC 扱いになるので、頭から join していくと File::SEPARATOR が挿入されずに連なっちゃう模様。
どうも Ruby の class Pathname の仕様らしく "//host/share" が root 扱いされるので ["//host/share", ... ] って展開しないと駄目っぽい。
仕方ないので Pathname.root? で確認しながら、分割させるようにしたら、以下のように正常に動作するようになった。
$ compass watch
>>> Change detected at 00:28:57 to: screen.scss
identical stylesheets/screen.css
>>> Compass is polling for changes. Press Ctrl-C to Stop.
>>> Change detected at 00:29:00 to: screen.scss
identical stylesheets/screen.css
修正は github に上げて pull request 投げておいた。

2014-02-21: 追記
pull request 投げて 1 週間経過したが、気付いてもらえない。 orz
Ruby - fssm のメンテナンスの状況 が currently unmaintained みたいなので、このまま放置されかねない状況?

野良 patch しないと動かないのは面倒なので、
Compass の側を fssm から guard/listen に移行させる patch 書いて投げた方が吉だろうか?
fssm の deprecateion message さえ消されてなければ unmaintained になってることを Compass の人に気付いてもらえそうなものなのに orz

2014-02-25: 追記
Cygwin で UNC 上で作業している時に、不具合が修正し切れていなかったので再度修正。
修正は github に上げて pull request し直した。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

管理人/副管理人のみ編集できます