Railsチュートリアル
以前少しチュートリアルをやったことはあるが、こういったqiitaのように他人に伝わりやすい形でアウトプットできていたかと言われればできていなかったかもしれない。
今回はチュートリアルをもう一度やり直してなるべく分かりやすく、かつシンプルにまとめていこうと思う。
目次
1.railsアプリの作成
[2.Bundler, Gemfile](#2-Bundler, Gemfile)
3.MVCアーキテクチャの説明
4.簡単なルーティングとアクション
5.gitの使い方
6.herokuにデプロイ
#1. railsアプリの作成
railsでアプリケーションを作成する際はまず作成したいディレクトリに移動する。
そしてrails _バージョン_ new アプリ名
コマンド実行でアプリケーションを作成できる。
#2. Bundler, Gemfile
Bunderとはgemのバージョンや依存関係を管理するもの。gemはRubyのライブラリ。
bundle install
コマンドでgemのインストールを行う。
gemのバージョンを指定する主な方法は2種類ある。
①gem 'capybara', '>=2.15'
->最新バージョンのgemがインストールされる。(2.15以上のバージョンならインストールされる)
②gem 'rails', '~>6.0.3'
->gemのバージョンが6.0.3以上で6.1よりも小さい場合にインストールされる。(マイナーバージョンの部分に相当するアップデート済のgemをインストール)
bundle installとbundle updateの違い
- bundle install
bundle installはgemfile.lockを元にgemのインストールを行うが、gemfile.lockに記述されていない、gemfileに記述されているgemがある場合はそのgemをインストール。その後gemfile.lockを更新する。
*bundle update
bundle updateはgemfileを元にgemのインストールを行い、gemfile.lockを更新する。
bundle updateは本番環境ではgemのバージョンのズレが起こり、アプリがクラッシュしてしまう可能性があるので基本的にはbundle installを使い、ローカルでのみbundle updateを使うべき。
#3. MVCアーキテクチャの説明
- model ... データベースとのやりとり
- view ... 表示処理をする
- controller ... リクエストを処理する
Railsアプリの通信の流れはブラウザからリクエストを送り、コントローラに渡されて必要に応じてビューを生成しHTMLをブラウザに送り返すといったようになっている。また、データベースからデータを引き出す必要がある際はコントローラはモデルを呼び出し、モデルはデータベースとやりとりをする。
#4. 簡単なルーティングとアクション
config/routes.rbに
root 'コントローラ名#アクション名'
を書くと一番最初のページを指定できる。(ルートに接続する時にどのコントローラのどのアクションに繋がるかを設定できる)
app/controllers/application_controller.rbには
def アクション名
処理内容
end
というように書く。
#5. gitの使い方
gitをインストールしたばかりであれば、初めにgit config --global user.name "名前"
とgit config --global user.email メールアドレス
で名前とメールアドレスを設定する。
gitを使いたい場合はgithubでリポジトリを作成して
①git init
コマンドを実行して.gitを作成。
②git add -A
(ファイルをステージング)
③git commit -m "Initialize repository"
④git remote add リポジトリのURL
⑤git push origin master
(-uオプションをつけるとgit pushのみでmasterにpushできるようになる)
よく使うコマンド
- git branch ブランチ名 ... ブランチを作成(-dオプションをつけるとマージされている指定したブランチを削除、-Dオプションならマージされてなくても削除)
- git checkout ブランチ名 ... ブランチを切り替える(-bオプションをつければ新規にブランチを作成してそのブランチに移動)
- git status ... ステージングの状態を表示する
- git log ... コミットメッセージの履歴を参照する
ちなみにgit commitメッセージは現在形で命令形で書くようにすること。
#6. herokuにデプロイ
heroku createでherokuアプリを作成。同時にgit remoteにもherokuが追加される。(git remote -vでリモートを一覧表示)
git push heroku masterでデプロイ。
herokuはデフォルトがpostgresqlなのでrailsのデフォルトと違うことに注意。(railsはsqlite3)
gemfileに開発環境、テスト環境はsqlite3で本番環境はpgを使うように書く。
herokuでデプロイ時にエラー
heroku openでエラーになってしまった。
エラーをみてみるとapp crachedになっているが原因わからず。
こちらを参考にしてheroku run consoleを実行してみると、どうやらherokuでsqliteを使おうとしてしまっていることが分かった。
そこでconfig/database.ymlのproductionの設定を
adapter: postgresql
database: db/production.pg
に変更。
これでコンソールが動いたので再びheroku openでデプロイ成功。
参考文献
以下の記事を参考にさせていただきました。
bundle installとbundle updateの違いについて
Railsチュートリアル1章でHerokuにデプロイできない時の対処方法
Qiitaの投稿記事内でページ内リンクや目次リンクを行う方法