かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

ついにRuby on Railsに!

ActiveRecordで軽く遊べるようになってきたので、次はWebアプリにチャレンジしてみようと思う。
ついにRailsと呼ばれるものに触れれる!!

DBは引き続きemployeesテーブルとdepartmentsテーブルをしようする
念のためDDLを示す。

create table departments (
  id serial primary key,
  name varchar(50)
);
create table employees (
  id serial primary key,
  name varchar(50),
  department_id int,
  constraint fk_departments 
    foreign key (department_id) references departments(id) 
);

DBの準備

とりあえずDBの準備だ。
適当にDBを起こして上記DDLを流し込んでテーブルを用意しておく。
ちょっとだけポイントなのは、データベースを3つ用意しておくってこと。
なんか、Railsはテスト用とか開発用とか色々DBを使い分けるらしい。

ってことでここでは、下の3種類のDBを作りました。

プロジェクトの作成

Railsでは、コマンドラインからプロジェクトをさくっと作れる
やり方は簡単、下のコマンドをうつだけ。

rails プロジェクト名

これでダダダーっとファイルやフォルダを作ってくれる。
今回は、employee_managementって名前でプロジェクトを作った。
プロジェクトを作ったときに出たログは下のような感じ

PS D:\dev\Ruby> rails employee_management
      create
      create  app/controllers
      create  app/helpers
      create  app/models
      create  app/views/layouts
      create  config/environments
      create  components
      create  db
      create  doc
      create  lib
      create  lib/tasks
      create  log
      create  public/images
      create  public/javascripts
      create  public/stylesheets
      create  script/performance
      create  script/process
      create  test/fixtures
      create  test/functional
      create  test/integration
      create  test/mocks/development
      create  test/mocks/test
      create  test/unit
      create  vendor
      create  vendor/plugins
      create  tmp/sessions
      create  tmp/sockets
      create  tmp/cache
      create  tmp/pids
      create  Rakefile
      create  README
      create  app/controllers/application.rb
      create  app/helpers/application_helper.rb
      create  test/test_helper.rb
      create  config/database.yml
      create  config/routes.rb
      create  public/.htaccess
      create  config/boot.rb
      create  config/environment.rb
      create  config/environments/production.rb
      create  config/environments/development.rb
      create  config/environments/test.rb
      create  script/about
      create  script/breakpointer
      create  script/console
      create  script/destroy
      create  script/generate
      create  script/performance/benchmarker
      create  script/performance/profiler
      create  script/process/reaper
      create  script/process/spawner
      create  script/process/inspector
      create  script/runner
      create  script/server
      create  script/plugin
      create  public/dispatch.rb
      create  public/dispatch.cgi
      create  public/dispatch.fcgi
      create  public/404.html
      create  public/500.html
      create  public/index.html
      create  public/favicon.ico
      create  public/robots.txt
      create  public/images/rails.png
      create  public/javascripts/prototype.js
      create  public/javascripts/effects.js
      create  public/javascripts/dragdrop.js
      create  public/javascripts/controls.js
      create  public/javascripts/application.js
      create  doc/README_FOR_APP
      create  log/server.log
      create  log/production.log
      create  log/development.log
      create  log/test.log

データベースの接続情報を書く

DBの接続先情報は、config/database.ymlに書いてあります。
でふぉだとMySQL用の設定が書いてある。

development:
  adapter: mysql
  database: employee_management_development
  username: root
  password:
  host: localhost

test:
  adapter: mysql
  database: employee_management_test
  username: root
  password:
  host: localhost

production:
  adapter: mysql
  database: employee_management_production
  username: root
  password: 
  host: localhost

一応今回は、ローカルのPostgreSQLにDBを切ったのでそのように設定を書き変える

development:
  adapter: postgresql
  database: rails_development
  username: postgres
  password: postgres
  host: localhost

test:
  adapter: postgresql
  database: rails_test
  username: postgres
  password: postgres
  host: localhost

production:
  adapter: postgresql
  database: rails_production
  username: postgres
  password: postgres
  host: localhost

足場を作る

さて、今日はここまでやったら寝よう。
Railsのデモやウリということで、足場となるscaffoldを作ってみようと思う。
作るといってもたいしたことはしない。
コマンドを打つだけ。
プロジェクトのフォルダの一番上で下のようなコマンドをうつと、雛形を作ってくれる。

ruby script/generate scaffold モデル名 コントローラ名 アクション名1 アクション名2 ...

ちなみに必須なのはモデル名だけで、ほかは何も指定しなくてもデフォルトの値が設定さえっる。
デフォルトの値は下のとおり

  • コントローラ名:モデル名の複数形
  • アクション名:とりあえず全部

ってことでここでは最低限の設定でemployeesテーブルとdepartmentsテーブルを編集するものを自動生成する。

ruby script/generate scaffold employee
ruby script/generate scaffold department

これで完成。

実行してみる

アプリケーションサーバを起動する。起動するには下のコマンドを打ち込めばOK

ruby script/server

なにやら起動するので、http://localhost:3000/employeeshttp://localhost:3000/departmentsを表示してみよう。
下のような画面ができているはずです。
departmentsのほう

employeesのほう


自動生成されたファイルを見てると勉強になる。
でも、それについてはまた今度。