【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.
Callback function (コールバック関数)
コールバック関数は、引数として他の関数に渡され、外側の関数の中で呼び出されて、何らかのルーチンやアクションを完了させる関数のことです。
引用:Callback function (コールバック関数) - MDN Web Docs 用語集: ウェブ関連用語の定義 | MDN
!
の違い
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
参考:
ActiveRecord とは
Active Recordとは、MVCで言うところのM、つまりモデルの一部であり、データとビジネスロジックを表現するシステムの階層です。Active Recordは、データベースに恒久的に保存される必要のあるビジネスオブジェクトの作成と利用を円滑に行なえるようにします。
引用:Active Record の基礎 - Railsガイド
compose.yaml について
compose.yaml ? docker-compose.yaml ?
- 公式推奨:
compose.yaml
-
docker-compose.yaml
は以前のバージョンのもの
yaml ? yml ?
業界や言語によって、分かれる様子
参考:
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
は自分を実行可能対象にするという意味