tmux 起動中に新規セッションを追加する方法
- プレフィックスキー (
C-b
(Ctrl-b)) +:new
Linux の悪戦苦闘記、プログラミング、WordPress、ウェブサービス、Windows、Mac などの話題ですの。
C-b
(Ctrl-b)) + :new
docker-compose
コマンドだけで環境をうまく切り替える方法docker-compose -f
オプションを使うことで、使用する YAML ファイルを取捨選択できるようになった。これを利用して、開発環境用ではボリューム共有を使い、サーバ環境用では別のサービスを追加する、といったことが可能になる。docker-compose -f
オプションで毎回 YAML ファイルを指定するのはとても手間がかかるが、解決することができる。Compose の設定に用いられる環境変数のデフォルト値を .env
という 環境ファイル で行うことができる。このファイルに COMPOSE_FILE
という CLI 変数 を定義し、その値に使用する YAML ファイルを指定することで -f
オプションを省略することができる。.devcontainer/devcontainer.json
が独自の設定ファイル。 .devcontainer/docker-compose.yml
はただの Docker Compose ファイル。.devcontainer/devcontainer.json
と .devcontainer/docker-compose.yml
の難しい箇所は本投稿の続きに記載した。5.8. 行セキュリティポリシー を利用することで単一データベースかつ単一スキーマ方式を採用したマルチテナントアーキテクチャをより安全にすることができそうです。
実際にシステムやアプリに組み込む前に、 PostgreSQL の Row Level Security とはそもそもどのような物なのか、手を動かすことで体験いたしました。
本投稿では、その時の動きをまとめます。また、時間が経ってもう一度 PostgreSQL の Row Level Security をおさらいしたくなったり、新たに挙動を確かめたくなったりした時のために、すぐにお試しの環境を作れるように記録を残します。
Laravel7 で入力値そのものと入力値を分割した配列の両方を一度にバリデーションするためのルールの書き方 – oki2a24 を改善する話です。
php artisan make:rule <name>
コマンドで app/Rules
ディレクトリに新しいルールオブジェクトのファイルを生成できる。passes($attribute, $value)
メソッドでバリデーションを行う。
$attribute
: フォームの属性名$value
: フォームに入力された属性値。これをバリデーションすることになる。rule
メソッでのルールオブジェクトの使用方法は、ルールを書く場所にインスタンス化すれば良い。そのため、ルールを書く際は文字列を |
で区切るのではなく、配列で定義することになる。passes
メソッドで $attribute
と $value
以外の値を使いたい (例えばバリデーション時の判定に使う最大数とか) 場合は、ルールオブジェクトのコンストラクタで渡す。message
メソッドで例えば passes
メソッド内で出てきた値を使いたい場合は、passes
メソッド内からプロパティに渡してやればよい。rules
メソッド内に 2 つ以上のクロージャのルールが存在するとテスト時にどのクロージャがテストに該当するのかわからなくなる。そのため試してはいないが ルールオブジェクトの使用 – カスタムバリデーションルールのメソッドを定義 をした方が良いと思われる。'required'
, 'email:rfc,spoof'
といったバリデーションルールを宣言できない。とはいえ該当するバリデーションロジックを書くのは車輪の再開発となり、おかしい。探すと、 Illuminate\Validation\Concerns\ValidatesAttributes
トレイトに各バリデーションルールの実装となっているのでこれを use
して利用する。実際に書いたコードから少し内容を変えており、実際に動かない可能性がありますことを最初にお断りします。エッセンスを伝えるためのコードとなります。
例えば、ログインに外部の OpenId Connect サービスを使う場合、今回は Google としましょうか。ユーザーを作成したときは Laravel の googles テーブルに連携時のデータを保存しているものとし、モデルでは user->google
でアクセスできるものとします。
ユーザーを削除する時にイベントを実行し、リスナーで Laravel の google レコードを削除するとします。この時のリスナーの handle メソッドを、次のようにテストしました。
app
メソッドを使用した。app
メソッドは普通に使える。
states
メソッドで users レコード作成後に googles レコードも作成している。登録は、 UserFactory
クラスで afterCreating
メソッドを使って行っている。
Docker イメージ php:7.4.5-apache で Apache の他に cron も動かす方法 – oki2a24 のcrond の実行ログを docker のログに出力するようにしたと思ったが出力されていない、という問題に対処できました。
関連したモデルの挿入、更新については公式ドキュメントに記述があります。
しかし、削除については言及されていません。
そこで、自分なりにたどり着いた最適な削除方法を残します。
~/.config/starship.toml
[custom.vim]
command = "echo Vim"
when = """ test -n "$VIMRUNTIME" """
フォームリクエストバリデーション – バリデーション 7.x Laravel にあるように、バリデーションロジックを含んだカスタムリクエストクラスを作成して利用することはよくあります。
しかし、フォームリクエストをどうやってユニットテストすれば良いのかについては、 Laravel ドキュメントに記載がありません。
自分自身がさまざま調べ、現在行っているユニットテストの方法を記したいと思います。