かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

ついに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のほう


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