Ruby

アップグレードダウン

RubyMineの2.0βを試したくて、暫くぶりでRailsで書いたアプリケーション(scaffold)を起動したら、何故かエラーが出て動かない。どうやらRailsを2.3に上げたのが原因なのだが、そんな違いがあったっけか。・セッションキーの設定 `ensure_session_key': A key…

Heroku

HerokuWebブラウザを使ってRailsの開発ができる、ということで話題になったHeroku Gardenだが、本家のHerokuはRuby on Railsをホスティングする、いわば"Rails-PaaS"(といってもいいだろう)マルチテナントサービス。バックエンドにはAmazon EC2を使っている…

RubyとRubyMine(Build 993)でテストの結果が変わる

DRbのテストをしていたのだが、RubyとRubyMineで同じテストの結果が変わる現象が発生している。 drbtest.rb(%RUBY_IMAGE%test/drb/drbtest/rb) RubyMine Build 993(tunit_in_folder_runner.rb) > expected to be kind_of? but was . ./drbtest.rb:119:in `te…

Ruby-1.8.7_p160 test_system編

現在の状況 test_gdbm(test_s_open_create_new) Windowsでは対応していないファイルモードがあるので放置中 test_ssl(test_client_auth) 特定の環境によってECONNRESETが出たりでなかったりなので放置中上記を除くと通っていないテストは現状1つとなった。 S…

Ruby-1.8.7_p160 openssl編 その4

前回すったもんだしたopensslだが、気を取り直して本家から最新のソースコードをダウンロードしてビルドするとあっさりと何もなかったように終わった。openssl-0.9.8k.tar.gz/ openssl Source, Tarballs ビルドが成功した理由はちゃんとあった。以下のように…

Ruby-1.8.7_p160 openssl編 その3

test_ssl.rb中のtest_client_authが失敗する件だが、自宅環境で拡張ライブラリィを作り直してテストして見るとエラーが消えてしまった。仕事場の環境でエラーが出た時のログを見ると 3) Failure: test_client_auth(OpenSSL::TestSSL) [./openssl/test_ssl.rb…

Ruby-1.8.7_p160 openssl編 その2

前回すったもんだしたopensslだが、気を取り直して本家から最新のソースコードをダウンロードしてビルドするとあっさりと何もなかったように終わった。openssl-0.9.8k.tar.gz/ openssl Source, Tarballsなのでこれを使って拡張ライブラリィを作る。 E:\ruby-…

Ruby-1.8.7_p160 openssl編

さて、続いてはopensslだ。まずは失敗したテスト結果を見てみよう。 3) Failure: test_client_auth(OpenSSL::TestSSL) [./openssl/test_ssl.rb:216:in `test_client_auth' ./openssl/test_ssl.rb:129:in `call' ./openssl/test_ssl.rb:129:in `start_server'…

Ruby-1.8.7_p160 iconv編 (3 failures, 1 errors)

最初はテストは省いてどんどんビルドして行こうと考えていたのだが、忘れてしまうのがおちなので、修正が必要な所は最初に対応することにした。dbm, gdbmのエラーを除去した後にrunner.rbを実行すると、以下のように失敗3、エラー1となった。 1) Failure: te…

2 failure test_gdbm.rb on Ruby-1.8.7_p160

test_dbm.rbのテストはALL GREENになったが、今度は同gdbm.dllを使用するtest_gdbm.rbのテストが通らないのが気になる所だ。 E:\ruby-1.8.7-p160\test\gdbm>ruby test_gdbm.rb Loaded suite test_gdbm Started .....................F...F................. …

Ruby Rubyと言いながら

結局Cのライブラィをコンパイル-デバッグしている毎日。 Railsの続きはいったい何時になるやら。 知らないことばかりだし、動かなかったオープンソースのコードが曲がりなりにも動くようになるのが楽しいんだよね。

ランタイムとDLL境界

Rubyを経由してgdbm.dllをデバッグした当初にちょっとはまったことがあった。Rubyの拡張ライブラリィである、dbm.soとgdbm.soは両方ともgdbm.dllの実装を利用するために動的にリンクするように作られているのだが、Visual Studioを使用してデバッグ用のgdbm.…

All Green! (DBMError: dbm_store failed in ruby1.8.7_p160 その5)

link関数を呼んでいる以上、コピーではなくやはりリンクを使うべきだろうということで、CopyFileの代わりにWindows 2000以降実装されたCreateHardLinkで試してみることにした。CreateHardLinkのマクロはCopyFile同様にVC++に付属しているWinBase.h(%VSINSTAL…

リンクとコピー (DBMError: dbm_store failed in ruby1.8.7_p160 その4)

長らく私を悩ませているRuby-DBMがまともに動かない件だが、件のgdbm.dllをデバッグすることでようやく原因が判明したかもしれない。そもそもgdbmはdbmの実装を包含しており、殆どのdbm_〜関数はgdbm_〜関数を内部で呼び出すことになるが、レガシDBMの仕様を…

Rubyの拡張ライブラリィとDBM(GDBM)をデバッグする

Ruby-DBMのテストが通らない原因をいろいろと調べていたのだが、DBMインタフェースの実装として使用しているGDBM(GNU DBM)に問題がある可能性が非常に高くなったので、こいつのデバッグをしてみることにした。Windows用のGDBMの実装は通常にビルドした場合、…

決して逃れられない

Windows3.1〜NT全盛の頃のWindows APIに依存したプログラミングに嫌気がさして、より抽象度の高い言語と開発環境を渡り歩いてきたはずだが、気がつくとデバッグしながらヘッダファイルを見てAPIを調べている自分がいる。Javaはその辺がかなり上手く隠蔽され…

DBMError: dbm_store failed (ruby1.8.7_p160)その3位

いろいろ弄るも上手く動かない。 dbm.c より static VALUE fdbm_store(obj, keystr, valstr) VALUE obj, keystr, valstr; { datum key, val; struct dbmdata *dbmp; DBM *dbm; fdbm_modify(obj); keystr = rb_obj_as_string(keystr); valstr = rb_obj_as_str…

DBMError: dbm_store failed (ruby1.8.7_p160)

何度か試していると成功するパターンがあることが解ったので、IRBで実行して見た。 一発目のファイル(DB)オープン(作成)直後のストアが問題ぽい。二度目以降は何度でもストアに成功している。

DBMError: dbm_store failed (ruby1.8.7_p160)

基本的な拡張ライブラリィのビルドが上手くいったので、Railsを動かす前に(いったいどれだけ時間がかかっているんだろ)一通りテストを通しておこうとソースに付属してきたrunner.rbを実行してみたが、エラーががんがん出る。いい機会なのでエラーを潰しなが…

ruby_eval_tree_beginとruby_in_eval

散々私を悩ませたこれらの変数だが、ruby_eval_tree_beginはインタプリタがコンパイルした構文木(begin)、ruby_in_evalはKernel#evalが評価中のネストレベルを格納する変数らしい。グローバルである必要がこれでやっと解ったが(遅いよ!)、こうやって少しずつ…

本当は解決済みだった(LNK2019: 未解決の外部シンボル)

trace_nums.cだが、取りあえずコンパイルを通すことだけは出来た。変更点は以下の通り(trace_nums.c.diff) 42,43c42,43 ruby_eval_tree_begin; ruby_in_eval; - > extern NODE *ruby_eval_tree_begin; > ちょっと冷静になればruby_eval_tree_beginとruby_in_…

RubyMineで動かしてみる

trace_nums.cのビルドが成功したので、linecacheのgemを作る。 E:\ruby_build_image\linecache-0.43>rake win32_gem (in E:/ruby_build_image/linecache-0.43) e:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake/gempackagetask.rb:13:Warning: Gem::mana…

error LNK2019: 未解決の外部シンボル

linecacheがビルドできない原因だが、未だによく分っていない。 : trace_nums.obj : error LNK2019: 未解決の外部シンボル _ruby_eval_tree_begin が関数 _lnums_for_str で参照されました。 trace_nums.obj : error LNK2019: 未解決の外部シンボル _ruby_in…

激しく妄想中

RubyのデバッガとIDEデバッガ(ruby-debug、ruby-debug-ide)だが、外部のインタプリタにアタッチすることは技術的に可能なんだろうか。 インタプリタをデバッグモードで起動することは必要になろうが、仮にデバッガがデバッグを行う際にインタプリタとなんら…

Ruby mswin32拡張ライブラリィMSVCR80版ビルド覚書き No.4

ruby-debug-base いわゆる"Fast-Debugger"であり、拡張ライブラリィ経由でrubyのデバッグを行うためのものだ。 rubyForgeにアップされているruby-debug-base-0.10.3-mswin32.gemに同梱されているruby_debug.soはMSVCRTに依存しているので、以下のソースコー…

Ruby mswin32拡張ライブラリィMSVCR80版ビルド覚書き No.3

Tcl/Tk こいつもバイナリは普通にMSVCRTを使うので、ソースからビルドすることにする。 sourceforge.net Tcl Files 今回はバージョン8.5.7のソースを使わせて頂くことにする。 tcl857-src.zip tk857-src.zipビルドには順番がある。Tkはビルド時からTclのソー…

次はこれ

1.8.7-p160のビルドが一段落ついたら、次これ行ってみよう。 Thin - yet another web serverRuby-EventMachineとRackがあればWindowsでも動くらしい。(まだ試してもいないが)

JetBrains RubyMine 1.0 now available

congratulations!!JetBrainsが開発するRubyのIDEであるRubyMineだが、予定通り4月中に発売に至った。 JetBrains RubyMine Ruby on Rails IDERubyの場合、エディタとシェル(コマンドプロンプト)でも十分に開発できるが、私はとても怠惰な人間なんで出来れば便…

Ruby mswin32拡張ライブラリィMSVCR80版ビルド覚書き No.2

本日分 curses なかむら(う)さん経由で公開されているpdcurses-2.60-1からビルド -> OKMakeFileはあるものの、installタスクのデフォルトの展開先が /usr/local なので、Windowsでは適当なディレクトリを指定しないと必ずコピーが失敗する。また、マニフェス…

Ruby mswin32拡張ライブラリィMSVCR80版ビルド覚書き

自分の環境で使うことを前提に、拡張ライブラリィは順にMSVCR80.DLLに依存する版にビルドし直していくことにした。 以下、なかむら(う)さん経由で公開とあるのは、インストール - Ruby-mswin32 (ja)からリンクの張られている、http://jarp.does.notwork.org/…