2014年8月15日金曜日

Greoasemonkey のスクリプトが Firefox Sync で 同期できないので調べてみた

Firefox 31.0 + Greoasemonkey 2.1 を使用。

成功ログを記録できるようにする

まず、Firefox Sync のログを見えるようにする。
ロケーションバーに「about:sync-log」と入力すると、Firefox Sync のログファイルの一覧が表示される。
実体は「<Firefoxプロファイルフォルダ>\weave\logs\」である。

しかし、デフォルトではエラーログ (error-NNNNNNNNNNNNN.txt) しか記録されないので、成功ログ (success-NNNNNNNNNNNNN.txt) も記録できるように変更する。
そのために、「about:config」から「services.sync.log.appender.file.logOnSuccess」を「true」に変更する。

Greasemonkey スクリプトを同期してみる

同期元PCで


同期元PCのFirefoxで、Greasemonkeyのスクリプトを追加して、同期を実行する。
以下の成功ログが記録された(一部分を抽出、一部伏せ字)。

1408071534272 Sync.Engine.Greasemonkey DEBUG First sync, uploading all items
1408071534273 Sync.Engine.Greasemonkey INFO 1 outgoing items pre-reconciliation
1408071534471 Sync.Collection DEBUG mesg: GET success 200 https://sync-57-us-west-2.sync.services.mozilla.com/1.5/ZZZZZZZZ/storage/greasemonkey?full=1
1408071534471 Sync.Collection DEBUG GET success 200 https://sync-57-us-west-2.sync.services.mozilla.com/1.5/ZZZZZZZZ/storage/greasemonkey?full=1
1408071534472 Sync.Engine.Greasemonkey INFO Records: 3 applied, 3 successfully, 0 failed to apply, 0 newly failed to apply, 3 reconciled.

同期先PCで


次に、同期先PCのFirefoxで同期を実行する。
こちらの Firefox でも成功ログを記録するようにしてある。
なお、同期する前に「services.sync.greasemonkey.lastSync」と「services.sync.greasemonkey.lastSyncLocal」の値をリセットしてから同期を行った。

以下の成功ログが記録された(一部分を抽出、一部伏せ字)。

1408071582269 Sync.Engine.Greasemonkey DEBUG First sync, uploading all items
1408071582269 Sync.Engine.Greasemonkey INFO 0 outgoing items pre-reconciliation
1408071582526 Sync.Collection DEBUG mesg: GET success 200 https://sync-57-us-west-2.sync.services.mozilla.com/1.5/ZZZZZZZZ/storage/greasemonkey?full=1
1408071582526 Sync.Collection DEBUG GET success 200 https://sync-57-us-west-2.sync.services.mozilla.com/1.5/ZZZZZZZZ/storage/greasemonkey?full=1
1408071582526 Sync.Engine.Greasemonkey INFO Records: 6 applied, 6 successfully, 0 failed to apply, 0 newly failed to apply, 0 reconciled.
スクリプトの同期が成功してるようなログが出ているが、「<Firefoxプロファイルフォルダ>\gm_scripts\」を確認しても実際は同期されていなかった。

Syncサーバーには保存できてるが、同期先PCに同期する時に失敗してる感じだろうか?


同期先PCでProcess Monitorを使ってモニターしてみた




まず「%TEMP%\gm-temp-1\*.user.js」に同期してから、そのファイルを「<Firefoxプロファイルフォルダ>\gm_scripts\*\*.user.js」にコピーしようとしてるように見える。

しかし、よく見るとコピー先のディレクトリに、同期PCのプロファイルフォルダ名が使用されていた。

つまり、同期PCの<Firefoxプロファイルフォルダ>部分が「XXXXXXXX.default」、
同期PCの<Firefoxプロファイルフォルダ>部分が「YYYYYYYY.default」だった場合、
同期PCの「XXXXXXXX.default」以下に同期しようとしてるっぽい。

それで、そんなパスがないので「PATH NOT FOUND」が出てるのではないかと。

そこで同期先PCに「XXXXXXXX.default\gm_scripts\FirefoxSyncTest\」を作成して、もう一度、同期してみた。



今度は、「NAME NOT FOUND」になり、やっぱり同期できなかった。
問題は「<Firefoxプロファイルフォルダ>が同期元のそれになっているから」だけではないみたい。


それとも、スクリプトの同期できないのは私だけで、他の人はちゃんと同期ができているんだろうか?





ついでに、、、
同期のインターバルは、services.sync.syncInterval でミリ秒で指定できるっぽい。
デフォルトは90000ぽい。

0 件のコメント:

コメントを投稿