解説記事:Ruby on Rails

最終更新日:

Ruby on Rails についての簡単な紹介。


環境設定

Bitnami Redmine Stack (Windows)の場合

BitnamiをインストールしたフォルダをBITNAMI_HOMEとする。 RedmineのフォルダをREDMINE_HOMEとする。 (例えばRedmine Version 4.0.1-1をCドライブにインストールした場合、BITNAMI_HOME="C:\Bitnami"、REDMINE_HOME="C:\Bitnami\Redmine-4.0.1-1"となる)

アプリケーションのインストール

  1. %REDMINE_HOME%に移動する。
  2. use_redmine.batを実行する (環境変数がロードされる)
  3. 開かれたコマンドプロンプト上で、"> cd apps" とし、appsフォルダ(C:\Bitnami\Redmine-4.0.1-1\apps)に移動する
  4. "> rails new railbook -d mysql" とし、railbookアプリケーションを作成する

データベースの作成

  1. "> cd railbook" とし、フォルダを移動する
  2. "> rake db:create"、"> rails db" とし、DBを作成する(注意)
  3. "> cd C:\Bitnami\redmine-4.0.1-1\apps\railbook\config"とし、database.ymlを開く
  4. "password: "が空欄なので、設定する

注意:

  1. rails db:createによりDBに登録完了(railbook_developmentとrailbook_test)


コントローラの作成

hello コントローラの作成

  1. "> rails generate controller hello" でhelloという名前のコントローラーを作成する

hello コントローラの編集

  1. "C:\Bitnami\redmine-4.0.1-1\apps\railbook\app\controllers\hello_controller.rb" をエディタで編集する


            # coding: utf-8

            class HelloController < ApplicationController
                def index
                    render plain: 'こんにちは!'
                end
            end
        

ルーティングの設定

  1. "C:\Bitnami\redmine-4.0.1-1\apps\railbook\config\routes.rb" をエディタで編集する


            Rails.application.routes.draw do
              # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
              match ':controller(/:action(/:id))', via: [:get, :post, :patch]
            end
        

ページへのアクセス

  1. ブラウザで "http://localhost:3000/hello/index" にアクセスすると文字列が表示される

hello コントローラの削除

  1. "> rails destroy controller hello" でhelloという名前のコントローラーを削除する


ビューの作成

ビューの追加

  1. "C:\Bitnami\redmine-4.0.1-1\apps\railbook\app\controllers\hello_controller.rb" をエディタで編集する


            # coding: utf-8

            class HelloController < ApplicationController
                def index
                    render plain: 'こんにちは!'
                end
                def view
                    @msg = 'こんにちは!'
                end
            end
        

ページへのアクセス

  1. ブラウザで "http://localhost:3000/hello/view" にアクセスすると文字列が表示される

ビューの自動生成

  1. "> rails generate controller hello index show new"のようにするとindex, show, newのテンプレートが生成できる

ビュー(erb)のコメント

  • <%# xxx>
  • # xxx
  • <%
    =begin
    %>
    xxx
    <%
    =end
    %>
                        
  • <!-- xxx -->


モデルの作成

モデルの追加

  1. "> cd C:\Bitnami\redmine-4.0.1-1\apps\railbook"
  2. "> rails generate model book isbn:string title:string price:integer publish:string published:date cd:boolean"でモデル作成
  3. マイグレーションファイルにマイグレーションが記載されている(db/migrate/yyyymmddhhmmss_create_books.rb)
  4. "> rake db:migrate"でマイグレーションを実行する

id, created_at, updated_atはRailsが自動生成するフィールドなので使用しないようする

idはRails4ではintegertでシリアル番号だったが、Rails5ではbigintになりシリアル番号にならないことに注意

フィクスチャ(テストデータ)の準備

  1. "> cd C:\Bitnami\redmine-4.0.1-1\apps\railbook"
  2. "> rake db:fixtures:load FIXTURES=books"
  3. APP名/test/fixturesに*.ymlを置いておけば"rake db:fixtures:load"で良い)

データベースを初期状態に戻したい場合は:

  1. "> rake db:reset"で現在のテーブルレイアウトでデータベースを再作成し、
  2. "> rake db:fixture:load"でフィクスチャをロードする

一覧表示(list)

  1. "C:\Bitnami\redmine-4.0.1-1\apps\railbook\app\controllers\hello_controller.rb"をエディタで開く


            # coding: utf-8

            class HelloController < ApplicationController
                def index
                    render plain: 'こんにちは!'
                end
                def view
                    @msg = 'こんにちは!'
                end
                def list
                    @books = Book.all
                end
            end
        

Rails 4ではrender plainの代わりにrender textを使う

  1. "C:\Bitnami\redmine-4.0.1-1\apps\railbook\app\views\hello\list.html.erb"を作成し、エディタで開く

            <table border="1">
                <tr>
                    <th>ISBNコード</th>
                    <th>書名</th>
                    <th>価格</th>
                    <th>出版社</th>
                    <th>刊行日</th>
                    <th>CD-ROM</th>
                </tr>

            <% @books.each do |book| %>
                <tr>
                    <td><%= book.isbn %></td>
                    <td><%= book.title %></td>
                    <td><%= book.price %>円</td>
                    <td><%= book.publish %></td>
                    <td><%= book.published %></td>
                    <td><%= book.cd %></td>
                </tr>
            <% end %>
            </table>
        

  1. "> rails server"でサーバーを起動する
  2. ブラウザで "http://localhost:3000/hello/list" にアクセスするとテーブルが表示される

モデルの削除

  1. "> cd C:\Bitnami\redmine-4.0.1-1\apps\railbook"
  2. "> rails destroy model book" でbookモデルを削除する
  3. "> rake db:drop" でデータベースを削除する
  4. (database.ymlに登録されている全てのDBを削除する場合は、rake db:drop:all)


Scaffolding機能

  • Railsを使った基本的なCRUD(Create-Read-Update-Delete)実装

テーブル操作の関連ファイルをまとめて作成

  1. "> cd C:\Bitnami\redmine-4.0.1-1\apps\railbook"
  2. "> rails generate scaffold book isbn:string title:string price:integer publish:string published:date cd:boolean"でモデルと関連ファイルを自動生成
  3. "> rake db:migrate"でマイグレーションを実行する
  4. ブラウザで "http://localhost:3000/books" にアクセスするとトップページ(一覧=index)が表示される
  5. ブラウザで "http://localhost:3000/books.json" にアクセスするとJSON形式で一覧表示される
  6. ブラウザで "http://localhost:3000/books/show" にアクセス(もしくは一覧でshowをクリック)すると詳細情報が表示される
  7. ブラウザで "http://localhost:3000/books/show" にアクセス(もしくは一覧でshowをクリック)すると詳細情報が表示される

Viewヘルパー

  1. "link to"メソッドは、<a href="<%= url%>"><%= text %></a> を生成


参考資料

  • Ruby on Rails4 アプリケーションプログラミング(技術評論社)