AWSサーバー 〜EC2インスタンス ssh -i ~コマンド

ssh接続コマンドをメモ

ログイン

< ターミナルでの操作 >

.sshというディレクトリを作成

% mkdir ~/.ssh

mvコマンドで、ダウンロードしたpemファイルを、ダウンロードディレクトリから、.sshディレクトリに移動。

% mv Downloads/ダウンロードした鍵の名前.pem .ssh/

.sshに移動

% cd .ssh/
% chmod 600 ダウンロードした鍵の名前.pem
% ssh -i ダウンロードした鍵の名前.pem ec2-user@作成したEC2インスタンスに紐付けたElastic IP

以下のメッセージが表示されたら

% ssh -i aws_key.pem ec2-user@52.68.~~~~~~
The authenticity of host '52.68.~~~~~~ (52.68.~~~~~~)' can't be established.
RSA key fingerprint is eb:7a:bd:e6:aa:da:~~~~~~~~~~~~~~~~~~~~~~~~.
Are you sure you want to continue connecting (yes/no)? 

「yes」を入力し、実行する

f:id:satoshi_hatta:20210508192518p:plain このようになれば成功

ツールのインストール

パッケージをアップデート

$ sudo yum -y update

環境構築に必要なパッケージをインストール

$ sudo yum  -y install git make gcc-c++ patch libyaml-devel libffi-devel libicu-devel zlib-devel readline-devel libxml2-devel libxslt-devel ImageMagick ImageMagick-devel openssl-devel libcurl libcurl-devel curl

Node.jsをインストール

$ sudo curl -sL https://rpm.nodesource.com/setup_10.x | sudo bash -
$ sudo yum -y install nodejs

Yarnをインストール

$ sudo yum -y install wget
$ sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
$ sudo yum -y install yarn

rbenvとruby-buildをインストール ①rbenvのインストール

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

②パスを通す

$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile

③rbenvを呼び出すための記述

$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

④.bash_profileの読み込み

$ source .bash_profile

ruby-buildのインストール

$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

⑥rehashを行う

$ rbenv rehash 

Rubyをインストール Ruby 2.6.5のバージョンをインストール

$ rbenv install 2.6.5

EC2インスタンス内で使用するRubyのバージョンを決める

$ rbenv global 2.6.5

rehashを行う

$ rbenv rehash  

Rubyのバージョンを確認

$ ruby -v 

データベース

MariaDBをインストール

$ sudo yum -y install  mariadb-server mysql-devel

systemctlコマンド

$ sudo systemctl start mariadb

Amazon LinuxCentOSに含まれているもので、インストールしたソフトウェアの起動を一括して行えるツール

起動確認

$ sudo systemctl status mariadb

active (running) 」と緑色の表示がされれば、データベースの起動は成功です。

< パスワード設定 >

$ sudo /usr/bin/mysql_secure_installation

① Enter current password for root (enter for none): 」と表示されたらEnterキーを押す ② 「Set root password? [Y/n]」と表示されたら「Y」を入力してEnterキーを押す ③ 「New password:」と表示されたら自身で決めたパスワードを入力(画面にはなにも表示されません) ④ 「Re-enter new password:」と表示されたら、同じパスワードを入力 ここで「... Success!」と表示されればパスワードの設定は完了です。

< 設定の手順 > ① 「Remove anonymous users? [Y/n]」と表示されたら「Y」を入力してEnterキーを押す ② 「Disallow root login remotely? [Y/n]」と表示されたら「Y」を入力してEnterキーを押す ③ 「Remove test database and access to it? [Y/n]」と表示されたら「Y」を入力してEnterキーを押す ④ 「Reload privilege tables now? [Y/n]」と表示されたら「Y」を入力してEnterキーを押す プロンプトが表示されたら設定は完了です。

確認

$ mysql -u root -p

Enter password:」とパスワードを入力するように表示されるので、さきほど設定したパスワードを入力して、Enterキーを押します。 「exit」で抜けれます。

HTML/CSSの基本

普段見ているWebページってどうやって作るのか気になったことはないですか?
私が以前働いていたカフェで、お店のホームページを月額いくらかで作ってもらうって
ことがありました。数万円してたような…

あのとき、HTML/CSSの知識が少しでもあればな…と思います。

そんな過去の自分にむけて、現在学んだHTML/CSSの基礎をまとめてみました。

HTMLを学ぼう

Webページを構成しているプログラミング言語がHTML/CSSです。
正確にはマークアップ言語と呼ばれます。
HTMLで文字情報を書いて、CSSによってHTMLを装飾していきます。

どうやって書くのかというと、テキストエディタを使います。
色々あるようですが、私はVSCodeを使用しています。

実際に書いたのがこちらです。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>HTML/CSSの練習</title>
    <link rel="stylesheet" href="style.css">
  </head>
  <body>
    <h1>
      これは<span class="blue">見出し</span>です
    </h1>
    <p>
      1つ目の段落です
    </p>
    <p class="second-message">
      2つ目の段落です
    </p>
    <p>
      3つ目の段落です。<b>この部分は太字になります。</b>
    </p>
    <a href="https://www.google.com/">クリックすると、Googleへ移動します。</a>
  </body>
</html>

これは基本の構成です。

<!DOCTYPE HTML> → HTMLですよという宣言

<html> → HTML文章の始まり

<head> → 基本情報などを書くところ

<meta> → 文字コードの指定(charset←属性 = ”UTF-8”←属性値)

<title> → ブラウザのタブに表示するタイトル

</head>→ <head>の終わり

<body> → ブラウザ上に表示させる情報

</body>→ <body>の終わり

</html> →HTML文章の終わり

となります。

これをWebサイトで表示させると

HTMLをWebで表示

まだHTMLだけなので、このように文字だけが表示されます。

基本構成であった、<html>や<body>、<h1>がタグと呼ばれるもので開始タグと終了タグ
の間に文字情報などを書いていきます。
<meta>や<link>のタグのように終了タグが無いものもあります。
そのタグに囲まれている文字などを要素といいます。

基本的なタグ種類

改行<br>
段落<p>・・・</p>
見出し<h1>・・・</h1> 1〜6まである
太字<b>・・・</b>
画像<img src="画像ファイル名">
リンク<a href="ファイル名">・・・</a>
箇条書き<ul>
 <li>1番目〇〇
 <li>2番目〇〇
</ul

ほんの一部です。
プログラミングは調べればすぐわかるので、暗記する必要はないです。
なんかあったな〜くらいでおkなんです。

便利な機能として、コメントアウトというものがあります。
<!ーーとーー>で囲めば使えます。
メモや、他人が見たときに何を意図しているのかわかりやすくしたり、
一時的に消したい場合なんかに使えます

CSSを学ぼう

次はCSSです。
HTMLとは別にファイルを用意します。
ちなみに、HTMLの拡張子は「.html」でCSSは「.css」です。
書いたのがこれです。

p {
  color: red;
  font-size: 24px;
}

.second-message {
  color: green;
  font-size: 50px;
}

h1 {
  background-color:blue;
  color: white;
}

pとかh1の部分をセレクタといって、CSSの装飾をどの部分のHTMLに適用するのか
を選択するものになります。

HTMLで

<p class="second-message">
 2つ目の段落です
</p> 

class="クラス名"をつけることで、個別に選択できるようになります。

colorやfont-sizeなどをプロパティといって、セレクタで指定したHTMLの何を変えるのか
を選択します。
colorなら文字の色、font-sizeなら文字の大きさです。

プロパティの内容を決めるのが値で、コロン(:)で区切り、コロンとセミコロン(;)の
間に値を決めます。

CSSのファイルをHTMLに読み込ませるために、HTMLファイルのhead要素に
<link rel="stylesheet" href="CSSのファイル名">
を記述することでCSSのファイルが読み込まれます。

では、実際にCSSファイルを読み込ませると

web表示例

このようになります。
文字の色、大きさ、背景色などを変えることができます。
classで指定した、P要素のみ文字が大きく、緑色にすることができます。

まとめ

HTMLとCSSファイルを使って、Web上に文字を表示させたり、画像をつけたりできます。
やればやるほど、奥が深く、新しいことも増えていきます。
でも、基本をわかっていればあとは実際に書いてみて、使い慣れるだけです。

今回は、HTML/CSSの基礎の基礎の部分をまとめました。

興味があれば、Progateなんかで体験してみてください。

Ruby on Rails 〜エラーメッセージ表示から日本語化〜

エラーメッセージの表示

エラーメッセージを表示させる設定

まずは、バリデーションで設定します。

validates :text, :image, presence: true

で空では保存できないようにします。

 

つぎに

コントローラーで保存できる場合の条件分岐を記述します。

def create

 @game = game.new

  if @game.valid?

  @game.save

  redirect_to root_path

 else

  render 'new'

 end

end

バリデーションで引っかかると、保存されずにnewアクションに戻る

ようにしています。

 

つづいて、

ビューです。

views/layoutsの下に「_error_messages.html.erb」ファイルを作ります。

<% if model.errors.any? %>
 <div class="error-alert">
  <ul>
   <% model.errors.full_messages.each do |message| %>
    <li class='error-message'><%= message %></li>
   <% end %>
  </ul>
 </div>
<% end %>

どのモデルにも対応できるように、「model.errors.any?」を記述しています。

最後にnew.html.erbファイルに

<%= render 'layouts/error_messages', model: form.object %>

を記述して、保存されなかったときに読み込まれエラーメッセージが表示されるようにします。 これで、エラーメッセージの設定は完了です。

日本語化

これでエラーメッセージを表示することができますが、英語表記になります。 「Text can't be blank」や「Image can't be blank」となります。

これを日本語に変換していきます。 config/application.rbを編集します。

# 中略
module game
  class Application < Rails::Application
    # Initialize configuration defaults for originally generated Rails version.
    config.load_defaults 6.0

    # 日本語の言語設定
    config.i18n.default_locale = :ja
      # 省略
    end
end

つぎは Gemfileを編集します。

gem 'rails-i18n'

記述できたら「bundli install」を実行します。

これで下記のサイトに記述のある日本語は変換されます

github.com

まだ、完全に日本語にできなていないので、様々な言語に対応できる言語ファイルの localeファイルを用意し、YAML形式で記述します。 YAML形式とは、ファイルの書き方のルールのことで、 文字だけで記述されているテキストのことです。

config/localesの下に「devise.ja.yml」ファイルを作ります。

github.com

からまるごとコピーして、devise.ja.ymlに貼り付けます。 これで、日本語化されます。

しかし… まだ日本語化されていないものもあります。 自身で名付けた「Nickname」や「text」などはそのまま表示されます。

config/localesの下に新たに「ja.yml」ファイルを作成します。

ja:
  activerecord:
    attributes:
      user:
        nickname: ニックネーム
      game:
        text: テキスト
        image: 画像

と変換したい文字を設定します。 これで、すべてが日本語化されました。 テストコードのエラーメッセージも変更されるので テストコードも変更を忘れずにしましょう!

エラーメッセージを指定する方法

バリデーションで

with_options numericality: { other_than: 1 }do
    validates :category_id
    validates :detail_id
    validates :delivery_fee_id
    validates :area_id
    validates :duration_id
  end

としてた場合 エラーメッセージは 「1以外の値を入力してください」 となります。

ユーザーからするとよくわからないですよね? たとえば 「〇〇を選択してください」 のほうがわかりやすです。

なので、エラーメッセージを変更します。

with_options numericality: { other_than: 1 , message: 'を選択してください' }do
    省略

とすることで変更できます。

バリデーションによっては

validates :name, presence: { message: 'は1文字以上入力してください。' }

という記述もあるので注意です。 詳しくは

railsguides.jp

を参照してください。

プログラミング〜JavaScript〜

JavaScriptとは?

JavaScript言語を使うことで、ページを移動せずに画面の表示を変えたり、 画面を更新することなくサーバーにデータを保存したり動きのあるWebページ を作ることができます。

JavaScriptの動作を確認する方法

デベロッパーツールを使うことで、javaScriptを実行することができます。 ブラウザ上でダブルクリックをし、検証を選択。(⌘ + ⌥ + c)
ElementsパネルではHTML/CSS
ConsoleパネルでJavaScriptの操作が行なえます。
Consoleを使うことで手軽に練習ができます。

JavaScriptの書き方

表示させる方法

console.log("おはよう")

Enterキーを押して実行すると「おはよう」表示されます。

変数定義

変数とは箱のようなもので、データを入れたり出したりできます。
値を入れることを代入、出すことを参照と呼びます。
変数に名前をつけることができ、変数名といいます。
変数名には命名規則があります。

  • アルファベット、数字、_、$が使える
  • 数字から始めることはできない
  • 大文字小文字は区別される
  • 予約語プログラミング言語ですでに役割のある言葉)は使用できない
  • let
    再代入は可能、再定義はできません。
let sample = "おはよう”
sample = "おはよう" (再代入OK)
let sample = "おはよう" (再定義NG)
  • const
    再代入、再定義ができません。
const sample = "おはよう"
sample = "おはよう" (再代入NG)
const sample = "おはよう" (再定義NG)
  • var
    再定義、再代入可能な書き方で現在はあまり使われていません。
<code>var sample = おはよう
sample = おはよう (再代入OK)
var sample = おはよう (再定義NG)

テンプレートリテラル

バッククォート(`)で囲むことで、文字列の中に変数を埋め込むことができます。

const name = "タロウ"
const age = 25

const info = ' 私の名前は${name}、${age}歳です。' console.log(info)

条件分岐

if (条件式1) {
 //条件式1がtrueのときの処理
} else if (条件式2){
 //条件式1がfalseで条件式2がtrueのときの処理
} else {
 //条件式1も条件式2もfalseのときの処理
}

Javascriptでif文を記述する際は

  1. 条件式は()でくくる
  2. 波括弧{}内の処理が実行される
  3. 複数の条件を指定する場合は、else ifと記述する
const num = 60

if(num % 15 == 0) {
  console.log(`${num}は3と5の倍数です`)
} else if (num % 3 == 0) {
  console.log(`${num}は3の倍数です`)
} else if (num % 5 == 0) {
  console.log(`${num}は5の倍数です`)
} else {
  console.log(`${num}は3の倍数でも、5の倍数でもありません`)
}

実際に記述したらこんなかんじです。

繰り返し処理

javaScriptで、繰り返し処理を行うときは、for文を使います。

for ([①初期化式]; [②条件式]; [③加算式]) {
  // 繰り返す処理の内容
}

①初期化式
 for文の中で使用する変数を定義
②条件式
 処理を何回繰り返すか指定
③加算式
 初期化式で定義した変数の増減

for (let i = 1; i <= 100; i++ ) { // 100回処理を繰り返す }

letを使い、変数iを1と定義し、定義した変数iでループする条件を指定しています。
i++は変数iを1増やすという意味です。なので、変数iは処理が1回実行されると1増えます。
条件式にi <= 100としているので、100回処理が行われます。

JavaScriptの基本をまとめてみました。

Ruby on Rails 〜Formオブジェクトパターン〜

Formオブジェクトパターンとは?

デザインパターン

料理を作るときにレシピを見るように、railsでプログラムを記述する際にも レシピのようなものがあります。

料理のレシピは自分で試行錯誤せず、レシピを見れば手っ取り早くおいしい料理を 作ることができるのと同じように、Railsにも良いとされる手順や方法があります。

料理のレシピのように、要望にたいして最適な方法や手順をまとめたものを デザインパターンといいます。

Formオブジェクトパターン

1つのフォーム送信で複数のテーブルに保存したり、定義したクラスにform_withメソッドに対応する機能とバリデーションをかけたりを行う方法のことをFormオブジェクトパターンといいます。

実装の手順

新たにmodelsディレクトリにファイルを作成し、クラスを定義します。

作成したクラスにform_withメソッドに対応する機能とバリデーションを行う 機能をもたせるための記述をします。

class ItemOrder
 include ActiveModel::Model 
 attr_accessor :name, :name_reading,...
 # バリデーションの処理
 def save
 # テーブルにデータを保存する処理
 end
end

//ActiveModel::Modelをincludeすると、 このクラスのインスタンスはform_withやrenderなどの ヘルパーメソッドの引数として扱えたり、バリデーションを使えるようになります。

バリデーションの処理

class ItemOrder

  include ActiveModel::Model
  attr_accessor :name, :name_reading, :postal_code, :prefecture, :city, :house_number, :building_name, :price

  with_options presence: true do
    validates :name, format: { with: /\A[ぁ-んァ-ヶ一-龥々ー]+\z/, message: "is invalid. Input full-width characters." }
    validates :name_reading, format: { with: /\A[ァ-ヶー]+\z/, message: "is invalid. Input full-width katakana characters." }
    # 「住所」の郵便番号に関するバリデーション
    validates :postal_code, format: { with: /\A[0-9]{3}-[0-9]{4}\z/, message: "is invalid. Include hyphen(-)" }
    # 「注文価格」に関するバリデーション
    validates :price, numericality: { only_integer: true, message: "is invalid. Input half-width characters." }
  end
  # 「住所」の都道府県に関するバリデーション
  validates :prefecture, numericality: { other_than: 0, message: "can't be blank" }
  # 「注文価格」の金額範囲に関するバリデーション
  validates :price, numericality: { greater_than_or_equal_to: 1, less_than_or_equal_to: 1000000, message: "is out of setting range" }
end

//numericalityは数値かどうかを検証するバリデーションになり、 オプション「only_integer:true」で整数のみという制限になります。

保存したい複数のテーブルのカラム名をすべて属性値として扱えるようにします。

データをテーブルに保存する処理

validates :price, numericality: {....
省略
def save
    # ユーザーの情報を保存し、「user」という変数に入れている
    user = User.create(name: name, name_reading: name_reading)
    # 住所の情報を保存
    Address.create(postal_code: postal_code, prefecture: prefecture, city: city, house_number: house_number, building_name: building_name, user_id: user.id)
    # 注文の情報を保存
    Oder.create(price: price, user_id: user.id)
  end
end

コントローラーのnewアクション、createアクションでFormオブジェクトのインスタンスを生成するようにします。

class  ItemController < ApplicationController
 def index
 end

 def new
   @item_order = ItemOrder.new   
 end

 def create
   @item_order = ItemOrder.new(item_params)   #「UserDonation」に編集
    if @user_donation.valid?
      @user_donation.save
      redirect_to action: :index
    else
      render action: :new
    end
 end

 private
  # 全てのストロングパラメーターを1つに統合
 def donation_params
  params.require(:user_donation).permit(:name, :name_reading, :nickname, :postal_code, :prefecture, :city, :house_number, :building_name, :price)
 end

end

フォーム作成の部分をFormオブジェクトのインスタンスを引数として渡す

<%= form_with(model: @Item_order, url: order_path, local: true) do |form| %> <%= render 'error_messages', model: @Item_order %>

これで、いつのフォームから複数のテーブルに保存ができ、 エラーメッセージの表示もできるようになります。

Ruby on Rails 〜ActiveHashをまとめてみました〜

都道府県名一覧やカテゴリーなど基本的に変更されないデータは データベースに保存せずに、ActiveHashというGemを使います。

準備

Gemfileに

gem 'active_hash'

と記述して、「bundle install」を実行します。

つづいて、ターミナルで

% rails g model game

を実行して、テーブルを作成します。

定義と継承

app/modelsディレクトリにgenre.rbファイルを作成します。

そしてこのファイルに定義します。

class Genre < ActiveHash::Base
 self.data = [
   { id: 1, name: '--' },
   { id: 2, name: 'RPG' },
   { id: 3, name: '格闘' },
   { id: 4, name: 'レース' },
   { id: 5, name: 'シュミレーション' },
   { id: 6, name: 'リズム' },
   { id: 7, name: 'アクション' },
   { id: 8, name: 'スポーツ' },
   { id: 9, name: 'ストラテジー' },
   { id: 10, name: 'その他' }
 ]
 end

「ActiveHash::Base」と記述して継承することで、 ジャンルのデータが使用できるようになります。

class CreateArticles < ActiveRecord::Migration[6.0]
 def change
   create_table :game do |t|
     t.string     :title        , null: false
     t.text       :text         , null: false
     t.integer    :genre_id     , null: false
     t.timestamps
   end
 end
end

テーブルにGenreモデルを外部キーとすることで紐付いたデータを扱えるようになります。 記述ができたら、「rails db:migrate」を実行します。

アソシエーション

紐付いたデータを習得できるように、gameモデルとGenreモデル間でアソシエーションを設定するために「module(モジュール)」を使います。

moduleは簡単にいうと、メソッドをまとめているものです。

アソシエーションを設定します。

ActiveHashを用いて、モデルをアソシエーションの設定をするためにはmoduleを取り込む必要があります。

belongs_toの場合

gameモデルは1つのジャンルに紐づくので「belongs_to」を設定します。

belongs_toの場合は 「extend ActiveHash::Associations::ActiveRecordExtensions」 と記述します。

class Article < ApplicationRecord
  extend ActiveHash::Associations::ActiveRecordExtensions
  belongs_to :genre
end

has_manyの場合

Genreモデルは、複数のゲームに紐づくので「has_many」を設定します。 has_manyの場合は 「include ActiveHash::Associations」 と記述します。

class Genre < ActiveHash::Base
 self.data = [
   { id: 1, name: '--' },
   { id: 2, name: 'RPG' },
   { id: 3, name: '格闘' },
   { id: 4, name: 'レース' },
   { id: 5, name: 'シュミレーション' },
   { id: 6, name: 'リズム' },
   { id: 7, name: 'アクション' },
   { id: 8, name: 'スポーツ' },
   { id: 9, name: 'ストラテジー' },
   { id: 10, name: 'その他' }
 ]

  include ActiveHash::Associations
  has_many :articles

 end

これで、アソシエーションの設定は完了です。

バリデーション

バリデーションを設定します。

空のジャンルが選択できないようにします。

class game < ApplicationRecord
  extend ActiveHash::Associations::ActiveRecordExtensions
  belongs_to :genre

  #空のtitleとtextを保存できないようにする
  validates :title, :text, presence: true

  #ジャンルの選択が「--」の時は保存できないようにする
  validates :genre_id, numericality: { other_than: 1 } 
end

numericalityは、数値かどうかを検証するバリデーションです。 「ーー」では保存できないようにしたいので、numericality: { other_than: 1 }とすることで、id:1以外であれば保存できるという意味になっています。

作成したジャンルをプルダウンで表示させるには

<%= f.collection_select(:genre_id, Genre.all, :id, :name, {}, {class:"genre-select"}) %>
<%= form.collection_select(保存されるカラム名, オブジェクトの配列, カラムに保存される項目, 選択肢に表示されるカラム名, オプション, htmlオプション) %>

と記述します。

以上がActiveHashの流れとなります。

 

Ruby on Rails アプリケーション作成の手順

Ruby on Railsとは?

プログラミング言語であるRubyフレームワークのことを「Ruby on Rails」といいます。 フレームワークとは最小のコストでアプリケーションの作成をできる仕組のことをいいます。

Ruby on Rails は同じコードを繰り返し書くことを避け、保守管理しやすくバグを減らし、ルールに則ったコードを書くことで記述量を少なく、スピーディーに開発ができるという特徴があります。

準備

ターミナル
% cd (ホームディレクトリに移動) 
% cd ~/ディレクトリ名 (作成したディレクトリに移動) % bundle config --global build.mysql2 --with-opt-dir="$(brew --prefix openssl)" (Railsの設定)

1.アプリケーションの雛形を作ります

ターミナル 
% rails _6.0.0_new アプリケーション名 -d mysql 

実行します。

これでアプリケーションに必要なファイルを一式自動で作成してくれます。 このディレクトリをVSCodeテキストエディタ)で開きます。 VSCodeを開いた状態で、ディスクトップ上にあるターミナルタブから新しいターミナル(controlキー + SHIFTキー + ^) でVSCode上でターミナル操作ができます。

2.データベース

雛形ができたら、データベースを作成します

ターミナル 
rails db:create 

実行します。

Created database '作成したアプリケーション名'_development' 
Created database '作成したアプリケーション名_test' 

こんな感じのメッセージが表示されます。 このデータベースの中身をわかりやすくするために、シークエル・プロ(Sequel Pro)を使用します。

ダウンロード

シークエル・プロを起動し

f:id:satoshi_hatta:20210502153717p:plain
シークエルプロ起動画面

f:id:satoshi_hatta:20210502153730p:plain
シークエルプロデータベース選択

先程、作成したデータベースが表示されているはずです。

これで、アプリケーションの雛形が完了です。

 

4.Railsの処理の流れ

 

Railsの処理は、

ルーティング→コントローラー→ビュー

の順で処理が行われます。

 

ルーティング

ルーティングはリクエスト(トップページを見たいなど)があった時に、 対応する行き先を振り分ける役割です。

config/routes.rb

に記述します。  

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

アクション

アクションとは、処理のカテゴリーのことで                 

  • index  一覧表示ページを表示するリクエストに対応して動く

  • new  新規投稿ページを表示するリクエストに対応して動く

  • create データの投稿を行うリクエストに対応して動く

  • show  個別詳細ページを表示するリクエストに対応して動く

  • edit  投稿編集ページを表示するリクエストに対応して動く

  • update  データの編集を行うリクエストに対応して動く

  • destroy  データの削除を行うリクエストに対応して動く   の種類があります。

コントローラー

リクエストに対応する処理をまとめて、 ルーティングからのリクエストを受け取り処理し、 レスポンスを返す役割です。

コントローラーを作成するには

コマンド「rails g」を使います。

ターミナル
% rails g controller コントローラ名

逆のコマンドに「raills g」があります。 間違って作成したときなどに、 関連するファイルごと削除してくれます。

つづいて、 コントローラ名_controller.rbにアクションを定義します。  

class 〇〇Controller < ApplicationController

 def index (indexアクションを定義)
 end

end

ビュー

ブラウザにレスポンスとして、見た目を返します。 Railsでのビューファイルの拡張子は「〇〇.html.erb」となります。

app/views/コントローラ名のディレクトリでファイルを作成します。 このファイルに見た目となる記述をします。 例えば以下のように入力します  

<h1>Hello Word</h1>

ローカルサーバーを起動

コマンド「rails s」を実行します。 これは、ローカルサーバーを起動するコマンドです。 止める場合は「controlキー + c」です。

ローカルサーバーとは、パソコン上のみのネットワークのことで 本番環境前に、動作を確認するために使用します。

ローカルサーバーを起動した状態で

http://localhost:3000

を開きます

先程、記述した「Hello World」が表示されれば成功です。

コントローラに
class 〇〇Controller < ApplicationController

 def index 
  @post = 今日の晩ごはんはなにつくろうかな?
 end

end

と定義して

<h1>Hello Word</h1>
<%= @post %>

と、ビューファイルに記述して先程の

http://localhost:3000

を開きます。

今日の晩ごはんはなにつくろうかな? と表示されているはずです。

コントローラーで定義したインスタンス変数を、 対応するビューファイルで使用することができます。

<%=...%>はRubyのコードを使用するタグになります。

<%...%>とすると画面上に表示しなくなります。 if分や、each文などを使用する場合に使います。

Ruby on Railsの雛形をつくり、ルーティングを設定し コントローラに定義して、ビューで見た目を表示させる という基本の流れとなります。