Appcelerator Titanium Desktop のKroll / Ruby bridge

http://www.codestrong.com/titanium/guides/ruby/


Number,Boolean,Hash,Array等だけじゃなく、オブジェクトも可能。
下記コードの検証環境はSandBoxです。

JavascriptRuby

<script>
  var globalObject = new Object();
  globalObject.foo = "string";
  alert(globalObject.foo); //string
</script>
<script type="text/ruby">
  alert(window.globalObject.foo="string2") #string2
  def changeNumber(obj)
    obj.foo = "string3"
  end
  changeNumber(window.globalObject)
</script>
<script>
alert(globalObject.foo); //string3
</script>

RubyJavascript

<script type="text/ruby">
class MyObj
  attr_accessor :name

  def initialize name
    @name = name
  end
end
window.myobj = MyObj.new("titanium")
</script>
<script>
  alert(myobj.name()); //titanium
  myobj.name = "desktop";
  alert(myobj.name()); //desktop
</script>

Ruby側のコードで、windowとかを省略しても呼べたりしますが、明示的に書いといた方がよさげです。混乱の元ですし。
あと、一緒くたに書くとそれぞれのコメント(//と#)を間違えてはまったりします。実際にコード書いていく時にはsrcでそれぞれのファイルに切り分けて行くでしょうから問題ないとは思いますが。