NetBeansで始めるFour Days on Rails

☆☆ アップデートしました。こちらhttp://www.servletgarden.com/blog/2007/08/20/four-days-on-rails-by-netbeans-day-1/をご覧ください。☆☆
"Four Days on Rails"(http://rails.homelinux.org/)のDay 1で紹介されているRuby on RailsアプリケーションをNetBeans 6.0M9とJRuby1.0で試してみました。DBはNetBeans付属のJava DB(Apache Derby)です。

  • 環境を整える
  • ToDoプロジェクトを作る
    • File -> New Project -> Ruby -> Ruby on Rails Application -> Project NameにToDOと入力 -> Next -> Install Rails(はじめてRails Applicationのプロジェクトを作るときだけ。以降はUpdate Railsボタンに変わる) -> Finish
  • データベース接続の設定を行う

RailsアプリケーションからJava DBに接続する方法はhttp://www.netbeans.org/kb/60/rapid-ruby-weblog.htmlにあるとおりです。

    • ToDoプロジェクトのConfiguration以下にあるdatabse.ymlを編集して、development:の部分を次のように変更する
development:
  adapter: jdbc
  driver: org.apache.derby.jdbc.ClientDriver
  url: jdbc:derby://localhost:1527/todos
  username: foo
  password: bar

http://www.servletgarden.com/images/SettingUp_Database.png

    • 同じくConfiguration以下にあるenvironment.rbを編集する。Rails::Initializer.run do |config|の行の上に次のようにアダプタの設定を追加する
if RUBY_PLATFORM =~ /java/
  require 'rubygems'
  RAILS_CONNECTION_ADAPTERS = %w(jdbc)
end
  • Java DBにtodosデータベースを作る
    • Tools -> Java DB Database -> Create Java DB Database... -> 以下のように入力 -> OK
Database Name: todos
User Name: foo
Password: bar

http://www.servletgarden.com/images/Creating_Database.png

  • データベースを接続する
    • Runtimeウィンドウへ移動 -> todosデータベース上で右クリック -> Connect...を選択(アイコンが接続状態に変わる)

http://www.servletgarden.com/images/Connecting_Database_todos_small.png

  • Category Modelを作る
    • Projectウィンドウへ移動 -> ToDoプロジェクトのModelsで右クリック -> Generate...を選択 -> ArgumentにCategoryと入力 -> OK

http://www.servletgarden.com/images/Creating_Category_Model.png

  • categoriesテーブルをtodosデータベースに作る
    • モデルを作ると001_create_categories.rbファイルが自動生成されるので、このファイルを編集する
class CreateCategories < ActiveRecord::Migration
  def self.up
    create_table :categories do |t|
      t.column :category, :string, :limit => 20, :default => '', :null => false
      t.column :created_on, :timestamp, :null => false
      t.column :updated_on, :timestamp, :null => false
    end
    add_index :categories, :category, :unique => true, :name => 'category_key'
  end

  def self.down
    drop_table :categories
  end
end
    • Projectsウィンドウへ移動 -> ToDoプロジェクトで右クリック -> Migrate Databaseを選択 -> To Current Versionを選択(成功するとテーブルができあがる。うまく作れない場合はNetBeansを再起動するか、http://www.netbeans.org/kb/60/rapid-ruby-weblog.htmlのヒントを参考にしてください)

http://www.servletgarden.com/images/Creating_Categories_Table.png

  • Script Contollerを作る
    • Projectウィンドウへ移動 -> ToDoプロジェクトのControllersで右クリック -> Generate...を選択 -> NameにScriptを入力、Viewは空欄 -> OK

http://www.servletgarden.com/images/Creating_Script_Controller.png

    • 自動生成されたscript_controller.rbを編集する
class ScriptController < ApplicationController
  scaffold :category
end
    • ToDoプロジェクトのConfiguration以下にあるroute.rbに次の一行を追加する。場所は最終行endの直前
map.connect '', :controller => "script"
  • アプリケーションを実行する
    • ToDopプロジェクトのPublic以下にあるindex.htmlを削除
    • ToDoプロジェクトで右クリック -> Run Projectを選択、あるいは、Run Main Projectボタンをクリック(ToDoプロジェクトが太字で表示されていればToDoはMainプロジェクト)
    • ブラウザ上に次のように表示される

http://www.servletgarden.com/images/First_view_of_categories.png

    • New CategoryのリンクをクリックしてCategoryにHome & Familyと入力してCreateボタンをクリックする

http://www.servletgarden.com/images/NewCategory_view.png

    • 入力したCategoryが表示される

http://www.servletgarden.com/images/After_submit_NewCategory.png

以上で、ほぼDay 1が終了です。DBのテーブルを作るところで手間取りましたが、NetBeansRuby Packをつかうと、他はかなり簡単にできあがりました。