##概要
この記事は私の知識をより確実なものにするためにRailsチュートリアル解説記事を書くことで理解を深め
勉強の一環としています。稀にとんでもない内容や間違えた内容が書いてあるかもしれませんので
ご了承ください。
できればそれとなく教えてくれますと幸いです・・・
出典
Railsチュートリアル
##MVCとは
MVCとは
Model View Controller を略したものである
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をこのように書き換える
class ApplicationController < ActionController::Base
def hello
render html: "hello, world!"
end
end
2.省略
3.①application_controller.rbにgoodbyeアクションを追加
class ApplicationController < ActionController::Base
def hello
render html: "hello, world!"
end
def goodbye
render html: "goodbye!!!!!!!!!!!!!!!!!!!"
end
end
②routes.rbを書き換えルーティングをgoodbyeアクションへ変更
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秒
######リポジトリセットアップ
-
git init
でリポジトリを初期化する -
git add -A
で全てのファイルをステージングに追加 -
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をさっそく編集
# 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ファイルを書き換える。
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が公開されている。
###演習
- application_controllerのhelloアクションを書き換え、もう一度今の変更をプッシュする。
- routes.rbのrootURLをgoodbyeアクションに変更し、もう一度今の変更をプッシュする
######Herokuコマンドについて
herokuには他にも様々なコマンドが用意されている。
heroku renameコマンドではアプリケーションの名前を変更することができる。
実際は自動で生成されるデフォルトアドレスで十分。
RailsチュートリアルもHeroku上に置かれている。
このような独自ドメインも使用可能。
###演習
-
heroku help
またはheroku -h
でコマンド一覧を表示する。
Herokuのログは
heroku logs
で参照可能 - 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を使って簡単にデプロイできる。