gem update --systemではうまく行かない場合があるようなので、 その場合には以下のようにすればOkです。

   1  # gem install rubygems-update
   2  # update_rubygems

posted by Png genki on Mon 29 Sep 2008 at 19:42

Macのtopコマンドはdebianのものと違って、 Shift+Mではメモリの使用量によるソートができませんでした。 Macの場合は、

   1  % top -orsize

のように、オプションを指定して起動するか、 topが起動している状態で、oキーを押してから、 rsizeと入力すると良いようです。

RSIZEというカラムが使用しているメモリの量を表しています。

posted by Png genki on Mon 29 Sep 2008 at 19:38

config/environment.rbの中で、config.gemによってversion指定したgemを、 rake gems:unpackしようとすると、以下のようなエラーが出るようです。

   1  % rake gems:unpack GEM=genki-pagination_scope 
   2  (in /Users/takiuchi/project/formula)
   3  ERROR:  While executing gem ... (ArgumentError)
   4      Illformed requirement ["\">= 0.0.4\""]

RailsのLightHouseでも報告されていました。

rake gems:unpack version handling broken

ということで、この問題を回避するために、上記Ticketに添付されていた Patchを参考に、以下のようなMonkeyPatchを作ってみました。

config/initializers/fix_gem_unpack_for_2_1_1.rb

   1  module Rails
   2    class GemDependency
   3      def unpack_to(directory)
   4        FileUtils.mkdir_p directory
   5        Dir.chdir directory do
   6          Gem::GemRunner.new.run(
   7            unpack_command.map {|i| i.gsub(/\A["']|["']\z/, '')})
   8        end
   9  
  10        spec_filename = File.join(gem_dir(directory), '.specification')
  11        File.open(spec_filename, 'w') do |file|
  12          file.puts specification.to_yaml
  13        end
  14      end
  15    end
  16  end

これをconfig/initializers/の下に置いておけば、とりあえず正常にunpackする事ができます。

posted by Png genki on Wed 24 Sep 2008 at 02:10

現時点では(version 0.3.1)、macirbを使うときは、LANG=C で利用する必要があるようなので、以下のようにzshrcでaliasを登録してみました。

~/.zshrc

   1  alias macirb='LANG=C macirb'

これで特に問題なくmacirbを使う事ができます。

ちなみに、require "nkf"をしているRubyスクリプトを macrubyで実行する場合も、同様にLANGをCにする必要があるようです。

See Also

posted by Png genki on Mon 22 Sep 2008 at 16:40

外で開発する場合に、マウスがないと不便なので、 vimouseをMacに移植するためにMacRubyをインストールしてみる事にしました。 最初はインストーラを以下のサイトから落としてきて普通にインストールしました。

インストール自体は非常に簡単に終了したのですが、 macirbを実行しようとすると以下のようなエラーが出て、 入力をいっさい受け付けなくなるという悲しい状況に。

   1  % macirb
   2  dyld: lazy symbol binding failed: Symbol not found: _rb_enc_find_index
   3    Referenced from: /Library/Frameworks/MacRuby.framework/Versions/0.3/usr/lib/ruby/1.9.0/universal-darwin9.0/nkf.bundle
   4    Expected in: flat namespace
   5  
   6  dyld: Symbol not found: _rb_enc_find_index
   7    Referenced from: /Library/Frameworks/MacRuby.framework/Versions/0.3/usr/lib/ruby/1.9.0/universal-darwin9.0/nkf.bundle
   8    Expected in: flat namespace

どうやら今のバージョン(0.3.1)のMacRubyには、 NKFに問題があって、日本語環境でmacirbを実行しようとすると問題があるようでした。

という事で、最新版なら直ってるかもしれないという望みにかけて、 trunkから切り出してきたMacRubyも試してみました。

   1  % git svn clone http://svn.macosforge.org/repository/ruby/MacRuby -T trunk
   2  % cd MacRuby
   3  % rake
   4  % sudo rake install
   5  % macruby -v
   6  MacRuby version 0.4 (ruby 1.9.0 2008-06-03) [universal-darwin9.0]

しかし残念ながら、上記の問題はまだ直っていないようです。

posted by Png genki on Mon 22 Sep 2008 at 15:18 with 3 comments

LeopardでGNU screenを使っているとき、以下のような エラーメッセージが出てくることがあるようです。

   1  ****** Returning nil _server **********

これはLeopardに付属している/usr/bin/screenに当たっているパッチの影響であるらしく、Macports版のGNU screenを使えばこの問題は発生しないようです。

posted by Png genki on Mon 22 Sep 2008 at 09:35

iPhone-2.1になってから、SafariでSVGを表示できるようになったらしい。

SVG working on the iPhone

30AA30FC30AC30CA30A430B6

おお。

See Also

posted by Png genki on Thu 18 Sep 2008 at 23:04

.autotestを書き換えるたびに思い出すのに苦労するのでまとめておきます。

Hook List of autotest
hook namewhen does it happen?
:initialize起動直後
:interruptINT割り込み発生時
:reset初期化の後およびING割り込み時の初期化が完了した後
:run_commandテストの実行前
:ran_commandテスト完了時
:all_goodINTによる全体テストが成功裏に完了した場合
:waitingテスト実行完了後にsleepする直前
:quit終了時

posted by Png genki on Tue 16 Sep 2008 at 08:32

早速Growlとautotestを連携させてみようと思ったのですが、 growlnotify-1.1.4でメッセージを出そうとすると、

   1  % growlnotify -m "test"
   2  2008-09-15 09:13:20.929 growlnotify[901:10b] could not find local GrowlApplicationBridgePathway, falling back to NSDNC

こんな感じのWARNINGが出てきます。 メッセージ自体はきちんと表示されるので、実用上問題ないのですが、 毎回警告が出てくるのはちょっと気になるので、 警告が出ない方法が無いかいくつか試してみた所、 以下のようにホストを指定すると大丈夫なようでした。

   1  % growlnotify -m "test" -H localhost

ということで、autotestと連携させるために、 以下のような.autotestファイルを作成しました。

   1  class Autotest
   2    module Growl
   3      IMG_OK = '/Developer/Examples/Carbon/Dial/English.lproj/' +
   4               'rotate_knob_select.tiff'
   5      IMG_NG = "/Applications/Mail.app/Contents/Resources/Caution.tiff"
   6      class << self
   7        def growl(title, msg, img = nil, pri = 0, sticky = "")
   8          img ||= IMG_NG
   9          msg += " at #{Time.now.strftime('%Y-%m-%d %H:%M:%S')}"
  10          system "growlnotify -n autotest #{title} -m #{msg.inspect}" +
  11            " -H localhost --image #{img} -p #{pri} #{sticky}"
  12        end
  13      end
  14  
  15      Autotest.add_hook :run_command do |at|
  16        growl "autotest running", "Started", IMG_OK
  17      end
  18  
  19      Autotest.add_hook :ran_command do |at|
  20        result = [at.results].flatten.join("\n")
  21        examples = result.slice(/(\d+)\s+examples?/).to_i
  22        tests = result.slice(/(\d+)\s+tests?/).to_i
  23        failures = result.slice(/(\d+)\s+failures?/).to_i
  24        errors = result.slice(/(\d+)\s+failures?/).to_i
  25        if failures + errors > 0
  26          growl "Tests Failed",
  27            "#{failures} failures #{errors} errors", IMG_NG, 2#, "-s"
  28        else
  29          growl "Tests Passed", "#{tests + examples} tests", IMG_OK
  30        end
  31      end
  32    end
  33  end

最初はrequire 'autotest/growl'をしてモンキーパッチを当てていたのですが、 結局ほとんど書きかえてしまったのでこうなりました。

エラーが発生した場所や、エラーメッセージなんかも表示できるようになるともっと便利になるかもしれないですね。

posted by Png genki on Mon 15 Sep 2008 at 09:24 with 2 comments

Mac環境でうまく動いていない状況だったので、修正を行いました。

http://github.com/genki/trident/tree/master

基本的な使い方の変更は特にありません。

複数の端末でTridentを起動しているときに、 'Trident.reload'を呼び出した端末でのみリロードが実行されるようになりました。 よろしくお願いします。

posted by Png genki on Sat 13 Sep 2008 at 15:48