Archive for January, 2008
Let’s Try Rails 2.0.2 with NetBeans 6.1 and JRuby1.1RC1
NetBeans 6.1のnightly build版を使って、Rails 2.0.2を動かしてみました。”Hello World’を動かせるところまでやってくるのに必要だったセットアップなどをメモしておこうと思います。
- NetBeans 6.1をインストールする
- http://bits.netbeans.org/download/trunk/nightly/latest/からNetBeans 6.1をダウンロードしてインストールします。私が試したのは2008年1月9日版の全てのパッケージがそろっているAllです。
- http://bits.netbeans.org/download/trunk/nightly/latest/からNetBeans 6.1をダウンロードしてインストールします。私が試したのは2008年1月9日版の全てのパッケージがそろっているAllです。
- JRuby1.1RC1を使えるようにする
- NetBeans 6.1についてくるのはJRuby 1.0.3なので、JRuby 1.1RC1を使えるようにします。
http://dist.codehaus.org/jruby/からJRuby 1.1RC1をダウンロードして適当なディレクトリに展開します。私の場合、/home/yoko/toolsに展開したので、ここにjruby-1.1rc1というディレクトリが作られました。各種JARアーカイブやgemなどは /home/yoko/tools/jruby-1.1rc1というディレクトリ以下にあります。
NetBeans 6.1にはRuby Platoform Managerが追加されたので、これを使ってJRuby 1.1RC1を追加します。NetBeansのToolsから Ruby Platforms を選択するとこのようなウィンドウが開きます。
Add Platform…ボタンをクリックすると、ファイルを選択できるウィンドウが開くので、JRuby 1.1RC1のbinディレクトリにあるjruby(インタープリタ)を選択します。
すると、gemのディレクトリが自動的に設定されこのようなウィンドウが表示されます。
Platform nameとしてjruby(1.8.6)が自動的に設定されています。今後、この名前でJRuby 1.1RC1を参照するようになります。
- NetBeans 6.1についてくるのはJRuby 1.0.3なので、JRuby 1.1RC1を使えるようにします。
- 必要そうなGemをインストールする
-
JRuby 1.1RC1に最初から入っているgemはrake(0.8.1), rspec(1.1.1), sources(0.0.1)だけなので必要なgemを追加していきます。NetBeansのToolsからRuby Gemsを選択するとgem管理のウィンドウが開きます。Ruby Platformのところで、先ほど設定したjruby(1.8.6)を選ぶと、JRuby 1.1RC1用のGem Homeが自動的に設定されます。私の環境では/home/yoko/tools/jruby-1.1RC1/lib/ruby/gems/1.8です。
New Gemsのタブをクリックするとgemの一覧が表示されるので、インストールするgemを選択して、一覧の下にあるInstallボタンをクリックします。まずはrailsを選んでInstallボタンをクリックし、Latestバージョンと依存関係のInclude(ディフォルト)を指定してOKをクリックすると、このようなウィンドウが表示されrails関連gem一式がインストールされます。
他に、mongrel, ActiveRecord-JDBC, active-record-jdbc-adapterなどをインストールしました。 Installedのタブをクリックすると、このように表示されます。
-
JRuby 1.1RC1に最初から入っているgemはrake(0.8.1), rspec(1.1.1), sources(0.0.1)だけなので必要なgemを追加していきます。NetBeansのToolsからRuby Gemsを選択するとgem管理のウィンドウが開きます。Ruby Platformのところで、先ほど設定したjruby(1.8.6)を選ぶと、JRuby 1.1RC1用のGem Homeが自動的に設定されます。私の環境では/home/yoko/tools/jruby-1.1RC1/lib/ruby/gems/1.8です。
- Railsプロジェクトを作る
-
http://wiki.rubyonrails.org/rails/pages/Tutorialを参考にしてRailsを動かしてみます。まずはRailsプロジェクトを作ります。NetBeansでFile -> New Project… -> Ruby -> Ruby on Rails Application -> Nextとするとプロジェクト名などを指定するウィンドウが開きます。ここで、Project NameにMyProject, Access Database Using JDBCとAdd Rake Targets to Support App Server Development(.war)にチェックし、Ruby Platfromのところでjruby(1.8.6)を選択します。Warファイルを作るrakeというのはGoldspikeのことです。

Access Databaseにチェックしておくと、config/environment.rbにこのようなJDBCを利用する設定が自動的に追加されます。# Inserted by NetBeans Ruby support to support JRuby if RUBY_PLATFORM =~ /java/ require 'rubygems' gem 'ActiveRecord-JDBC' require 'jdbc_adapter' end
- データベースを設定する
-
Railsチュートリアルにはデータベース関係の設定には触れられていませんが、database.ymlとこれに対応したデータベースが無いとアプリケーションが動かないので、設定しておきます。まずは、database.ymlをこのように修正しました。
development: adapter: mysql encoding: utf8 database: MyProject_development username: foo password: bar # JRuby doesn't support socket: host: localhost #socket: /var/run/mysqld/mysqld.sock test: adapter: mysql encoding: utf8 database: MyProject_test username: foo password: bar socket: /var/run/mysqld/mysqld.sock production: adapter: mysql encoding: utf8 database: MyProject_production username: foo password: bar socket: /var/run/mysqld/mysqld.sock
MySQLにデータベースを作れる権限があるユーザ名、パスワードをdatabase.ymlに書き込んでおくとrake db:create(NetBeansでは MyProjectを選択して右クリック -> Run Rake Task -> db -> create)で作れるのですが、今回はデータベース作成は手で行いました。
yoko@alcyone:~$ mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 809 to server version: 5.0.24a-Debian_9ubuntu2.2-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> create database MyProject_development default character set utf8; Query OK, 1 row affected (0.00 sec) mysql> create database MyProject_test default character set utf8; Query OK, 1 row affected (0.00 sec) mysql> create database MyProject_production default character set utf8; Query OK, 1 row affected (0.00 sec) mysql> grant all on MyProject_development.* to foo@localhost identified by 'bar'; Query OK, 0 rows affected (0.04 sec) mysql> grant all on MyProject_test.* to foo@localhost identified by 'bar'; Query OK, 0 rows affected (0.00 sec) mysql> grant all on MyProject_production.* to foo@localhost identified by 'bar'; Query OK, 0 rows affected (0.00 sec) mysql> quit Bye
-
Railsチュートリアルにはデータベース関係の設定には触れられていませんが、database.ymlとこれに対応したデータベースが無いとアプリケーションが動かないので、設定しておきます。まずは、database.ymlをこのように修正しました。
- コントローラを自動生成させる
-
MyProjectのコントローラを作ります。以前は、コントローラの名前を指定するだけで自動生成させてコントローラ名_controller.rbの中で scaffoldと指定していたのですが、Rails 2.0.2にはこのscaffoldメソッドがありません。代わりにcontrollerを生成するときに、viewを指定するようになったようです。
コントローラを作るにはNetBeansでMyProject選択、右クリック -> Generate… とすると、コード自動生成のためのウィンドウが開くので、Generateでcontrollerを選択して、Nameにhello, Viewsにindexと入力し、OKをクリックします。
すると、いくつかのファイルが生成されますが、hello_controller.rbはこのようなコードになっています。
class HelloController < ApplicationController def index end end
-
MyProjectのコントローラを作ります。以前は、コントローラの名前を指定するだけで自動生成させてコントローラ名_controller.rbの中で scaffoldと指定していたのですが、Rails 2.0.2にはこのscaffoldメソッドがありません。代わりにcontrollerを生成するときに、viewを指定するようになったようです。
- アプリケーションを実行する
-
アプリケーションを実行するにはNetBeansで MyProject選択、右クリック -> Runを選択します。Mongrelのgemをインストールしてあるので、何もしなくてもWEBrickに代わってMongrelが起動されます。NetBeansのOutputウィンドウに表示されるタブにはあいかわらずWEBrickとあるのですが、ログを見るとMongerlが動いていることがわかります。
=> Booting Mongrel (use 'script/server webrick' to force WEBrick) => Rails application starting on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server ** Starting Mongrel listening at 0.0.0.0:3000 ** Starting Rails with development environment... ** Rails loaded. ** Loading any Rails specific GemPlugins The signal USR1 is in use by the JVM and will not work correctly on this platform ** Signals ready. TERM => stop. USR2 => restart. INT => stop (no restart). ** Rails signals registered. HUP => reload (without restart). It might not work well. ** Mongrel 1.1.3 available at 0.0.0.0:3000 ** Use CTRL-C to stop.
NetBeansでのMongrelの使用についてはhttp://wiki.netbeans.org/wiki/view/FaqRailsMongrelを参考にしてください。
本来はこれで、ディフォルトのWebページがブラウザに表示されるところですが、上記のFAQにあるように、Mongrelの場合は自動的に表示されないので、http://localhost:3000/と手入力して表示させるしかありません。いずれ、このバグは修正されるはずです。
http://localhost:3000/helloをブラウザからリクエストしてみましょう。すると、ブラウザにはチュートリアルにあるとおり、このように表示されました。
-
アプリケーションを実行するにはNetBeansで MyProject選択、右クリック -> Runを選択します。Mongrelのgemをインストールしてあるので、何もしなくてもWEBrickに代わってMongrelが起動されます。NetBeansのOutputウィンドウに表示されるタブにはあいかわらずWEBrickとあるのですが、ログを見るとMongerlが動いていることがわかります。
- アプリケーションに修正を加える
-
チュートリアルにあるように修正してみます。NetBeansでMyProject以下にあるControllersを開いて、hello_controller.rb を選択して右クリック -> Openとすると、このファイルがエディタに表示されるので、このようにworldメソッドを追加しました。
class HelloController < ApplicationController def index end def world @greeting = "こんにちは世界" end end次にERBファイルを作ります。NetBeansでMyProject以下のViewsを開き、helloを選択して右クリック -> New -> ERB File...と進みます。ERBファイル作成のウィンドウが表示されるので、File Nameに world.htmlと入力してFinishをクリックします。
world.html.erbファイルがエディタに表示されるので、このようにコントローラで定義した変数を表示できるようにしました。<%# # To change this template, choose Tools | Templates # and open the template in the editor. %> <%= @greeting %>
-
チュートリアルにあるように修正してみます。NetBeansでMyProject以下にあるControllersを開いて、hello_controller.rb を選択して右クリック -> Openとすると、このファイルがエディタに表示されるので、このようにworldメソッドを追加しました。
- 修正したアプリケーションを実行する
以上で、NetBeans 6.1でRails 2.0.2の簡単なアプリケーションを動かせることが確認できました。
You are currently browsing the Servlet Garden blog archives for January, 2008.
