2008-02-01から1ヶ月間の記事一覧

パッチの送り方

spec ファイルを作成したら、それを Rubinius 開発チームに届けるわけだけど、その手順は次の通り。 spec ファイルをリポジトリに登録する (git add, git commit) パッチを作成する (git-format-patch origin) BTS で ticket を発行し、パッチを添付する ま…

*.rbc の owner と permission

当然のように、Rubinius も調べてみる。 foo.rb: def hello(name) puts "Hello #{name}!" end main.rb: require 'foo' hello('World') result: $ ls -l main.rb* foo.rb* # 最初は *.rbc はない -rw-r--r-- 1 kwatch kwatch 44 Feb 13 18:35 foo.rb -rw-r--r…

*.pyc の owner と permission

なんかコメントがついてた。気がつくのが遅くてすみません。 え、python ってそうなの? 自動保存だとパーミッション関連が大変そうだけど、大丈夫なんだろうか。 http://d.hatena.ne.jp/kwatch/20080209#c1202531672 というわけで、調べてみる。 foo.py: de…

alias を使っている場合の spec ファイルの書き方

ERB::Util::h() は、ERB::Util::html_escape() への alias となっている。 class ERB module Util module_function def html_escape(s) s.to_s.gsub(/&/,'&amp;').gsub(/</,'&lt;').gsub(/>/,'&gt;').gsub(/"/,'&quot;') end alias h html_escape end end このような場合は、sp…

Rubinis 用の spec ファイルを作成する

Rubinius では、Test::Unit ではなくて、RSpec でもなくて、独自に作った RSpec のサブセットを使ってテストをしている。しかも単なるサブセットではなく、Rubinius 用の拡張が入っている。また Rubinius には、spec ファイルを生成するためのテンプレートが…

いつのまにか samidare に捕捉されていた。リンク元を調べてみたら、初日から捕捉されているようだ。いくらなんでも仕事早すぎだろ。しかしどうやって見つけるんだろう。まさか、はてなや他の blog サービスを毎日監視しているわけでもないだろうし。タイト…

Rubinius のおもしろ機能: 構文木とバイトコードを表示する

たとえば次のような Ruby スクリプト (hoge.rb) があったとする。 def hello(name) puts "Hello #{name}!" end hello('World') ここで「rubinius describe hoge.rb」を実行すると、hoge.rb の構文木とバイトコードが表示される。「rbx describe hoge.rb」だ…

トラブル:rake build が動かない

rake git:update して rake build すると、なんかエラーになってビルドできない。 $ cd rubinius.code $ rake git:update $ rake build (in /var/tmp/rubinius.code) make vm cd shotgun; make rubinius cd lib; make library; Makefile:59: Extraneous text…

Rubinius の yaml.rb は Syck ではなく rbYAML だった

Rubinius で require 'yaml' すると、Syck ではなく rbYAML が使われるみたい。たぶん Syck が拡張モジュールだからだろう。しかしなあ、rbYAML はバグだらけなんだよな。Syck もバグがあるんだけど、rbYAML はそれどころではないくらいバグが多い。たとえば…

Rubinius でまだ実装されてないもの

File#flock() がなかった。 ticket#251をみると、File#truncate, File#chown, File#mtime, File#lstat もないみたい。1.0 release はまだまだ先だな、こりゃ。追記(2008-02-24): 今見たら、全部実装されたみたい。よかった。

Rubinius は自動コンパイル

Rubinius でスクリプトを実行すると、自動的に *.rb をコンパイルして、バイトコードを *.rbc というファイルに書き込んでくれる。これで、次回からは *.rb ではなく *.rbc を直接読めば良くなるから、ライブラリの require が速くなる。 これも Python と同…

Rubinius の対話モード

Rubinius は、ファイル名を指定しないで起動すると、irb のような対話モードになる。 $ rbx irb(main):001:0> p %[a b c] "a b c" => nil irb(main):002:0> Python と同じ仕様だな。

起動スクリプト

Rubinius には、'rubinius.code/shotgun/rubinius' という起動スクリプトが用意されている。どうも /usr/local/bin/rbx を直接起動するよりも、このスクリプトを使った方がいいみたい。 でもこのスクリプト、rake install じゃインストールされないんだよな…

Rubinius のコンパイル & インストール

Rubinis のコンパイル手順はここに書かれてある。 http://rubinius.lighthouseapp.com/projects/5089/installationまず以下のものが必要なので、これらをインストールする。 GCC version 4.x (http://gcc.gnu.org/ ) GNU Bison (http://www.gnu.org/software…

テストその1

テスト テストテスト テスト テスト