<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Ruby</title><link>http://blogs.wankuma.com/kazuki/category/1425.aspx</link><description>Ruby</description><managingEditor>k.ota.0130あっとgmail.com(かずき)</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[Ruby][NetBeans]NetBeansバンドルのJRubyのgemを使う on Vista</title><link>http://blogs.wankuma.com/kazuki/archive/2009/05/14/172994.aspx</link><pubDate>Thu, 14 May 2009 22:23:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2009/05/14/172994.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/172994.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2009/05/14/172994.aspx#Feedback</comments><slash:comments>22</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/172994.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/172994.aspx</trackback:ping><description>&lt;p&gt;管理者権限で実行しないと使えません。&lt;br&gt;うちの環境ではそうでした。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/172994.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[Ruby][NetBeans]NetBeans 6.7 betaでgemからopensslをインストール</title><link>http://blogs.wankuma.com/kazuki/archive/2009/05/14/172993.aspx</link><pubDate>Thu, 14 May 2009 22:14:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2009/05/14/172993.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/172993.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2009/05/14/172993.aspx#Feedback</comments><slash:comments>96</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/172993.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/172993.aspx</trackback:ping><description>&lt;p&gt;しようとすると&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2009/RubyNetBeansNetBeans6.7betagemopenssl_13895/image.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://kazuki.wankuma.com/images/2009/RubyNetBeansNetBeans6.7betagemopenssl_13895/image_thumb.png" width="607" height="413"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;というエラー画面が出てしまう。&lt;br&gt;VistaのProgram Files以下にインストールしている状態で、こうなってしまう…。&lt;/p&gt; &lt;p&gt;皆はうまくいってるのかな？&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/172993.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[Ruby][NetBeans]Ruby on Railsのコントローラ入門 その３</title><link>http://blogs.wankuma.com/kazuki/archive/2008/12/14/163701.aspx</link><pubDate>Sun, 14 Dec 2008 18:29:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/12/14/163701.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/163701.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/12/14/163701.aspx#Feedback</comments><slash:comments>66</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/163701.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/163701.aspx</trackback:ping><description>&lt;p&gt;その２：&lt;a title="http://blogs.wankuma.com/kazuki/archive/2008/12/13/163617.aspx" href="http://blogs.wankuma.com/kazuki/archive/2008/12/13/163617.aspx"&gt;http://blogs.wankuma.com/kazuki/archive/2008/12/13/163617.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;前回までで、コントローラの超基本的な部分をさらっとやってブラウザから動かしてみた。&lt;br&gt;一般的なリクエストを受け取って、何かやって、何かしら画面を表示する流れは完璧？のはず。&lt;/p&gt; &lt;p&gt;今回は、コントローラをコンソールから起動する方法をやってみようと思う。&lt;/p&gt; &lt;p&gt;プロジェクトは前回に引き続き、controller_eduを使っていく。&lt;/p&gt; &lt;p&gt;Ruby on Railsのアプリケーションで作ったクラスを、軽くコンソールから動かしてみようというときに使えるものとしてRails コンソールというものがある。&lt;br&gt;NetBeans 6.5では、プロジェクトで右クリックしてRails コンソールで起動できる。似た動きをするものとして、Ruby シェルというものがあるけど、別物なので間違えないように気をつけよう。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_103AD/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="121" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_103AD/image_thumb.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Railsコンソールを選択すると、出力ウィンドウにRails コンソールが出現する。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_103AD/image_3.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="66" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_103AD/image_thumb_3.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;この&amp;gt;&amp;gt; の後にRubyのプログラムを書いてEnterを押すと、その瞬間に実行されて結果が返ってくる。&lt;br&gt;ぱっと試すにはちょうどいい。&lt;/p&gt; &lt;p&gt;さて、コントローラの起動は、Dispatcherクラスのdispatchメソッドで行う。&lt;br&gt;dispatchメソッドは、環境変数のREQUEST_URIとREQUEST_METHODの値を見て呼び出すコントローラを決める。&lt;br&gt;REQUEST_URIは/sample/fooといった感じの値で、REQUEST_METHODは、getやpostになる。SampleControllerのfooを実行する場合はREQUEST_URI = /sample/fooで、REQUEST_METHOD = getになる。&lt;/p&gt; &lt;p&gt;環境変数は、ENV['環境変数名'] = 値の形でセットできる。&lt;/p&gt; &lt;p&gt;ということでRailsコンソールに以下のように打ち込む。&lt;/p&gt; &lt;p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:7370033c-b633-4fed-8ac8-f8085a914927" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;&amp;gt;&amp;gt; ENV['REQUEST_URI'] = '/sample/foo'
=&amp;gt; "/sample/foo"
&amp;gt;&amp;gt; ENV['REQUEST_METHOD'] = 'get'
=&amp;gt; "get"
&amp;gt;&amp;gt; Dispatcher.dispatch&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;(=&amp;gt; で始まる行は、Railsコンソールが出力してるものです。実際に打ち込むのは&amp;gt;&amp;gt;で始まる行）&lt;/p&gt;
&lt;p&gt;これを打ち込むと最後に以下のような出力が得られる。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:70e67e5c-c8af-40d5-a0a8-1be038de8d87" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;sample/foo
Content-Type: text/html; charset=utf-8
Set-Cookie: _controller_edu_session=BAh7BiIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNo%0ASGFzaHsABjoKQHVzZWR7AA%3D%3D--7824faf835e88677af7a3c87ee74b2899014c46d; path=/
Cache-Control: private, max-age=0, must-revalidate
Status: 200 OK
X-Runtime: 0.02360
ETag: "a59079edf6feb83129c2299a1c5e77b0"
Content-Length: 68

&amp;lt;h1&amp;gt;Sample#foo&amp;lt;/h1&amp;gt;
&amp;lt;p&amp;gt;Find me in app/views/sample/foo.html.erb&amp;lt;/p&amp;gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;これが、SampleControllerのfooアクションの結果のレスポンスになる。&lt;br&gt;ちょっとしたもので、動きを確認するなら、この方法もありかな。&lt;/p&gt;
&lt;p&gt;実際に自分で起動してみると何だかわかった気分になる不思議な感覚を得る効果もある。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/163701.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[C#]RubyのHashライクなIDictionary</title><link>http://blogs.wankuma.com/kazuki/archive/2008/12/14/163678.aspx</link><pubDate>Sun, 14 Dec 2008 13:55:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/12/14/163678.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/163678.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/12/14/163678.aspx#Feedback</comments><slash:comments>130</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/163678.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/163678.aspx</trackback:ping><description>&lt;p&gt;Rubyでは、メソッドの最後にHashを受け取るようにすると&lt;/p&gt; &lt;p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:95ea513e-1ab8-4e89-b789-b9516e4e4085" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;foo_method(:a =&amp;gt; "aaa", :b =&amp;gt; "bbb", :c =&amp;gt; "ccc")&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;のように呼び出すことが出来る。&lt;br&gt;名前付きパラメータがわりによく使われる。&lt;/p&gt;
&lt;p&gt;メソッドの受け取り側では&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:987d7b34-d31c-43e2-9256-c956ea81d9e2" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;def foo_method(hash)
  puts hash[:a]
  puts hash[:b]
  puts hash[:c]
end&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;のようにして値を取り出して使う。&lt;/p&gt;
&lt;p&gt;便利だな～と思ってたら、下のようなBlogを見つけた。&lt;br&gt;&lt;a href="http://www.paulstovell.com/blog/snippet-ruby-like-hashes-in-c"&gt;Snippet: Ruby-like Hashes in C#&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;このBlogのエントリによると、C#でも下のようなメソッドよびだしが出来ると…。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:4670d985-ab43-4733-8d06-453859619960" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="c#"&gt;FooMethod(a =&amp;gt; "aaa", b =&amp;gt; "bbb", c =&amp;gt; "ccc");&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;タネを明かすと、params Expression&amp;lt;Func&amp;lt;object, string&amp;gt;&amp;gt;[] parametersの形の引数を受け取ってて、メソッド側では、それをIDictionaryに変換してる。&lt;br&gt;なるほど、パラメータ名がキーになって、Func&amp;lt;object, string&amp;gt;の実行結果が値になるのか。&lt;br&gt;ためしに書いてみた。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:af1cb068-a03f-4453-b768-5f675d319fd8" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="c#"&gt;public static IDictionary&amp;lt;string, T&amp;gt; Convert&amp;lt;T&amp;gt;(Expression&amp;lt;Func&amp;lt;object, T&amp;gt;&amp;gt;[] expressions)
{
    IDictionary&amp;lt;string, T&amp;gt; result = new Dictionary&amp;lt;string, T&amp;gt;();
    foreach (Expression&amp;lt;Func&amp;lt;object, T&amp;gt;&amp;gt; ex in expressions)
    {
        result[ex.Parameters[0].Name] = ex.Compile()(null);
    }
    return result;
}
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;こんなメソッドを用意しておいて&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:141a0f63-1418-4cde-92a1-8662c6c05132" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="c#"&gt;public static void Print(params Expression&amp;lt;Func&amp;lt;object, string&amp;gt;&amp;gt;[] exs)
{
    var dict = Convert(exs);
    foreach (var key in dict.Keys)
    {
        Console.WriteLine(key + ": " + dict[key]);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;こんな風に呼び出すと&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:f0755ccd-d6e1-400e-a740-88fb3f2050a4" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="c#"&gt;Print(hoge =&amp;gt; "aaa", moge =&amp;gt; "fofofo", nanu =&amp;gt; "ままま");
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;こんな実行結果になる。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:b76d621a-bdbd-4c6d-8a8c-b26ca32f56cc" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;hoge: aaa
moge: fofofo
nanu: ままま&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;かっこいい！！でも、知らないと可読性低そう！！&lt;br&gt;C#言語って強力な言語なんだなぁと改めて思った今日この頃でした。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/163678.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[Ruby][NetBeans]Ruby on Railsのコントローラ入門 その２</title><link>http://blogs.wankuma.com/kazuki/archive/2008/12/13/163617.aspx</link><pubDate>Sat, 13 Dec 2008 20:08:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/12/13/163617.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/163617.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/12/13/163617.aspx#Feedback</comments><slash:comments>145</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/163617.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/163617.aspx</trackback:ping><description>&lt;p&gt;&lt;a href="http://blogs.wankuma.com/kazuki/archive/2008/12/13/163615.aspx"&gt;その１&lt;/a&gt;の続きです。&lt;/p&gt; &lt;p&gt;その１で、ジェネレータを作ってコントローラを作って動くことを確認した。&lt;br&gt;今回は、これが実際にどう動いているのかを勉強していこうと思う。&lt;/p&gt; &lt;p&gt;Ruby on Railsのデフォルトの動作は以下のような感じになってる。&lt;/p&gt; &lt;ol&gt; &lt;li&gt;URLからコントローラ・アクションを特定する。&lt;br&gt;JRuby on RailsでGlassFish v3上で動かした場合は下のようなURLになる。&lt;br&gt;&lt;a href="http://domain/context"&gt;http://domain/context&lt;/a&gt;名/コントローラ名/アクション名&lt;br&gt;たとえば、&lt;a href="http://domain/context"&gt;http://domain/context&lt;/a&gt;名/sample/fooだと、SampleControllerのfooが呼び出される。&lt;/li&gt; &lt;li&gt;１で決めたコントローラの処理が呼び出されたら、デフォルトでapp/view/コントローラ名/アクション名.html.erbというファイルを使ってレンダリングが行われる。&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;非常にシンプルなルールになっていてわかりやすい。&lt;br&gt;本当に、そう動いているのかを確認するために、SampleControllerに１つメソッドを追加してみようと思う。&lt;br&gt;追加するメソッド名は何でもいいので、今回はhogeを追加してみた。&lt;br&gt;hogeの中の処理が実行されたことを確認するためのputs "sample/hoge"を書いている。&lt;/p&gt; &lt;p&gt;ログにこのメッセージが出れば処理されているという目印になる。&lt;/p&gt; &lt;p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:957d7e37-ad99-4762-b5eb-9939aaf75e0e" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;class SampleController &amp;lt; ApplicationController
  def foo
  end

  # http://localhost:8080/controller_edu/sample/hoge でアクセスできる
  def hoge
    puts "sample/hoge"
  end
end
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;さっきの処理の流れだと、app/view/sample/hoge.html.erbを用意しないといけないが、とりあえずこれで動かしてみてどうなるか確認してみようと思う。&lt;/p&gt;
&lt;p&gt;因みに、下の画面はhogeメソッドを追加するまえに&lt;a href="http://localhost:8080/controller_edu/sample/hoge"&gt;http://localhost:8080/controller_edu/sample/hoge&lt;/a&gt;にアクセスした場合の画面になる。&lt;br&gt;要約すると、hogeなんてアクション無いよ！というエラーが出ている。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_11695/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="179" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_11695/image_thumb.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;hogeメソッドを追加すると、下のような画面になる。同じくエラー画面が表示されるが、メッセージが変わっている。&lt;br&gt;hoge.html.erbが無いといわれている。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_11695/image_3.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="144" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_11695/image_thumb_3.png" width="244" border="0"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;NetBeans 6.5の出力ウィンドウには、「情報: sample/hoge」と出力されていたのでhogeメソッドまでは実行されているのがわかる。&lt;br&gt;今度は、これにviewを用意して動きを確認する。&lt;/p&gt;
&lt;p&gt;viewを入れるフォルダは、app/view/sampleの下になる。論理プロジェクトビューだと、ビュー/sampleの下に作ればいい。&lt;br&gt;右クリックの新規作成から、hoge.html.erbを作成した以下のような内容を書いた。&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:07de9dbe-4fde-4227-8ae0-779775283c5a" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;これは、hogeです。&amp;lt;br/&amp;gt;
&amp;lt;%= Time.now  %&amp;gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt; ブラウザでF5を押し再読み込みをしてみよう。ちゃんと出来ていれば、「これは、hogeです。」と表示されるはずだ。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_11695/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="144" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_11695/image_thumb_4.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;これで、ものすごく簡単なWebアプリケーションなら作れてしまいそうな気になる。&lt;br&gt;だけど、１アクションごとに１画面を作らないといけないのか？という疑問が出てくる。&lt;/p&gt;
&lt;p&gt;Railsでは、デフォルトだとアクション名と等しいviewのファイルを使ってレンダリングを行うが、renderここの動きを変えることが出来る。&lt;br&gt;renderは、下のような形で使うことが出来る。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:bec6e4fe-c223-4e53-8d4c-018d154d0531" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;class SampleController &amp;lt; ApplicationController
  def foo
  end

  # http://localhost:8080/controller_edu/sample/hoge でアクセスできる
  def hoge
    puts "sample/hoge"
    # fooアクションのviewでレンダリングをして！
    render :action =&amp;gt; :foo
  end
end
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;これで、sample/hogeにアクセスすると、foo.html.erbの結果がレンダリングされて、以下のような実行結果になる。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_11695/image_5.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="144" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_11695/image_thumb_5.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;ここで気をつけて欲しいのは、render :action =&amp;gt; :fooとしてもfooメソッドの中は&lt;strong&gt;実行されない&lt;/strong&gt;ということだ。&lt;br&gt;あくまでviewファイルをfoo.html.erbにするというだけなので要注意。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;さらに、render以外にもredirect_toというメソッドもある。&lt;br&gt;これは、renderがviewだけを指定するのに対して、controllerとactionを指定できて、なおかつactionの処理も実行してくれるというすばらしい代物。controllerを省略すると、現在のコントローラと同じものを使う。&lt;br&gt;メソッドの名前通りこの機能はHTTPのリダイレクトを使っている。&lt;/p&gt;
&lt;p&gt;ということで早速実験。render :action =&amp;gt; :fooの部分をredirect_to :action =&amp;gt; :fooに変えて動きを見てみる。&lt;br&gt;ついでに、fooメソッドが実行されたかわかるように、標準出力への出力処理を追加した。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:4ec614d6-02f1-4487-b5a3-44b429d6f7d1" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;class SampleController &amp;lt; ApplicationController
  def foo
    # fooを取ったことを示すただのログ
    puts "sample/foo"
  end

  # http://localhost:8080/controller_edu/sample/hoge でアクセスできる
  def hoge
    puts "sample/hoge"
    # fooアクションのviewでレンダリングをして！
    # render(:action =&amp;gt; :foo)
    redirect_to :action =&amp;gt; :foo
  end
end
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;この状態で、&lt;a href="http://localhost:8080/controller_edu/sample/hoge"&gt;http://localhost:8080/controller_edu/sample/hoge&lt;/a&gt;にアクセスすると結果として、fooのテンプレートがレンダリングされ、標準出力には「sample/hoge」と「sample/foo」の両方が出力される。&lt;br&gt;ブラウザのURLもsample/hogeからsample/fooにリダイレクトされていることがわかる。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_11695/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="161" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_11695/image_thumb_6.png" width="244" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/163617.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[Ruby][NetBeans]Ruby on Railsのコントローラ入門 その１</title><link>http://blogs.wankuma.com/kazuki/archive/2008/12/13/163615.aspx</link><pubDate>Sat, 13 Dec 2008 19:20:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/12/13/163615.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/163615.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/12/13/163615.aspx#Feedback</comments><slash:comments>303</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/163615.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/163615.aspx</trackback:ping><description>&lt;p&gt;Ruby on Railsでアプリを作るときに、ブラウザからのリクエストを受けて処理の流れを制御する人といったらコントローラ！&lt;br&gt;コントローラが無いと、処理が始まらない。&lt;/p&gt; &lt;p&gt;ということで、コントローラについて入門してみようと思う。今まではなんとなく使ってたからね…。&lt;/p&gt; &lt;h1&gt;プロジェクトの作成&lt;/h1&gt; &lt;p&gt;入門をするためのプロジェクトを１つ作成する。&lt;/p&gt; &lt;p&gt;まず、今回はDBを使わないけどDBのセットアップしとかないと、なかなかRailsがうまく動いてくれないのでJavaDBに適当なDBを１つ作る。&lt;br&gt;まず、サーバーを起動する。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_EF5B/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="73" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_EF5B/image_thumb.png" width="244" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;そして、DBを作成する。DB名はcontroller_eduにしておいた。 ユーザ名とパスワードもcontroller_eduに設定した。ここらへんは適時変えてもらえればいいと思う。&lt;br&gt;本当はRailsだとdevelopmentとtestとproductionの3つのDBを作るのが一般的だけど、今回はDB使わないのでとりあえず１つだけ作ってそれを使うことにする。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_EF5B/image_3.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="123" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_EF5B/image_thumb_3.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_EF5B/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="101" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_EF5B/image_thumb_4.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;DBの準備が出来たので、NetBeans 6.5からRuby on Railsアプリケーションを新規作成する。名前は「controller_edu」にした。DBは使わないけど、さっき作ったcontroller_eduデータベースを開発、テスト、運用に設定する。JDBCを使用してテーブルにアクセスするもチェックしておいた。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_EF5B/image_5.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="168" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_EF5B/image_thumb_5.png" width="244" border="0"&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;プロジェクトの作成が終わったのでとりあえず、コントローラを作成する。コントローラを作成するには、プロジェクトビューのコントローラで右クリックして生成...を選択することで出来る。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_EF5B/image_6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="62" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_EF5B/image_thumb_6.png" width="244" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;とりあえず、名前にsample、ビューにfooと入力してコントローラを作成する。&lt;br&gt;ここで入力した名前のコントローラが作成される。そして、ビューに指定したアクション（メソッド）も同時に作成される。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_EF5B/image_7.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="103" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_EF5B/image_thumb_7.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;そうすると、出力ウィンドウに以下のメッセージが表示される。何が作られたか一目瞭然だ。&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:26a6b83f-f268-4210-a738-54c0efd5c17b" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;      exists  app/controllers/
      exists  app/helpers/
      create  app/views/sample
      exists  test/functional/
      create  app/controllers/sample_controller.rb
      create  test/functional/sample_controller_test.rb
      create  app/helpers/sample_helper.rb
      create  app/views/sample/foo.html.erb
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;今回の操作で作られたファイルは&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;sample_controller.rb 
&lt;li&gt;sample_controller_test.rb 
&lt;li&gt;sample_helper.rb 
&lt;li&gt;foo.html.erb&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;の4つのファイルになる。sample_controller.rbを開くと、fooメソッドのあるSampleControllerが作られているのがわかる。&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:9fe896f4-d487-4b5a-baeb-6089bcc60235" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;class SampleController &amp;lt; ApplicationController
  def foo
  end

end
&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;動きを確認&lt;/h1&gt;
&lt;p&gt;今作ったコントローラを動かしてみる。&lt;br&gt;F6を押してプロジェクトを実行すると、GlassFish v3が立ち上がって&lt;a href="http://localhost:8080/controller_edu/"&gt;http://localhost:8080/controller_edu/&lt;/a&gt;が表示される。&lt;/p&gt;
&lt;p&gt;Ruby on Railsのデフォルトでは、このURLの後にコントローラ名/アクション名と続けることで、特定のアクションの特定のメソッドを実行できる。&lt;br&gt;先ほどジェネレータでsampleコントローラのfooアクションを作ったので&lt;a href="http://localhost:8080/controller_edu/sample/foo"&gt;http://localhost:8080/controller_edu/sample/foo&lt;/a&gt;で実行できる。動かしてみよう。（DBが起動いていないとエラーになるのでDBが起動していない場合は起動しよう）&lt;br&gt;下のような画面が出ればコントローラが正しく動いている。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_EF5B/image_8.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="173" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansRubyonRails_EF5B/image_thumb_8.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;これで、コントローラを勉強するための下地が整った。次からは、このコントローラに手を入れたりして動きを見ていこうと思う。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/163615.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[NetBeans][Ruby]NetBeans 6.5のRubyのバグ</title><link>http://blogs.wankuma.com/kazuki/archive/2008/12/13/163603.aspx</link><pubDate>Sat, 13 Dec 2008 15:57:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/12/13/163603.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/163603.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/12/13/163603.aspx#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/163603.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/163603.aspx</trackback:ping><description>&lt;p&gt;まぁバグだろうなぁ～。&lt;br&gt;私は、Ruby on Railsのプロジェクトを論理プロジェクトビューで表示しないようにしている。&lt;br&gt;下の図のように設定画面でチェック外してやってます。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/NetBeansRubyNetBeans6.5Ruby_E051/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="83" alt="image" src="http://kazuki.wankuma.com/images/2008/NetBeansRubyNetBeans6.5Ruby_E051/image_thumb.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;こうすると、プロジェクトビューで、Ruby on Railsの生のフォルダ構成で作業が出来る。&lt;br&gt;個人的には、どっちでも慣れれば問題ないので、どっちでもいいっちゃいいんだけどなんとなく論理プロジェクトビューを使っていない。&lt;/p&gt; &lt;p&gt;ただ、たまに下のようになることがある。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/NetBeansRubyNetBeans6.5Ruby_E051/image_3.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="168" alt="image" src="http://kazuki.wankuma.com/images/2008/NetBeansRubyNetBeans6.5Ruby_E051/image_thumb_3.png" width="191" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;何ですかソースファイルって…&lt;br&gt;再現方法とかは不明です。同じ症状の人とかいたりするかなぁ？？&lt;/p&gt; &lt;p&gt;ということで、これからは、論理プロジェクトビューで作業をするようにします！&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/163603.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[Ruby][NetBeans]JRuby on RailsでOracle使ってみた</title><link>http://blogs.wankuma.com/kazuki/archive/2008/12/13/163575.aspx</link><pubDate>Sat, 13 Dec 2008 02:24:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/12/13/163575.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/163575.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/12/13/163575.aspx#Feedback</comments><slash:comments>233</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/163575.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/163575.aspx</trackback:ping><description>&lt;p&gt;先日VMの上のXPにOracle 10g R2のExpress Editionを入れた。&lt;br&gt;勤め先では、Oracleを使うことが多いので家で試せるのはとても助かる。&lt;/p&gt; &lt;p&gt;ということで、普通にOracleに繋いで実験するだけじゃぁつまらないので、NetBeans 6.5を使ってOracleに対してCRUDをやるWebアプリを作ってみようとおもう。使うテクノロジはJRuby on Rails！&lt;/p&gt; &lt;h1&gt;DB作成&lt;/h1&gt; &lt;p&gt;まずは、DBにユーザがいないと始まらない。&lt;/p&gt; &lt;p&gt;GUIからさくっと3ユーザを作成する。&lt;br&gt;ユーザは、oraora, oraora_test, oraora_developmentの3つを用意した。本番, テスト, 開発用のユーザになる。&lt;br&gt;パスワードは全員oraoraにしておいた。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="92" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb.png" width="406" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Oracleの入ったマシンでの作業は以上になる。VMWareのコンソールを閉じて、バックグラウンドで動いてもらっておこう。&lt;/p&gt; &lt;h1&gt;DBへの接続の作成&lt;/h1&gt; &lt;p&gt;OracleのExpress Editionのインストールフォルダの下の以下のフォルダにある、JDBCドライバを適当な場所にコピーしてNetBeansに登録しておく。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;JDBCドライバのある場所&lt;/strong&gt;&lt;br&gt;\ORACLEインストールフォルダ\app\oracle\product\10.2.0\server\jdbc&lt;/p&gt; &lt;p&gt;サービスウィンドウのデータベースの下のドライバノードで右クリックをして「新規ドライバ」からOracleのJDBCドライバを登録する。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_3.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="67" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb_3.png" width="231" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;私は、Oracle Thinという名前でドライバを登録した。登録が完了したら、右クリックメニューから接続をクリックする。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="173" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb_4.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;接続情報を入力する画面が出てくるので適切に入力する。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_5.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="156" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb_5.png" width="244" border="0"&gt;&lt;/a&gt;&amp;nbsp;&lt;br&gt;ここでは、DBサーバが192.168.1.50のIPだとして、先ほど作ったoraoraユーザでの接続の設定の画面になる。&lt;br&gt;スキーマの設定画面が出るが、とりあえずそのままでいいのでOKをする。&lt;/p&gt; &lt;p&gt;同じ要領で、oraora_testとoraora_developmentの接続も追加しておく。&lt;/p&gt; &lt;h1&gt;プロジェクトの作成&lt;/h1&gt; &lt;p&gt;次にRuby on Railsのプロジェクトを作成する。新規作成からRuby on Rails アプリケーションを選択して次へ&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="103" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb_6.png" width="226" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;oraoracrudという名前のプロジェクトにしてみた。Java使う人なので、war形式にまとめられると便利なので、一番下のRake ターゲットを追加してアプリケーションサーバーの配備(.war)をサポートにチェックを入れておいた。&lt;/p&gt; &lt;p&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_7.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="252" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb_7.png" width="504" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;DBの設定は、先ほど作成した３つのDBを選択する。一番下のJDBCを利用してデータベースにアクセスのチェックも忘れずに。&lt;/p&gt; &lt;p&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="391" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb_8.png" width="669" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;プロジェクト作成ウィザードの最後のページで、warableとかJRuby OpenSSLとかの更新が可能なので、インストールがすんでない人はすませておこう。&lt;br&gt;全部終わったら、完了ボタンを押せばOK！&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_9.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="243" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb_9.png" width="432" border="0"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;暫く待つとプロジェクトが作成される。プロジェクトのプロパティのJavaの部分に自動的にOracleのJDBCドライバが追加されているけど、とりあえず消す。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_10.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="63" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb_10.png" width="244" border="0"&gt;&lt;/a&gt;←こいつを消す&lt;/p&gt; &lt;p&gt;&lt;strong&gt;消すだけだと、ただの動かないものになってしまうので、かわりになる設定をやる。lib/java/jar/ojdbc14.jarにOracleのJDBCドライバのjarを置いた。&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_11.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="193" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb_11.png" width="224" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;次に、environment.rbのjdbc_adapterの後にたった1行のコードを追加すればOK&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:77456977-6c2b-4475-b688-d87c3640c2be" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;# Inserted by NetBeans Ruby support to support JRuby
if defined?(JRUBY_VERSION)
  require 'rubygems'
  gem 'activerecord-jdbc-adapter'
  require 'jdbc_adapter'
  # oracleのjdbcドライバをよみこむ
  require 'java/jar/ojdbc14.jar'
end
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;こういう風にしておくと、後でwarファイルにパッケージングするときに一緒にパッケージングするのが楽になる。&lt;br&gt;ここまでくれば後はすぐ終わる！&lt;/p&gt;
&lt;h1&gt;scaffoldの作成&lt;/h1&gt;
&lt;p&gt;CRUDといえばscaffoldなので、さくっと作ってみる。プロジェクトの右クリックメニューから生成を選択する。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_12.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="74" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb_12.png" width="244" border="0"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;ジェネレータにscaffoldを指定してモデル名をmessageにする。属性ペアは、text:stringだけのシンプルなものにした。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_13.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="112" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb_13.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;生成すると、migrateのファイルも一緒に作られるので、ついでにデータベースマイグレーションで現在のバージョンへマイグレーションする。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_14.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="130" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb_14.png" width="622" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;マイグレーションをすると、正しく設定できている場合は、以下のコードが出る。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:e93018fb-4664-4061-b125-1a168bbcd7ef" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="css"&gt;(in C:/Users/Kazuki/Documents/NetBeansProjects/oraoracrud)
== 20081211144514 CreateMessages: migrating ===================================
-- create_table(:messages)
   -&amp;gt; 0.0780s
   -&amp;gt; 0 rows
== 20081211144514 CreateMessages: migrated (0.0788s) ==========================

&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;そしたら、おもむろにF6で実行する。そうすると、Railsしている人にはおなじみの画面が出てくる。&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_15.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="172" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb_15.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;URLにmessagesをつけて再度ページを取得すると、一覧画面が表示される。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_16.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="199" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb_16.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;新規登録画面&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_17.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="199" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb_17.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;新規登録すると一覧に表示される&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_18.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="199" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb_18.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;こんな具合でJRuby on RailsでOracleに接続成功！！&lt;/p&gt;
&lt;h1&gt;war化&lt;/h1&gt;
&lt;p&gt;このアプリをwarに固めてみようと思う。warにしちゃえば、知らない人から見たら完全にJSP/Servletあたりで作られたアプリケーションだと思うからこっそり配備できるかも？&lt;/p&gt;
&lt;p&gt;war化するための設定を書くファイルをジェネレータで生成する。プロジェクトの右クリックメニューの生成からwarbleを選択して実行する。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_19.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="112" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb_19.png" width="244" border="0"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;実行するとconfig/warble.rbが生成される。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_20.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="188" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb_20.png" width="186" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;warble.rbは、コメントがたっぷり書いてある。これからコメントを省くとたったの4行になった。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:2843e372-a051-4d9f-b19f-3d10c6abadd5" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;Warbler::Config.new do |config|
  config.dirs = %w(app config lib log vendor tmp)
  config.gem_dependencies = true
end&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;このwarble.rbから、今回のアプリをwar化する上で重要そうな部分のコメントを抜粋してみた。&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:e8187729-1556-43af-9c47-bf27fba84e79" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;  # Additional Java .jar files to include.  Note that if .jar files are placed
  # in lib (and not otherwise excluded) then they need not be mentioned here.
  # JRuby and JRuby-Rack are pre-loaded in this list.  Be sure to include your
  # own versions if you directly set the value
  # config.java_libs += FileList["lib/java/*.jar"]

  # Gems to be included. You need to tell Warbler which gems your application needs
  # so that they can be packaged in the war file.
  # The Rails gems are included by default unless the vendor/rails directory is present.
  # config.gems += ["activerecord-jdbcmysql-adapter", "jruby-openssl"]
  # config.gems &amp;lt;&amp;lt; "tzinfo"

  # Value of RAILS_ENV for the webapp -- default as shown below
  # config.webxml.rails.env = ENV['RAILS_ENV'] || 'production'
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;まず、最初のコメントの塊だけど、これは、warに入れるjarファイルを指定する。&lt;br&gt;今回の場合は、ojdbc14.jarが必須なのでこれを追加する。これはlib/java/jarの下にあって、尚且つlibフォルダはRubyのロードパス？に入っているので、java/jar/*.jarを追加する。&lt;/p&gt;
&lt;p&gt;2つ目のコメントの塊は、依存しているgemを書くっぽい。&lt;br&gt;今回は、JDBCで繋ぐためにactiverecord-jdbc-adapterを使ってるので、それを書く。&lt;/p&gt;
&lt;p&gt;3つ目は、Rubyの実行環境をどれにするかということになる。&lt;br&gt;warにまとめて配備したあとは大体本番だと思うのでproductionにしておく。&lt;/p&gt;
&lt;p&gt;コードにすると、以下の3行が追加される感じになる。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:ea61df3d-f3c4-4705-90f0-3b92e50d151b" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;config.java_libs += FileList["java/jar/*.jar"]
config.gems &amp;lt;&amp;lt; "activerecord-jdbc-adapter"
config.webxml.rails.env = ENV['RAILS_ENV'] || 'production'&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;設定が終わったら、プロジェクトの右クリックメニューからRake タスクを実行/デバッグを選択して&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_21.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="81" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb_21.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;warのタスクを実行する。（フィルタにwarと入力するとタスクが絞り込まれるので便利）&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_22.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="189" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb_22.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;warを実行するとoraoracrud.warが作成される。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_23.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="116" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb_23.png" width="209" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;これをGlassFish v2に入れてみる。入れるのは簡単oraoracrud.warをGlassFishのdomains/domain1/autodeployにコピーしてasadminでアプリの開始を行う。&lt;/p&gt;
&lt;p&gt;コピーが終わったらGlassFish v2を起動する。これはasadmin start-domainでいっぱつ。&lt;br&gt;&lt;a title="http://localhost:8080/oraoracrud/messages" href="http://localhost:8080/oraoracrud/messages"&gt;http://localhost:8080/oraoracrud/messages&lt;/a&gt; を起動すると見事にエラーになったorz&lt;br&gt;どうやらProduction環境のDBの準備がまだ出来ていないっぽいです。&lt;/p&gt;
&lt;p&gt;これも、db:migrateにRAILS_ENVをつけてやれば大丈夫。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_24.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="117" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb_24.png" width="244" border="0"&gt;&lt;/a&gt;  &lt;/p&gt;
&lt;p&gt;無事テーブルが作られたので、おもむろに実行すると・・・&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_25.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="200" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb_25.png" width="244" border="0"&gt;&lt;/a&gt; &lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_26.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="200" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb_26.png" width="244" border="0"&gt;&lt;/a&gt; &lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_27.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="200" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb_27.png" width="244" border="0"&gt;&lt;/a&gt; &lt;a href="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_28.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="200" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyNetBeansJRubyonRailsOracle_14A38/image_thumb_28.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;ちゃんと実行された！！&lt;br&gt;めでたしめでたし。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/163575.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[JRuby][NetBeans]JavaのクラスをJRubyから使う</title><link>http://blogs.wankuma.com/kazuki/archive/2008/09/13/156481.aspx</link><pubDate>Sat, 13 Sep 2008 20:33:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/09/13/156481.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/156481.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/09/13/156481.aspx#Feedback</comments><slash:comments>229</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/156481.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/156481.aspx</trackback:ping><description>&lt;p&gt;NetBeans 6.5のbetaをほとんど使ってなかったので、使ってみた。何に使おうか悩んだんだけど、とりあえずJRubyをお試ししてみよう。ということでタイトルのJRubyでJavaのクラスを呼んでみるを試してみよう。&lt;/p&gt; &lt;p&gt;さて、呼ぶために必要な手順は２つだけだ。&lt;/p&gt; &lt;ol&gt; &lt;li&gt;require 'java'をする&lt;/li&gt; &lt;li&gt;include_class or include_packageをする&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;以上！簡単すぎる。ということでArrayListを使ってみた。&lt;/p&gt; &lt;p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:6d1f3522-5cd0-4d8a-bd6c-198a4e08d867" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;# 前準備
require 'java'
include_class('java.util.List')

# ArrayListのインスタンスを作ってaddメソッドを使ってみる
list = java.util.ArrayList.new
list.add("こんにちは")
list.add("世界")

# eachでくるくる回すことも出来るのね
list.each do |item|
  puts item
end&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;実行すると、普通に結果が出る。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;こんにちは&lt;br&gt;世界&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;これでSwingを使ったりとかもやりたい放題だ。ただ、これじゃあまり面白くないので外部のjarファイルに定義されているJavaのクラスを呼ぶ方法を試してみた。因みにCLASSPATHを通すことはしない！
&lt;p&gt;まず、Javaのクラスライブラリのプロジェクトを作る。クラスはお試しなので１つだけ。文字列を返すだけにした。
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:08e9a053-ec12-4645-98c5-5c7439ba0712" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="java"&gt;package com.wankuma.kazuki.jruby.sample;

public class Greeter {
    public String greet(String name) {
        return "こんにちは！" + name + "さん！";
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;これをビルドしてgreeter.jarを作成する。それを、JRubyのプロジェクトのlibフォルダ（ソースフォルダ）にコピーする。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/JRubyNetBeansJavaJRuby_120B4/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="93" alt="image" src="http://kazuki.wankuma.com/images/2008/JRubyNetBeansJavaJRuby_120B4/image_thumb.png" width="212" border="0"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;さて、このjarファイルの中にあるクラスを使うための手順は以下の３つになる。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;require 'java'をする&lt;/li&gt;
&lt;li&gt;requrie 'jarファイル名'をする&lt;/li&gt;
&lt;li&gt;include_class or include_packageをする&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;なんとjarファイルをそのままrequire出来ちゃう。素敵だ。&lt;br&gt;ということでやってみた。&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:a01e0aa4-299f-4997-b338-ac7c3eacbabf" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;# 前準備
require 'java'
# jarファイルをrequireで読み込む
require 'greeter.jar'

# 後は普通に使えるようになる
include_class('com.wankuma.kazuki.jruby.sample.Greeter')
greeter = com.wankuma.kazuki.jruby.sample.Greeter.new
puts greeter.greet('田中　太郎')&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;実行してみると…&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;こんにちは！田中　太郎さん！&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;おお～ちゃんと使えてる。いいね。&lt;br&gt;POIとかも手軽に使えちゃいそう。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/156481.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[Ruby]9arrowsを入れてみたよ</title><link>http://blogs.wankuma.com/kazuki/archive/2008/09/11/156105.aspx</link><pubDate>Thu, 11 Sep 2008 00:51:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/09/11/156105.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/156105.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/09/11/156105.aspx#Feedback</comments><slash:comments>479</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/156105.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/156105.aspx</trackback:ping><description>&lt;a href="http://itpro.nikkeibp.co.jp/article/NEWS/20080724/311423/"&gt;RubyやAjax，AIRなど活用した国産タスク共有システム「9arrows」，オープンソースとして公開へ&lt;/a&gt; &lt;p&gt;↑で紹介されている奴をWindowsに入れてみた。ちょいと苦労したので、メモを残してみる。&lt;br&gt;まず、環境の設定から。&lt;/p&gt; &lt;h1&gt;PostgreSQLのインストール&lt;/h1&gt; &lt;p&gt;9arrowsは、Railsアプリケーションでは珍しく？PostgreSQLを使ってる。MySQLかと思ってたのに意外だった。&lt;br&gt;ということで、PostgreSQLをダウンロードしてインストールする。&lt;/p&gt; &lt;p&gt;バージョンは8.3.3を入れた。&lt;br&gt;2008/09/10時点で、最新のWindows版バイナリへのリンクがすべて404になってたのでびっくりした。どうもリンクは8.3.3-1へつながってるけど、本当のファイルは8.3.3-2になってるようだ。&lt;br&gt;ディレクトリリストを表示して、そこからダウンロードで事なきを得た。&lt;/p&gt; &lt;p&gt;インストール後は、PostgreSQLのインストールフォルダのbinへパスを通しておく。&lt;/p&gt; &lt;h1&gt;Rubyのインストール&lt;/h1&gt; &lt;p&gt;当然Rubyもインストールしないといけない。自分は、One-Click Ruby Installer for Windowsをいつも愛用してるのでインストールした。&lt;/p&gt; &lt;h1&gt;Railsのインストール&lt;/h1&gt; &lt;p&gt;Railsも当然入れないといけない。ただしバージョンは2.1とのこと。&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;gem install -v=2.1.0 rails&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;このコマンドでバージョン指定でさくっとインストール。&lt;/p&gt; &lt;h1&gt;ruby-postgresのインストール&lt;/h1&gt; &lt;p&gt;PostgreSQLに繋ぐので当然インストール。&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;gem install ruby-postgres&lt;/p&gt;&lt;/blockquote&gt; &lt;h1&gt;&lt;/h1&gt; &lt;h1&gt;9arrowsのダウンロード&lt;/h1&gt; &lt;p&gt;ついに9arrowsのダウンロードだけど、2008/09/10時点でダウンロードできるアーカイブは、不完全っぽい。&lt;br&gt;rake db:migrateしてもrake db:schema:loadしてもカラムの無いテーブルが作られるだけになってる。なので、Subversionのリポジトリからダウンロードする。&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;svn checkout http://9arrows.googlecode.com/svn/trunk/ 9arrows-read-only&lt;/p&gt;&lt;/blockquote&gt; &lt;h1&gt;設定～起動&lt;/h1&gt; &lt;p&gt;必要なものはインストールできたので、設定とかに入っていこうと思う。&lt;br&gt;まずはDBの準備から。DBは9arrows_development,9arrows_test,9arrows_productionがあれば良さそう。&lt;br&gt;とりあえず動かすだけならdevelopmentだけでも大丈夫かな。 &lt;p&gt;pgAdminからさくっと作った。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/Ruby9arrows_14B2C/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="88" alt="image" src="http://kazuki.wankuma.com/images/2008/Ruby9arrows_14B2C/image_thumb.png" width="217" border="0"&gt;&lt;/a&gt;  &lt;p&gt;database.ymlを開いて、ユーザ名とパスワードを自分のものに書き換える。 &lt;p&gt;rake db:schema:loadを叩くとDBが準備される！と思ったら下のようなエラーが出た。悲しい。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/Ruby9arrows_14B2C/image_3.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="100" alt="image" src="http://kazuki.wankuma.com/images/2008/Ruby9arrows_14B2C/image_thumb_3.png" width="244" border="0"&gt;&lt;/a&gt;&amp;nbsp;&lt;br&gt;下のサイトによると、PostgreSQLについてきてるdllをRubyについてきてるものと置き換えれば動くらしい。&lt;br&gt;&lt;a title="http://d.hatena.ne.jp/h4y/20080228/1204206048" href="http://d.hatena.ne.jp/h4y/20080228/1204206048"&gt;http://d.hatena.ne.jp/h4y/20080228/1204206048&lt;/a&gt;&lt;/p&gt; &lt;p&gt;ssleay32.dllとlibeai32.dllをRubyのbinへコピーして再度実行すると、今度は成功した。データもばっちり入っていた。&lt;br&gt;次にメールの設定。デフォだとsendmailの設定が有効になってるので、とりあえずenvironment.rbからコメントアウト。&lt;/p&gt; &lt;p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:ba80965c-6e2a-4e6e-97f5-0619c2c6d092" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;# Mailer option
# sendmail comment out!
=begin
ActionMailer::Base.delivery_method = :sendmail
ActionMailer::Base.raise_delivery_errors = true
ActionMailer::Base.smtp_settings = {
  :address =&amp;gt; "",
  :port    =&amp;gt; 25,
  :app_default_from =&amp;gt; ""
}
=end
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;メールサーバとか特に立てたりしてるわけでもないので、gmailを使うことにした。Gmail optionsという部分があるので、コメントを外してそれっぽい感じにしてみた。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:ba6b171d-ecbb-42ba-b0da-a3f9f5eb2be4" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="c"&gt;# Gmail options
require "smtp_tls"
ActionMailer::Base.raise_delivery_errors = true
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
  :address        =&amp;gt; "smtp.gmail.com",
  :port           =&amp;gt; 587,
  :domain         =&amp;gt; 'gmail.com',
  :user_name      =&amp;gt; "k.ota.0130@gmail.com",
  :password       =&amp;gt; "ぱすわぁど",
  :authentication =&amp;gt; :plain
}
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;これで必要な設定は一通り終わったはずだ。ということなので早速実行！&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;ruby script\server&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;を実行すると、さくっと動くはず。ブラウザで&lt;a href="http://localhost:3000にアクセスすると&amp;hellip; "&gt;http://localhost:3000にアクセスすると…&lt;br&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="216" alt="image" src="http://kazuki.wankuma.com/images/2008/Ruby9arrows_14B2C/image_thumb_4.png" width="244" border="0"&gt; &lt;/a&gt;&lt;br&gt;動いた！！デフォルトユーザでユーザ名ninearrows、パスワードninearrowsが定義されてるらしいのでログインしてみた。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/Ruby9arrows_14B2C/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="230" alt="image" src="http://kazuki.wankuma.com/images/2008/Ruby9arrows_14B2C/image_thumb_5.png" width="244" border="0"&gt;&lt;/a&gt; &lt;br&gt;プロジェクト作成画面まできた。大丈夫っぽい。最後に自分のアカウントを作ってみようと思う。ログイン画面に戻って、新規ユーザ登録を行う。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/Ruby9arrows_14B2C/image_5.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="230" alt="image" src="http://kazuki.wankuma.com/images/2008/Ruby9arrows_14B2C/image_thumb_6.png" width="244" border="0"&gt;&lt;/a&gt;&amp;nbsp;&lt;br&gt;エラー画面になったorz&lt;br&gt;どうも、主キーが重複してるらしい。DBに定義されているシーケンスを見ると全部１のままになっている。&lt;br&gt;DBにデータは何件か入っているはずなのにおかしい。rake db:schema:loadがそこまで面倒見てくれないということなのだろうか？&lt;br&gt;とりあえずシーケンスの現在値をすべて100に変えて再実行。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/Ruby9arrows_14B2C/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="230" alt="image" src="http://kazuki.wankuma.com/images/2008/Ruby9arrows_14B2C/image_thumb_7.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;今度はうまくいった！gmailからユーザ作りましたよメールもちゃんと来た。&lt;br&gt;&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/Ruby9arrows_14B2C/image_7.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="230" alt="image" src="http://kazuki.wankuma.com/images/2008/Ruby9arrows_14B2C/image_thumb_8.png" width="244" border="0"&gt;&lt;/a&gt;&amp;nbsp;&lt;br&gt;プロジェクトを作ってカレンダーを表示してみたところ。&lt;br&gt;とりあえずちゃんと動いてるっぽい。ちょっと個人でちょびちょび使ってみよう。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/156105.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>