スポンサーリンク
2013年08月21日
同じ症状を検索しても見つからないので、この問題はたぶん私の環境だけなのでしょう。
SublimeText1を使い始めてから、1週間ほどたちました。ふと以前よりメモリ使用量が増えたような気がします。さらに、少し暑い部屋でMacを放置し、しばらくして戻ってきたら、ファンが全開で回っていました。起動しているアプリをあらかた落としてみましたが、ファンは止まることなく「ぶ〜ん」と回っています。
アクティビティモニタで確認します。
Ruby がいっぱい。CPU使用率で並べ替えてみると上位独占。一つ一つは大した事がないですが、常に高め、メモリもまぁまぁ、でも、Rubyを使った記憶がない・・・。
そういえばCompassを入れるときにRubyがどうのこうのしたなぁと思い出しました。
当たり前ですが、 Compassを実行すると、Rubyプロセスが起動します。sh経由なので、shプロセスも増えます。 ~/Library/Application Support/Sublime Text 2/Packages/Compass/Compass.sublime-build
ファイルを確認すると compass watch
が実行されています。ファイルを監視して更新されると自動でコンパイルしてくれるようです。
ここまではいいのですが、SublimeText上で実行するとコンソールに >>> Compass is polling for changes. Press Ctrl-C to Stop.
が表示されます。このメッセージは、Compassが出力しているので、SublimeText上で Ctrl+c
を押しても、何も起こりません。ターミナルでCompassを実行した場合は、 Ctrl+c
で止まります。sublime-keymap
を確認しましたが、Crtl+c
には何も割り当てられてないようです。
てっきりSublimeTextを終了させると、一緒にcompass(ruby)も止まってくれるのかと思ったのですが、ずーっと、居座るようです。そんな訳で、プロセスを落とさないと、うっかりCompassのビルドを実行するたびに、rubyプロセスが増えます。まぁ、compass watch
は、一度だけ実行すればいいので、忘れなければ大丈夫ですね。私は大丈夫ではなかったです・・・
結局、ターミナルかアクティビティモニタで終了させることになるのですが、面倒なのでシェルスクリプト(killcompass.sh)を作成します。Compassのrubyプロセスを全て終了させます。初めてシェルスクリプトなるものを書いたので、正しいかどうかはわかりません。期待通りに動けばOKです。
#!/bin/sh USER='ユーザ名' pids=`ps ux | grep ${USER} | grep 'compass watch' | grep 'ruby' | grep -v grep | awk '{print $2;}'` for pid in ${pids[*]} do kill ${pid} done
せっかくなので、SublimeTextから呼び出せるようにします。
~/Packages/Compass/Compass.sublime-build
を~/Packages/User/へコピー
します。
コピーした @Compass.sublime-build@ に下記を追加、
"variants": [ { "shell": "false", "name": "Kill Compass", "cmd": ["$project_path/killcompass.sh"] } ]
こうしておけば、Compass利用時にCmd+Shift+p
でコマンドパレットを開き、kill compass
を実行すれば、rubyプロセスを落とすことができます。
と、あれこれしてみたのですが、SublimeTextを終了させるときに忘れていたらどうしようもないので、Compassパッケージを使うことをやめました。
そこで、フリーウェアのScout2を試してみました。他のエディタでも汎用的に使えるので、これでいいかなと思いました。
が、Javaも動いているらしく、本体と合わせて250MB程度と、何もしなくてもわりかしメモリそしてCPUを食うのであきらめました。お手軽で便利なんですけどね、MacbookAirのメモリが4GBなので無意味にメモリを使うアプリは使いにくいです。
結局、シェルスクリプトファイルを作って、そこから呼び出すようにしました。ターミナルが表示されるので落とし忘れも無さそうです。