【パーフェクトRuby on Rails】 を読む - その1
※ちゃんとしたやつ書こうと思い書きました。
パーフェクトRails 1章
1-1-1
- プロジェクトを新規登録する際、git init で作業を記録する場を構築します。
- Ruby2.7とRails6.0の組み合わせは警告が発生する場合があります。
1-1-2
Rubygemsとは
RubyGemsは、Ruby言語用のパッケージ管理システムであり、ライブラリの配布用標準フォーマットを提供しています。gemを容易に管理できます。
$ rails _バージョン名_ -v
と入力するとインストールしているバージョンの中から任意のバージョンを指定できる
1-1-3
rakeタスク
実行したい内容をあらかじめ定義するもの。実行方法は時間指定でも手動でも関係ないです。(例:顔を洗う,歯を磨く,など) Linuxはmake == rubyはrake
rakeタスクの生成についての基本構文
desc 'rails, muzukashi' task 'rails' do puts 'rails muzukashi' end
- desc・・・タスクの説明
- task・・・タスク名称と実行内容
cronとwhenever
事前に定義したrakeタスクを時間という概念をもとに実行する機能のことです。 (例: 毎朝7:00に顔を洗う, 7:30に朝ご飯を食べる,など)
rakeコマンド
rakeタスクを実行するためのコマンドです。
1-1-4
bundleコマンドとは
gemパッケージの仕組みを利用してどのgemパッケージを使用してどのバージョンを使用しているのかを明示する仕組みです。
$ bundle exec
をつけるとGemfile.lock
に書かれているバージョンのgemが動きます。ディレクトリで定義しているバージョンがつかわれます。$ bin
と$ bundle exec
は同じです。($ bundle exec
は $ bin
の中に含まれるものというイメージです。)
bundlerでよく利用するサブコマンド
$ bundle install -> bundle iまたはbundleでも可 $ bundle update [ライブラリ名] -> バージョン更新 $ bundle list -> インストール済みのgemパッケージの一覧表示 $ bundle init -> Gemfileを生成。 $ bundle exec [コマンド名] -> Bundlerでインストール
$ bundle install
に--path vendor/bundle
つける??付けなくともいいと思います。→ bundlerを使っているから!!!(書くことで家の中にもめっちゃ鍵かけるイメージ)
1-2 Railsの思想
CoC(Convention over Configuration)
設定より規約という意味です。 規約に従うことで関心ごとがシンプルになり、本来注力すべきビジネスロジックへ集中できるようになります。
DRY(Don't Repeat Yourself)
同じ事を繰り返さないという思想です。情報の重複をなくし、一つのことは一箇所だけに記述します。 DRY原則を守る事によって変更が生じた際に何箇所もコードを修正する事がなくなり、メンテナンス性が高まります。
REST(Representational State Transfer)
URL web上の住所
URN web上の名前
URI web上の住所 + web上の名前
自動テスト
デフォルトはMinitest。基本はRSpecを使用します。
アーキテクチャ
アーキテクチャ(木造建築)>フレームワーク(家の建て方)>ライブラリ(工具箱)>コンポーネント(材料、道具、部品)
参考
bundle install --path vendor/bundle
について
https://qiita.com/jnchito/items/99b1dbea1767a5095d85
フレームワークとアーキテクチャの違い - Yahoo!知恵袋 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14158287509
技術負債の内容について - Qiita https://qiita.com/erukiti/items/9cc7850250268582dde7
URIについて https://ferret-plus.com/4637
bundle execについて https://qiita.com/d0ne1s/items/fa2dafcee02e963fe997
Rakeタスクについて https://pleiades.io/help/ruby/rake.html
肉さんNotion
https://www.notion.so/rake-cron-9f0512dd664d45238780512a8c304979#f9e3c558cd2343408eec8ffb0551bf85