見出し画像

Ruby on Rails まとめ①

フレームワーク

Webアプリケーションを作成する際に用いられる枠組み。フレームワークでアプリケーションの雛形を作成し、必要なファイルをカスタマイズして、
アプリケーションを作成する。必要なファイルやデータの流れを既に一つのセットとして用意してくれているフレームワークを用いれば、素早く、
Webアプリケーションを開発できる。

フレームワークの種類

Ruby: Ruby on Rails(ルビーオンレイルズ)、Sinatra(シナトラ)
PHP:   Laravel(ララベル)、CakePHP(ケイクピーエイチピー)
Java:  Spring Framework(スプリングフレームワーク)

Ruby on Railsの特徴

RailsはRubyにおける最大シェアのフレームワーク。
コードの調査も非常に容易、記述量が短くシンプル、メンテナンスが容易。
処理速度は速くないため、大規模サービスには不向き。

・rails new コマンド
Railsで新規アプリケーション作成時に使用。

# オプションを付けてアプリケーションを作成
$ rails new アプリケーション名 -オプション名

・MySQL
データを保存するデータベースの一種。rails newコマンドに「-d mysql」
というオプションを付けて、「MySQL」というデータベースに最適化された設定でアプリケーションを生成。

ターミナル

# projectsディレクトリの作成
$ mkdir ~/projects

# projectsディレクトリに移動
$ cd ~/projects

# Railsのバージョン5.2.3を用いて、「アプリ名」を「-d」オプションでMySQLを指定して作成。
$ rails _5.2.3_ new アプリ名 -d mysql

# 作成したディレクトリに移動
$ cd アプリ名

# 現在のディレクトリのパスを表示
$ pwd

# 関連ファイルが読み込まれていることを確認する
$ bundle install

データベースを作成

・rails db:createコマンド
新しくデータベースを作成。database.ymlというファイルの内容に基づいてデータベースを新規作成するという機能。
・database.ymlファイル
database.ymlにはデータベースの設定を記述します。

config/database.yml を確認。

~省略〜

# 開発環境。通常、開発をする際に使用する。
development:
 <<: *default
 database: second_app_development

~省略~

# テスト環境。アプリケーションの動作をテストする際に使用する。
test:
 <<: *default
 database: second_app_test

~省略~

# 本番環境。アプリケーションを実際にリリースする際に使用する。
production:
 <<: *default
 database: second_app_production
 username: second_app
 password: <%= ENV['SECOND_APP_DATABASE_PASSWORD'] %>
ターミナル

# データベースの作成。開発環境用とテスト環境用のデータベースが作成される。
$ rails db:create

Sequel Pro(シークエル・プロ) 

データベースの中身をわかりやすく視覚化して表示するアプリ。
データベースをより簡単に管理できる。Sequel Proダウンロード。
Sequel Proをアプリケーションフォルダにドラッグ&ドロップ。
Sequel Proを起動後、接続をクリック。

画像1

左上の データベースを選択 をクリック。
作ったアプリ名を確認。

・rails s コマンド
アプリケーションのディレクトリで実行すると、サーバーが立ち上がる。
開発者がPC上でアプリを利用するためのもので、ローカルサーバーと呼ぶ。

ターミナル

# ローカルサーバーを起動
$ rails s

# ターミナルの表示一番下に Use Ctrl-C to stop が記述。
# サーバーを停止・終了させるコマンド。

ターミナル:command[⌘] + Tを同時押しで、新規タブを開く。
別タブでサーバーを起動しながらもう一つのタブでコマンドを実行できる。

・localhost:3000
localhostとは「自分のPC」。
開発中なので自分のPC内にサーバーを立ち上げている。
Google Chromeで開く。http://localhost:3000。下記で成功。

画像2

・MVC(エム・ブイ・シー)
モデル・ビュー・コントローラーの頭文字。
Webアプリケーションシステムの処理の流れの総称。

・ルーティング
リクエストの行き先を指定する「道しるべ」。
リクエストに対応した行き先を定義します。

トップページへのルーティングを作成

config/routes.rb

Rails.application.routes.draw do
 [HTTPメソッド] '[URIパターン]', to: '[コントローラー名]#[アクション名]'
end

・HTTPメソッド

GET      ページを表示する操作のみを行う時
POST   データを登録する操作をする時
PUT      データを変更する操作をする時
DELETE  データを削除する操作を行う時

・URIパターン
URLのようなもの。URL等の総称。

・コントローラー

ルーティングの次にやってくる処理。

・アクション
コントローラー内の、処理のカテゴリー。ルーティングは「何のリクエスト」=>「どのコントローラー・アクション」に繋げるのかを設定するもの。

config/routes.rb

# 下記に編集。URLは http://localhost:3000/posts になる。
# postsコントローラーのindexアクションへ。
Rails.application.routes.draw do
 get 'posts', to: 'posts#index'
end

・rails routes コマンド
アプリケーションのルーティングを確認できる。

ターミナル

# アプリのディレクトリにいることを確認
$ pwd

# ルーティングを確認
$ rails routes
rails routesの実行結果
Prefix    Verb    URI Pattern    Controller#Action
posts    GET /posts(.:format)       posts#index

アクセス

rails s でサーバを立ち上げ、 http://localhost:3000/posts にアクセス。
uninitialized constant PostsController  とエラーになる。
ルーティング後のコントローラーが設定されてないというエラー。

コントローラー設定

・7つのアクション
index   一覧表示ページを表示
new     新規投稿ページを表示
create    データの投稿を行う
show   個別詳細ページを表示
edit      投稿編集ページを表示
update   データの編集を行う
destroy  データの削除を行う

・rails g controller コマンド

# gは英語で生成するを意味するgenerate。
$ rails g controller コントローラー名
# コントローラーを作成。app/controllers/posts_controller.rbを確認。 
$ rails g controller posts

indexアクションを定義

app/controllers/posts_controller.rb を編集

class PostsController < ApplicationController

 def index  # indexアクションを定義
 end

end

再度  http://localhost:3000/posts   にアクセスするとビューファイルが無いエラー。ActionController::UnknownFormat in PostsController#index が出る

・ビュー
ビューはレスポンスとして返す見た目を設定する。コントローラーのアクションで処理された後に、対応するビューを探しレスポンスとして返す。

・ビューファイル
app/views/コントローラー名に、アクション名.html.erbのファイル名で作成

・○○.html.erb ファイル
HTMLの記述方法に加え、Rubyのコードを埋め込むことができるファイル。

コントローラーからビューファイルへデータを渡す仕組み

コントローラーで定義したインスタンス変数は、ビューファイルで使用できる。postsコントローラーのindexアクションでのインスタンス変数であれば、postsディレクトリのindex.html.erbでインスタンス変数を使用できる。

・ERBタグ
ERBファイルでRubyの記法を使用するためのタグ。 <%= %> で囲う。
画面上に非表示で良い記法(if文など)は、=を抜いて <% %> で囲う。

・モデル
データベースへアクセスをはじめとする情報のやりとりに関する処理を担当
テーブルの分だけ、モデルが存在します。

・テーブル
データベース内に作成される、表形式の収納場所。

・レコードとカラム
行はレコード、列はカラム

モデル作成

・rails g model コマンド

ターミナル

# モデルやそれに付随するファイルを一度に作成してくれる。
$ rails g model モデル名
$ rails g model post  # モデルを作成する

・マイグレーションファイル
テーブルの設計図・仕様書

・カラムの「型」
カラム名を指定し、どんなデータが入るのかを示す「型」も指定する。

         どのような型か       用途
integer      数字 金額、        回数など
string     文字(短文)        ユーザー名、メールアドレスなど
text      文字(長文)        投稿文など
boolean    真か偽か           はい・いいえの選択肢など
datetime     日付と時刻          作成日時、更新日時など

・rails db:migrate コマンド
マイグレーションファイルの記述内容を、データベースに適用するコマンド

ターミナル

# マイグレーションを実行する
$ rails db:migrate

Sequel Pro 内でpostsテーブルを作成できたかを確認。
マイグレーションファイルに記載した、contentカラムが追加されたか確認。
手動でデータの入力もできる。

テーブルからのデータ取得

・ActiveRecord クラス
all    テーブルの全てのデータを取得する
find    テーブルのレコードの内、ある1つのデータを取得する
new   クラスのインスタンス(レコード)を生成する
save   クラスのインスタンス(レコード)を保存する
create   テーブルにレコードを追加する
Post.all
# => Postモデル(postsテーブル)の全てのデータを取得

Post.find(2)
# => Postモデル(postsテーブル)の2番目のデータを取得

・rails c コマンド
実際に記載するメソッドを練習できる機能。rails cを起動すると、
コンソールで操作が可能になります。rails cのcはconsoleのc。
irbが起動して、Rubyのコードが書ける。
コンソール終了は、exitと入力してenter。

# コンソールの起動
$ rails c  

# Postモデルから全てのデータを取得
irb(main):001:0> Post.all

# Postモデルから1番目のデータを取得
irb(main):002:0> Post.find(1)

# 代入も可能。変数postに1番目のデータを代入
irb(main):003:0> post = Post.find(1)

# post実行で、代入したデータが表示
irb(main):003:0> post

# contentカラムのみを表示
irb(main):003:0> post.content
app/controllers/posts_controller.rb を編集。

class PostsController < ApplicationController
 def index
   @post = Post.find(1)  # 1番目のレコードを@postに代入
 end
end
app/views/posts/index.html.erb を編集。

# postテーブルの一番目のレコードのcontentカラムの値を表示する。
<h1>トップページ</h1>
<%= @post.content %>
app/controllers/posts_controller.rb を編集。

class PostsController < ApplicationController
 def index
   @posts = Post.all  # 全レコードを@postsに代入
 end
end
app/views/posts/index.html.erb

# postデーブルの全レコードからcontentカラムの値を順番に表示
<h1>トップページ</h1>
<% @posts.each do |post| %>
 <%= post.content %>
<% end %>


この記事が気に入ったらサポートをしてみませんか?