Appcelerator Titanium Desktop のKroll / Ruby bridge
http://www.codestrong.com/titanium/guides/ruby/
Number,Boolean,Hash,Array等だけじゃなく、オブジェクトも可能。
下記コードの検証環境はSandBoxです。
<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>
<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でそれぞれのファイルに切り分けて行くでしょうから問題ないとは思いますが。