最終更新日:
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"となる)
アプリケーションのインストール
- %REDMINE_HOME%に移動する。
- use_redmine.batを実行する (環境変数がロードされる)
- 開かれたコマンドプロンプト上で、"> cd apps" とし、appsフォルダ(C:\Bitnami\Redmine-4.0.1-1\apps)に移動する
- "> rails new railbook -d mysql" とし、railbookアプリケーションを作成する
データベースの作成
- "> cd railbook" とし、フォルダを移動する
- "> rake db:create"、"> rails db" とし、DBを作成する(注意)
- "> cd C:\Bitnami\redmine-4.0.1-1\apps\railbook\config"とし、database.ymlを開く
- "password: "が空欄なので、設定する
注意:
- rails db:createによりDBに登録完了(railbook_developmentとrailbook_test)
コントローラの作成
hello コントローラの作成
- "> rails generate controller hello" でhelloという名前のコントローラーを作成する
hello コントローラの編集
- "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
ルーティングの設定
- "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
ページへのアクセス
- ブラウザで "http://localhost:3000/hello/index" にアクセスすると文字列が表示される
hello コントローラの削除
- "> rails destroy controller hello" でhelloという名前のコントローラーを削除する
ビューの作成
ビューの追加
- "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
ページへのアクセス
- ブラウザで "http://localhost:3000/hello/view" にアクセスすると文字列が表示される
ビューの自動生成
- "> rails generate controller hello index show new"のようにするとindex, show, newのテンプレートが生成できる
ビュー(erb)のコメント
<%# xxx>
# xxx
-
<% =begin %> xxx <% =end %>
-
<!-- xxx -->
モデルの作成
モデルの追加
- "> cd C:\Bitnami\redmine-4.0.1-1\apps\railbook"
- "> rails generate model book isbn:string title:string price:integer publish:string published:date cd:boolean"でモデル作成
- マイグレーションファイルにマイグレーションが記載されている(db/migrate/yyyymmddhhmmss_create_books.rb)
- "> rake db:migrate"でマイグレーションを実行する
id, created_at, updated_atはRailsが自動生成するフィールドなので使用しないようする
idはRails4ではintegertでシリアル番号だったが、Rails5ではbigintになりシリアル番号にならないことに注意
フィクスチャ(テストデータ)の準備
- "> cd C:\Bitnami\redmine-4.0.1-1\apps\railbook"
- "> rake db:fixtures:load FIXTURES=books"
- APP名/test/fixturesに*.ymlを置いておけば"rake db:fixtures:load"で良い)
データベースを初期状態に戻したい場合は:
- "> rake db:reset"で現在のテーブルレイアウトでデータベースを再作成し、
- "> rake db:fixture:load"でフィクスチャをロードする
一覧表示(list)
- "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を使う
- "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>
- "> rails server"でサーバーを起動する
- ブラウザで "http://localhost:3000/hello/list" にアクセスするとテーブルが表示される
モデルの削除
- "> cd C:\Bitnami\redmine-4.0.1-1\apps\railbook"
- "> rails destroy model book" でbookモデルを削除する
- "> rake db:drop" でデータベースを削除する
- (database.ymlに登録されている全てのDBを削除する場合は、rake db:drop:all)
Scaffolding機能
- Railsを使った基本的なCRUD(Create-Read-Update-Delete)実装
テーブル操作の関連ファイルをまとめて作成
- "> cd C:\Bitnami\redmine-4.0.1-1\apps\railbook"
- "> rails generate scaffold book isbn:string title:string price:integer publish:string published:date cd:boolean"でモデルと関連ファイルを自動生成
- "> rake db:migrate"でマイグレーションを実行する
- ブラウザで "http://localhost:3000/books" にアクセスするとトップページ(一覧=index)が表示される
- ブラウザで "http://localhost:3000/books.json" にアクセスするとJSON形式で一覧表示される
- ブラウザで "http://localhost:3000/books/show" にアクセス(もしくは一覧でshowをクリック)すると詳細情報が表示される
- ブラウザで "http://localhost:3000/books/show" にアクセス(もしくは一覧でshowをクリック)すると詳細情報が表示される
Viewヘルパー
- "link to"メソッドは、<a href="<%= url%>"><%= text %></a> を生成
参考資料
- Ruby on Rails4 アプリケーションプログラミング(技術評論社)