【パーフェクト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