bakeコマンド
完全に失念かつすっかり来年の事を考え始めていたQiita初心者です。
bakeコマンドで初期化出来ればいいのに・・・というのは置きまして
本日はCake3におけるbakeに関して少し書いていこうと思います。
準備を怠ってしまったので足りない点や追記したい点は気づいたら修正していきたいと思います。初めはあまり内容がないかも
bakeコマンドのオプション
bakeコマンドを呼び出すには、cakeコマンドにbakeをパラメーターとして渡します。
オプションとして以下のようなものがあります。
12月26日追記
option | 概要 |
---|---|
all | |
behavior | xx |
cell | Controllerのような動きをする部品 |
component | Controllerに処理を持たせない為に処理を記載 |
controller | テンプレートや遷移先をディスパッチ(り替え) |
fixture | テスト用データの作成 |
form | リクエストデータの置き場所。3系から? |
helper | viewにて使う関数を記載する |
mailer | メール送信処理。あまり用途が浮かばず |
migration | スキーマ作成用ファイルの作成 |
migration_snapshot | xx |
model | テーブル、Entity、Fixture、テーブルTestを一括で作成 |
plugin | xx |
shell | クーロンなどで用いるシェル |
shell-helper | xx |
template | 基本的なアクションで使用されるindex/edit/viewを作成 |
test | xx |
この中で比較的よく使うオプションはこのオプションなどではないかと思われます。
php
model
shell
all
※こちら少し偏ってたらすみません。migration等は色々融通きかないのでコピペして作ってしまう癖がありまして^^;
bin/cake bake model
上記のコマンドを実行すると実際に作成可能なModelの一覧が表示されるので一覧を元に以下コマンドを実行すると
bin/cake bake model xxxx(アッパーキャメル形式のテーブル名)
Tabel、Entity、Fixture、TableTestを同時に生成してくれます。開発の初期段階でスピードをあげるには便利です。既にファイルが存在していればファイルを上書くか対話形式にて確認されます
12月26日編集
bakeコマンドで作成される資源のテンプレート
ここから少しだけ技術よりになります。
bakeのテンプレートファイルは、Twigテンプレート構文を使用しています。
Cake3でbakeした際に作られる資源はcomposerにてcake3をインストールした際に出来る以下のフォルダ配下に格納されています。
vendor/cakephp/bake/src/Template/Bake/Template
以前AdventCalendarで話題にあがった障害も上記テンプレートを変更することによって
次回以降bakeにて作成された資源が問題なく作成されるようにすることができます。
障害概要
bakeにて作成されたControllerにてviewに渡した(set)変数のserializeが自動的に記載され、またajaxリクエストの際はRequestHandlerなるComponentの働きによってデータが出力されることにより意図していないデータが漏洩する可能性があるとのことでした。
※例.usesテーブルにpasswordカラムがあった場合、userテーブルをAPI形式にて更新し画面表示の為userテーブルのEntityをviewに渡している場合passwordのハッシュ値もjson(or xml)形式にて返却される
素早く対応はされたのですが運用中であればバージョンをあげたりすることは他に影響えることがあるので出来ないかと思います。
そういった際には上記フォルダに格納されているcontroller.ctpファイルをコピーし、
serialize処理を書く箇所を削除すれば次回以降bakeした際にserialize処理を行わない資源を自動的に作成することができます。
他にもTableを常にアプリ固有の基底クラスを継承したカタチにしたい場合、継承漏れを防ぐためにtable.ctpファイル内の記載でextendsするクラスを変更すれば、次回以降bakeの際には継承先を確認する必要なく、修正漏れ等のリスクを軽減することができます。
テンプレートをアプリに準じた形に変更すればするほど開発スピードは速くなると思いますので是非使っていってほしいです。bakeで作成されたviewのctpなどi18nがテンコ盛りで
そのままでは日本語向けのアプリではほとんど使えないものに
※忘れない方が難しい...レビューでの着眼点一覧でも作り時間があれば気付けますがアジャイルでは厳しくorz
明日は@chitokuさんの『CI Test 』に関してだそうです。
Author And Source
この問題について(bakeコマンド), 我々は、より多くの情報をここで見つけました https://qiita.com/geechlife/items/4f7d19bd60b797ebb087著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .