Baby step - 思考と実験の足跡

日常のちょっとした、気になって試したこと集です。

2019-01-01から1年間の記事一覧

Credentials.yml.encってなんなの?

Credentials.yml.encとは? 外部サービスの認証情報をconfig/master.keyで暗号化した状態で直接リポジトリに保存するためのファイル .gitignoreされたファイルに認証情報などを記載してサーバに置く、などをしなくて済む Rails5.2より前はsecret.ymlというも…

Dockerを使ってRoR + mysql8.0の環境を構築する

目指す環境 Ruby 2.6.3 Rails 5.2.3 MySQL: 8.0.16 Dockerfile & docker-compose.ymlを作成 mysql5.7ですが、以下のサイトが非常に丁寧に説明してくださっております。 こちらを参考に、バージョン部分だけ書き換える。 丁寧すぎるDocker-composeによるrails…

MySQLのカラム型による使用バイト数について調べたこと

DB設計をしていて、MySQLについての制約について調べたことをメモ varchar型の使用バイト数 limitが255のときは1byte limitが256のときは2bytes CakePHP3のマイグレーションでstring型を指定した場合、limitを設定しなければ255となります。 参考:MySQLのva…

テーブル設計時におけるnull制約の取扱について現時点の結論

はじめに 自社サービスのリニューアルに伴うDB設計に2日間取り組みました。 DB設計は、機能追加に伴う粒度であれば経験がありますが、 サービスの根本から考えるDB設計は始めてです。 自分が知っていること、経験した事を元に理想の構成を考えたり、ググった…

tinyint型のカラムにtrueを入れたらバリデーションで拒否された件

ハマったこと boolean型の値を入れるカラムを用意する # マイグレーションファイルの一部 ->addColumn('set_tax_in', 'integer', [ 'default' => '0', 'limit' => MysqlAdapter::INT_TINY, 'null' => false, 'signed' => false, ]) 以下のようにバリデーショ…

マイグレーション作成時のテストは別DBを選択するとラク

ローカル環境への実行といえど、マイグレーションの動作テストに失敗するとテストデータの入れ直しが地味に大変。 変更箇所が多いとヌケモレも起きやすいので、リスクが増える。 そんなわけで、マイグレーション用のDBを用意するとラク。 # app.php 'Datasou…

Railsのfind_or_initialize_byにあたる関数をCakePHP3で作ってみた

idがあればupdateを、なければcreateをする $data = ['name' => 'hoge']; $entity = $table->findById($id)->first(); if ($entity != null) { $entity = $table->patchEntity($entity, $data) } else { $entity = $table->newEntity($data); } こんな感じの…

マイグレーションでカラムを追加したときには、エンティティのアクセサも更新する

priceカラムを追加するマイグレーションを作る # Migrationファイル public function change() { $this->table('bills') ->addColumn('price', 'integer', [ 'default' => 0, 'limit' => 11, 'null' => false, ]) ->update(); エンティティに値が入らない $d…

モデルで定義したバリデーションが動いているか確認する

背景 バリデーションが設定どおり動作するか確認する方法を調べてみました。 モデル側にバリエーションを設定 # Model public function validationBase(Validator $validator) { $validator ->nonNegativeInteger('id') ->allowEmpty('id', 'create'); $vali…

カラム名に予約語を含むモデルのクエリービルダーを作る

概要 あるモデルのカラム名がorderのような予約語の場合、クエリービルダー生成時にMySQLのエラーが起きる app.phpや.env中のquoteIdentifiersをtrueにすることでエスケープできるが、一部のクエリが書けなくなる クエリービルダー経由でも意外と簡単に書け…

媒体選びと引用や転載のルール確認をしたらブログを始めれました

ブログに対する不安を解決してブログをはじめました。はてなブログに体験ログなどを書いて、ある程度まとまったらQiitaに書く。引用はOKだけど転載はNG. 参考URLを貼るのは意外にもOK.