タグ

Rubyとreferenceに関するkorinのブックマーク (2)

  • Sinatra: README (Japanese)

    This page is also available in English. 始めよう SinatraはRubyで下記のような最小労力で手早くウェブアプリケーションを作成するためのDSLです。 # myapp.rb require 'rubygems' require 'sinatra' get '/' do 'Hello world!' end gemをインストールして動かしてみる。 sudo gem install sinatra ruby myapp.rb localhost:4567 を見る。 ルート Sinatraでは、ルートはHTTPメソッドとURLマッチングパターンがペアになっています。 ルートはブロックに結び付けられています。 get '/' do .. 何か見せる .. end post '/' do .. 何か生成する .. end put '/' do .. 何か更

  • netswitch! | Rubyでfinalizerの順番を制御する

    SWIGでLLVMのRuby bindingを書いていて、やっぱりGC周りではまってしまった。 具体的には、オブジェクトの開放の順番を指定しないといけないのだが、 Rubyではfinalizerの実行順は不定だし、先に消えてほしいオブジェクトからリファレンスを持ったりしてみたのだが、 rootからの参照を一度に消されるとどうしようもない。 そこで試しに以下のようなコードを書いてみたところうまくいった。 module OrderedFinalizer @@queue = [] def self.add(*v) @@queue << weaken_reference(v) end def self.weaken_reference(v) v.last.map!(&:object_id) v end def self.step @@queue.each do |group| unless gro

  • 1