1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rails Tutorial 第6版 学習まとめ 第1章

Last updated at Posted at 2020-05-30

##概要
この記事は私の知識をより確実なものにするためにRailsチュートリアル解説記事を書くことで理解を深め
勉強の一環としています。稀にとんでもない内容や間違えた内容が書いてあるかもしれませんので
ご了承ください。
できればそれとなく教えてくれますと幸いです・・・

出典
Railsチュートリアル

##MVCとは
MVCとは
Model View Controller を略したものである

MVCアーキテクチャの概念図
Railsチュートリアル第1章より
https://railstutorial.jp/chapters/beginning?version=6.0#sec-mvc

図の通りブラウザからリクエストがあるとコントローラがリクエストを受け取り
必要なデータはモデルを通してデータベースを照会し、Viewを出力することでページを表示する

##ルートルーティングの設定

config/routes.rb 内に

root 'controller_name#action_name'

と記述することで指定したコントローラーのアクションをルートURLとして参照する 

###演習

1.application_controller.rbをこのように書き換える

application_controller.rb
class ApplicationController < ActionController::Base
  def hello 
    render html: "hello, world!"
  end
end

2.省略
3.①application_controller.rbにgoodbyeアクションを追加

application_controller.rb
class ApplicationController < ActionController::Base
  def hello 
    render html: "hello, world!"
  end
  
  def goodbye
    render html: "goodbye!!!!!!!!!!!!!!!!!!!"
  end
end

②routes.rbを書き換えルーティングをgoodbyeアクションへ変更

routes.rb
Rails.application.routes.draw do
  # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
  root "application#goodbye"
end

##Gitによるバージョン管理

Cloud9を使っているならばGitのインストールは不要

######初期設定
初回のみ初期設定を行う

1.名前とメールアドレスを登録

$ git config --global user.name "自分の名前"
$ git config --global user.email your.email@example.com

2.Gitで使うデフォルトのエディタを設定
今回の場合はnanoエディタを使う
$ sudo ln -sf `which nano` /usr/binを実行

3.エイリアスを設定(しなくてもOK)
git checkout コマンドを今後省略形の git co で使いたい場合は
設定する
$ git config --global alias.co checkoutを実行

4.Gitパスワードの保持時間の変更
以降使うことになるpushコマンドなどでパスワードを入力する手間を省くためにパスワードの保持時間を設定する
意識高い人は設定しなくても良い。デフォルトの保持時間は900秒

######リポジトリセットアップ

  1. git initでリポジトリを初期化する
  2. git add -Aで全てのファイルをステージングに追加
  3. git commit -m "Initialize repository"でaddしたファイルをコミットする

ここまでがGitの基本的な流れ(ここまではまだローカルマシンでしか保存されていない)

このようにバージョン管理を行うことで以前の状況まで戻りたい時などに
戻れる(超重要!)

↑の作業でローカルマシン上ではコミットしたのでネットワーク上(リモートという)にアップする
リモートにアップすることで完全なバックアップができ、他の作業者とのソースコードの共有が容易になる
リモートでよく使われるものにGithubやBitbucketなどがある
今回はGithubを使用してリモートへアップしてみる

まずはGithubのアカウントを作成し、
新規のリモートリポジトリを作成する

ローカルリポジトリを今作成したリモートリポジトリにアップするコマンドを表示してくれているので
コピーしてターミナルにそのままはりつける

初回はユーザーネームとパスワードの入力を求められる

ちなみにCloud9ではパスワードが入力できない問題があり、私はそれでGithubではなくBitbucketを当初使っていました…

コンソールに文字の入力ができなくなる
https://teratail.com/questions/106094

パスワードがセキュリティ対策で表示されなかっただけですね…💦

######ブランチ
gitではブランチというものを扱う。ブランチはリポジトリのコピーで都度使い分けることで
変更や実験を自由に試すことができる
通常、親リポジトリはmasterブランチと呼ばれ(デフォルトはこれ)、今回はREADME.mdを編集するための
お試しブランチとしてmodify-READMEブランチを作成して作業することにする
トピックブランチはgit checkout -b modify-READMEで作成できる
※gitの初期設定でエイリアスを設定していた場合はgit co -b modify-READMEでもOK

$ git checkout -b modify-README 
Switched to a new branch 'modify-README'

ちなみにブランチ一覧はgit branchで表示される
*がついたブランチが現在のブランチ

$ git branch
  master
* modify-README

ブランチを作成したのでREADME.mdをさっそく編集

README.md

# Ruby on Rails Tutorial

## "hello, world!"

This is the first application for the
[*Ruby on Rails Tutorial*](https://railstutorial.jp/)
by [Michael Hartl](https://www.michaelhartl.com/). Hello, world!

編集が終わったらさっそくローカルリポジトリにコミットしてみる
流れとしてはgit add -Aでステージングしてから、git commit -m "~~~~"コミットである。
git commmit -a -m "~~~~"とするとステージングも含めて一緒にやってくれるので便利。
※-aオプションはステージングはしてくれるがバージョン管理下に置く機能はないため
バージョン管理下に置かれていないファイルはgit addでバージョン管理下に置く必要がある。
-aオプションを使えばいいというわけではない

######merge(マージ)
ファイルの変更が終わり、modify-READMEブランチでコミットしたので
親リポジトリ(masterブランチ)に反映させたい。
他のブランチの内容を現在のブランチに上書きすることをmerge(マージ)と言う。

手順としては、masterブランチにmodify-READMEブランチを反映させたいので
masterブランチに移動→現在のブランチ(masterブランチ)にmodify-READMEブランチをマージとなる
この手順をコマンドで入力した結果がこちら

$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
$ git merge modify-README
Updating 392f440..28a415b
Fast-forward
 README.md | 27 +++++----------------------
 1 file changed, 5 insertions(+), 22 deletions(-)

git checkout masterでmasterブランチに移動後
git merge modify-READMEでmasterブランチにmodify-READMEの内容をmergeしている。

トピックブランチを削除することもできるが、必須ではないためここでは省略。

######Push
先ほどローカルでmasterブランチに変更をマージしたのでこれらのファイルをリモートリポジトリにアップする。
このリモートにアップする作業をPushという。
最初の段階でgit push -u origin masterをしているので今回はgit pushで問題ない。

######git pushで問題ない理由
この段階では難しいので、興味がなければスルーしても問題ないですが、
git push -u origin master の意味について書いておきます。
このコマンドではローカルのmasterブランチで最後にコミットされた内容を
リモートのoriginにpushしますよ!というコマンド。
-uというのはmasterの上流ブランチにoriginを設定しますよというオプション。
まあ簡単に言うと-uで指定するとmasterのデフォルトのpush先がoriginになるため
一度このコマンドでプッシュした後はgit pushだけでデフォルトのプッシュ先
originにmasterの内容をプッシュしてくれるということ。

##デプロイする
######デプロイの準備①
ここまでで一連の流れが終了した。
ファイルを作成→編集→リモートにプッシュ
とりあえず試しで本番環境にデプロイしてみる。
使用するのは手軽なHeroku

使う前に、現在導入しているSQLiteはHerokuではサポートしていないため、
本番環境ではHerokuがサポートしているPostgreSQLを使うよう、Gemファイルを書き換える。

Gemfile
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

gem 'rails',      '6.0.3'
gem 'puma',       '4.3.4'
gem 'sass-rails', '5.1.0'
gem 'webpacker',  '4.0.7'
gem 'turbolinks', '5.2.0'
gem 'jbuilder',   '2.9.1'
gem 'bootsnap',   '1.4.5', require: false

group :development, :test do
  gem 'sqlite3', '1.4.1'
  gem 'byebug',  '11.0.1', platforms: [:mri, :mingw, :x64_mingw]
end

group :development do
  gem 'web-console',           '4.0.1'
  gem 'listen',                '3.1.5'
  gem 'spring',                '2.1.0'
  gem 'spring-watcher-listen', '2.0.1'
end

group :test do
  gem 'capybara',           '3.28.0'
  gem 'selenium-webdriver', '3.142.4'
  gem 'webdrivers',         '4.1.2'
end

group :production do
  gem 'pg', '1.1.4'
end

# Windows ではタイムゾーン情報用の tzinfo-data gem を含める必要があります
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

bundle install --without productionで本番環境gem以外をインストールする
ローカル環境ではもともとdevelopment環境のためproduction環境のgemは影響しないが
ここでproductionに対してgemを追加したことやRubyバージョンを指定したことをGemfile.lockに
反映させないと、本番環境デプロイで失敗する。

この段階で今の変更もコミットしておく

$ git commit -a -m "Update Gemfile for Heroku"

######デプロイの準備②
次に、Herokuのアカウントを作成する。→ Herokuアカウント作成
続いて、Heroku CLI(Command Line Interface)をインストールする。
Cloud9を使っているならば次のコマンドで即インストール可能だ。

$ source <(curl -sL https://cdn.learnenough.com/heroku_install)

Heroku CLIがインストールできたがどうかは
heroku -vでHerokuのバージョン情報が表示できれば確認できる。

インストールが確認できたらHerokuコマンドで先ほど作成したアカウントにログインする

$ heroku login --interactive

次に

$ heroku create

を実行し、Herokuサーバー上に今回作成したアプリケーションの実行場所を作成する。
これで、デプロイしたらブラウザで表示可能になる。

あとはGitを使ってherokuにプッシュすればデプロイできる。

git push heroku master

ここまでやれば、heroku createコマンドで生成されたアドレスを開けば
hello_appが公開されている。

###演習

  1. application_controllerのhelloアクションを書き換え、もう一度今の変更をプッシュする。
  2. routes.rbのrootURLをgoodbyeアクションに変更し、もう一度今の変更をプッシュする

######Herokuコマンドについて
herokuには他にも様々なコマンドが用意されている。
heroku renameコマンドではアプリケーションの名前を変更することができる。
実際は自動で生成されるデフォルトアドレスで十分。
RailsチュートリアルもHeroku上に置かれている。
このような独自ドメインも使用可能。

###演習

  1. heroku helpまたはheroku -hでコマンド一覧を表示する。
    Herokuのログは
    heroku logsで参照可能
  2. herokuアプリのアクセスログやエラーログなど様々なログが確認できる

##第一章のまとめ

  • RailsはRubyのフレームワーク。

  • クラウド環境(Cloud9)はRubyなどの環境があらかじめインストールされているのに加え
     環境の設定も容易でOSが違っても使用できる超有能ツール(環境による差異がない)

  • rails コマンドを使えばrails の様々な機能が使える

    • rails server →ローカルサーバーを立てる
    • rails console →railsのコンソールを起動する
    • rails new →railsのアプリを新規で作成する
    • rails generate →railsのファイルを作成する(モデル・コントローラなど様々)
  • RailsやHerokuを組み合わせることでhello_app程度なら一瞬で作れる。超便利。

  • データの喪失を防止、複数の作業者と共同作業を行えるようにするため、Gitを使って
     バージョン管理を行う。さらにはGitHubの非公開リポジトリにプッシュする。

  • 作成したアプリケーションはHerokuを使って簡単にデプロイできる。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?