Open6

【RNA ハンズオン】Raills を理解する

てりてり

before_action(names, block)

  • アクションの前にコールバックを追加する
  • パラメータの詳細については _insert_callbacks を参照する
  • コールバックがレンダリングまたはリダイレクトを行う場合、アクションは実行されない
  • そのコールバックの後に実行予定の追加のコールバックがある場合、それらもキャンセルされる

before_action(names, block)

Append a callback before actions. See _insert_callbacks for parameter details.
If the callback renders or redirects, the action will not run. If there are additional callbacks scheduled to run after that callback, they are also cancelled.

引用:AbstractController::Callbacks::ClassMethods

てりてり

Ruby と ActiveRecord の感嘆符 ! の違い

Ruby

破壊的に操作すると言う注意喚起を意味する。

不思議なメソッド名
使用に危険を伴うメソッドの最後には感嘆符が使われます (例: selfあるいは引数の内容を書き換えるようなメソッド。exit!など)。 けれど、危険なメソッドすべてがこの慣習に従っているわけでも ないことに注意してください。
引用:他言語からのRuby入門

ActiveReacord

メソッドの処理に失敗が生じたときに例外を発生させる。

save  # レコードの保存に失敗 -> nil を発生させる
save! # レコードの保存に失敗 -> 例外を発生させる

Raised when Active Record cannot find a record by given id or set of ids.
引用:ActiveRecord::RecordNotFound

参考:
https://qiita.com/mao-0901/items/5d89534d5b7df752807c

ActiveRecord とは

Active Recordとは、MVCで言うところのM、つまりモデルの一部であり、データとビジネスロジックを表現するシステムの階層です。Active Recordは、データベースに恒久的に保存される必要のあるビジネスオブジェクトの作成と利用を円滑に行なえるようにします。
引用:Active Record の基礎 - Railsガイド

てりてり

compose.yaml について

compose.yaml ? docker-compose.yaml ?

  • 公式推奨:compose.yaml
  • docker-compose.yaml は以前のバージョンのもの

yaml ? yml ?

業界や言語によって、分かれる様子

参考:

  1. .ymlと.yaml、結局どっちが正しいのか問題にケリをつける
  2. yamlの拡張子が yaml と yml で揺れている #244

Docker Compose まとめ

services

項目 説明
直下 hoge: コンテナの名
build イメージのビルドに関する設定
commad コンテナの起動時に、実行するデフォルトのコマンドを上書きする
container_name コンテナの名前。指定しない場合はコンテナ名が付与される
depends_on コンテナ間の依存関係
entrypoint コンテナの起動時の ENTRYPOINT を上書きする
env_file 環境変数を別のファイルから設定
enviroment 環境変数の設定
image イメージ名
labels コンテナに追加するラベル
networks コンテナに接続するネットワーク
ports ポートフォワーディングの設定
restart コンテナの再起動の設定。no = 再起動なし, always = 常に再起動
volumes コンテナに接続するボリューム
tty 擬似端末の配置
working_dir デフォルトの作業ディレクトリ

参考書籍:Docker&仮想サーバー完全入門

てりてり

Dockerfile に記述できる命令

命令 意味
FROM もととなるイメージを指定
RUN イメージのビルド時に実行するコマンド
CMD コンテナの起動時に、実行するデフォルトのコマンド。docker container run コマンドや Docker Compose ファイルで、上書きすることが可能
EXPOSE 公開するポート番号。あくまでどのポートを公開するかという意図を表すものであり、実際に公開するには docker container run-p を指定するか、Docker Compose ファイルで ports を記述する必要がある
COPY イメージにファイルやフォルダーをコピーする
ADD イメージにファイルやフォルダーをコピーする。COPY より多機能。基本的に COPY 推奨
ENTRYPOINT コンテナ起動時に実行するコマンド。基本的にはコマンドの上書きはできない
WORKDIR 作業ディレクトリを指定する。該当ディレクトリが存在しない場合、ディレクトリを作成

参考書籍:Docker&仮想サーバー完全入門

てりてり

Dockerfile について気になる細かなあれこれ

apt-get

「Advanced Package Tool」の略。Debian系Linuxディストリビューション(例: Ubuntu)で使用されるパッケージ管理システムの一部で、ソフトウェアのインストール、更新、削除を行うためのコマンドラインツール

-qq オプション

「quiet mode」を意味し、apt-get コマンドの出力を最小限に抑える。
-q を2回指定することで、ほとんどの出力を抑制する。

有無の違い

あり:

  • 出力が非常に少なくなり、エラーや重要なメッセージのみが表示される
  • スクリプトや自動化された環境で、出力を抑えたい場合に便利

なし:

  • 通常の出力が表示され、進行状況や詳細なメッセージが見える
  • 手動でのデバッグや詳細な確認が必要な場合に役立つ

結論

-qq を使うと、ログがすっきりする。
トラブルシューティング時には出力を確認するために外す。

chmod コマンド

  • ファイルやディレクトリのアクセス権を設定するときに使うコマンド
  • +x は自分を実行可能対象にするという意味

参考:chmod【コマンド】とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典