Ruby on Rails プログラミング
フォルダ構成について
helloプロジェクトで作成されたフォルダ構成について
たくさんのファイルやフォルダができているが、
まず入門の段階でよく使うのは
主要なプログラムを配置してメインで使っていくappフォルダ、
設定を行うconfigフォルダ、
データベースの設定で使うdbフォルダの3つ
railsはMVCという構図を持つ設計を採用している
主要なプログラムを配置してメインで使っていくappフォルダの中身
- models = モデルに関するプログラムを格納するフォルダ
- views = viewを格納するフォルダ
- controlles = コントローラーを管理するフォルダ
- assets = 画像といった素材を配置する
- config = プロジェクトの設定ファイルを格納するフォルダ
(中でもroutes.rbファイルはよく使う、ルーティングを設定するファイル)
基本としてはdbとconfigの設定を行いつつ
appフォルダの中のmodels、viewsコントローラーを開発していくという流れ
はじめてのRuby on Railsプログラミングをしよう
helloプロジェクトを編集してHello Worldを書いてみる
ブラウザの画面にHello Worldと表示するプログラム
Hello Worldと表示するためにコントローラーとビューを使う
まずhelloプロジェクトがカレントディレクトリであることを確認!
コントローラーを作成するには、generateコマンドを使う
rails g contoroller Users index
- Users = コントローラーにつける名前
- index = 作成するメソッドの名前
g = generateの略
👇
作成されたファイルが表示される
必要なところを見ていく
appフォルダ
👇
controllersフォルダ配下に
userscontrollerが作成されている
class UsersController < ApplicationController
def index
end
end
UsersControllerクラスが自動で作成されている
ApplicationControllerを継承している
controllerクラスはApplicationControllerを継承する必要がある
controllerはApplicationに対する
特定のリクエストを受け取って処理する役割がある
indexメソッドはクライアントからのリクエストに対して
具体的な処理を実行するためのメソッド
次にviewsを見てみる
views
👇
usersフォルダの中にindex.html.erbファイルが作成されている
userscontrollerのindexメソッドと対なる
.erbというのはerbというテンプレートエンジンを使うときに
htmlファイルにつける拡張子
テンプレートエンジンを使うとhtmlの中に
rubyのプログラムを書くことができる
index.html.erbファイルはrubyコードを組み込めるhtmlファイルのようなものと考えればOK
テンプレートエンジンは他にもあるが
railsはerbを標準で利用
Embedded RuByの略
erbで書かれたrubyコードが含まれたhtmlファイルは
ユーザーに表示する前にrailsによって処理されて
最終的にhtmlとしてユーザーに表示される
デフォルトで記述されている部分は
全て削除して次のように記述!
<hi>Hello World!</hi>
これで実行
railsサーバーを立ち上げる
previw
↓
Preview Running Application
↓
Pop Out Into New Window
アドレス入力欄に
/users/index
をつける
Hello World! と表示されていればOK
/users/indexのURLでアクセスされたら、
UsersControllerのindexメソッドが呼ばれているのだが
その設定がどこで書かれているのかというと、、
configフォルダ
↓
routes.rbファイルに記載がある
routes.rbはルーティングファイルと呼ばれ
外部からのリクエストをどのようにコントローラーとメソッドに
振り分けるかを記述することができる
ルーティングファイルでは
URLとアクションを結びつける設定をする
アクションはルーティングによって指定するときの名前
アクションの指定によって実際に実行されるのは
controllerクラスに実装されたメソッドになる
Rails.application.routes.draw do
get 'users/index'
#Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html
#Defines the root path route ("/")
#root "articles#index"
end
get 'users/index'
は
rails g controller
をした時に自動で追加されたもの!
ちなみにこの記述は下記の省略形
get 'users/index', to: 'users#index'
ルーティングについてどのような設定なのか確認する
rails routes
ルーティングの設定が表示される
いま着目するのはこの部分
- Prefix = リンクを設置する際などにPWを指定する時に使う
- Verb = 日本語で動詞の意味、一般的にはHTTPメソッドやHTTPリクエストメソッドと呼ばれる
GET,POST,DELITEなどがある、ざっくりいうと実行したいアクションの種類のこと
GETならデータの取得、POSTならデータの送信、DELITEならデータの削除など - URI Pattern = URIはざっくりいうとURLのことで、Googleクロムのアドレス欄に入力するアドレス
- Controller#Action = コントローラー名#メソッド名を指している
具体例としては、users#indexというのは
usersコントローラーのindexメソッドを実行するには
/users/indexへアクセスすれば良いという意味なる
(.:formatの部分は必須ではないパラメーターなのでここでは無視してOK)
復習
/users/index
GETでアクセスが来たら
usersコントローラーのindexメソッドを実行する
アプリケーションのルートURLへアクセスがあった時に
helloコントローラーのindexアクションを表示するというのをやってみる
routes.rbに下記を記述
root 'users#index'
helloコントローラーのindexアクションを呼ぶ意味
railsサーバーを起動して
ルートのURLでアクセス
Hello World!と表示されていればOK
root 'users#index'の記述で
アプリケーションのルートのURLでアクセスされたら
usersコントローラーのindexメソッドに割り当てるよう
railsに指示する記述となる
今日はここまで!
明日からタスク管理アプリ作ってみる!
有給だからハローワークも行ってくる!
Discussion
What is MVC Pattern?
ex)
「MVCパターンは、アプリケーションを3つの異なるコンポーネント(モデル、ビュー、およびコントローラ)に分離するソフトウェア設計パターンです。 モデルはアプリケーションのデータとビジネスロジックを表し、ビューはユーザインターフェイスのレンダリングを担当し、コントローラはこれらの間の仲介者として機能 アプリケーションをこれらの3つのコンポーネントに分離することにより、MVCパターンはコードをよりモジュラ化、メンテナンス、およびテスト可能にするのに役立ちます。 また、開発者はアプリケーションのさまざまな部分を独立して作業でき、他の部分に影響を与えることはありません。」
この概要説明に加えて、より詳細な説明や、MVCパターンを自分の作業でどのように使用したかの例を示すように求められることがあります。 パターンの各コンポーネントをどのように実装し、それらがどのように連携して機能アプリケーションを作成しているかを説明する準備ができています。