• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

ブラックボックスなシステムを間に挟んで caller と callee
間で通信を行なう
Wormholeのバージョン0.1.2
をリリースしました。

新しい機能

  • Named wormhole: ネストしたWormholeの呼び出しに対して、名前を付けて区別することができるようになりました
  • Syntax constraint: catchブロックの直後にreturnメソッドが呼ばれていない場合に例外を投げるようにしました
    ruby>>
    w = Wormhole.catch do
    end #=> Wormhole::LateReturnError

(snip)
w.return

Worrmhole.catch do
end.return # => OK
<<--

ついでにWormholeの使用例を。

app/controllers/foo_controller.rb

rails>>
require 'wormhole'
class FooController < ApplicationController
def index
Wormhole.catch do
render :action => 'index'
end.return do |result|
result[:html] = "Hello, world!"
end
end
end
<<--

app/views/foo/index.html.erb

rails>>
<% Wormhole.throw do |result| %>
<%= result[:html] #=> 'Hello, world!' %>
<% end %>
<<--

Viewのコードから一端Controllerのコードに戻って、
またViewに戻って結果を表示しています。

このように、おいそれとは変更できないようなフレームワークのコードを跨いで、呼び出し側と呼び出し元の間で情報のやり取りを行なう事ができます。

posted by genki genki on Sat 12 Jul 2008 at 03:08 with 0 comments