BOLG依存パッケージアップデート業 2022/09/18
ちょっと前にdependabotを入れたせいで(おかげで)大丈夫そうならポチポチアップデートしてしまっており、しばらくこのシリーズも書いてないことに気づいたので、今朝来ていたdependabot PR2つだけ書いておく。
logger_json
https://github.com/Nebo15/logger_json/compare/5.0.0...5.1.0
jason
https://github.com/michalmuskala/jason/releases/tag/v1.4.0
io_lib_format.fwrite_g/1
をやめて:erlang.float_to_binary(_, [:short])
を使うように変更- メモリ消費が減るなどパフォーマンスが結構改善するらしい
BOLG依存パッケージアップデート業 2022/07/30
API
Dependency Current Latest Status credo 1.6.4 1.6.5 Update possible ecto_sql 3.8.3 3.8.3 Up-to-date ex_aws 2.3.3 2.3.3 Up-to-date ex_aws_s3 2.3.3 2.3.3 Up-to-date gettext 0.19.1 0.20.0 Update possible hackney 1.18.1 1.18.1 Up-to-date id_token 0.2.1 0.2.1 Up-to-date jason 1.3.0 1.3.0 Up-to-date joken 2.5.0 2.5.0 Up-to-date logger_json 5.0.0 5.0.0 Up-to-date mock 0.3.7 0.3.7 Up-to-date new_relic_agent 1.27.7 1.27.7 Up-to-date oban 2.12.1 2.13.0 Update not possible phoenix 1.6.10 1.6.11 Update possible phoenix_ecto 4.4.0 4.4.0 Up-to-date phoenix_pubsub 2.1.1 2.1.1 Up-to-date plug 1.13.6 1.13.6 Up-to-date plug_cowboy 2.5.2 2.5.2 Up-to-date postgrex 0.16.3 0.16.4 Update possible scrivener_ecto 2.7.0 2.7.0 Up-to-date scrivener_headers 3.2.2 3.2.2 Up-to-date sitemapper 0.6.0 0.6.0 Up-to-date
credo
Credo.Check.Readability.LargeNumbers
のメッセージにonly_greater_than
の値を追加Phoenix.LiveView
のモジュールはデフォルトで無視- 以下のfalse positiveを修正
Credo.Check.Refactor.Apply
Credo.Check.Refactor.NegatedIsNil
Credo.Check.Readability.WithSingleClause
gettext
- 同じ引数で
gettext_comment
を何度も呼べるように修正 - POファイルへのフラグのダンプを参照のダンプの後へ移動
compile.gettext
をdeprecated- 非互換
handle_missing_translation(locale, domain, msgid, bindings)
コールバックの引数に1つ追加handle_missing_translation(locale, domain, msgctxt, msgid, bindings)
handle_missing_plural_translation(locale, domain, msgid, msgid_plural, n, bindings)
コールバックに引数1つ追加handle_missing_plural_translation(locale, domain, msgctxt, msgid, msgid_plural, n, bindings)
非互換な変更の影響は受けてないので上げてよし。
oban
Release v2.13.0 · sorentwo/oban · GitHub
- ジョブの戻り値に
{:cancel, reason}
追加。{:discard, reason}
はSoft deprecatedになるけど、使ってないので上げてよし。
phoenix
JSクライアントの変更のみ。上げてよし
postgrex
PGHOST
にUNIXソケット対応- PostgreSQL 14+のintegerとdecimalで
Infinity
に対応 Table.Reader
のメタデータにcount追加- Elixir v1.15のWarningsに対応
上げてよし。
frontとdashboard
@types/jest ^27.4.1 → ^28.1.6 @types/node ^16.11.7 → ^18.6.2 @types/react ^18.0.7 → ^18.0.15 @types/react-dom ^18.0.0 → ^18.0.6 @typescript-eslint/parser ^5.21.0 → ^5.31.0 eslint ^8.14.0 → ^8.20.0 eslint-config-next 12.1.5 → 12.2.3 jest ~27.5.1 → ~28.1.3 prettier ^2.6.2 → ^2.7.1 sass ^1.51.0 → ^1.54.0 ts-jest ^27.1.4 → ^28.0.7 typescript ^4.6.3 → ^4.7.4 next ^12.1.5 → ^12.2.3 react ^18.0.0 → ^18.2.0 react-dom ^18.0.0 → ^18.2.0 @nuxtjs/composition-api ^0.32.0 → ^0.33.0 @nuxtjs/eslint-config-typescript ^6.0.1 → ^10.0.0 @nuxtjs/eslint-module ^3.0.2 → ^3.1.0 @pinia/testing ^0.0.11 → ^0.0.13 @types/jest ^26.0.23 → ^28.1.6 @vue/test-utils ^1.3.0 → ^2.0.2 eslint ^7.32.0 → ^8.20.0 eslint-plugin-nuxt >=2.0.0 → >=3.2.0 eslint-plugin-prettier ^4.0.0 → ^4.2.1 jest ^26.6.3 → ^28.1.3 nodemon ^2.0.15 → ^2.0.19 prettier ^2.6.0 → ^2.7.1 sass ^1.49.9 → ^1.54.0 sass-loader ^10.1.0 → ^13.0.2 ts-jest ^26.5.6 → ^28.0.7 ts-node ^10.7.0 → ^10.9.1 @pinia/nuxt ^0.1.8 → ^0.3.1 express ^4.17.3 → ^4.18.1 express-session ^1.17.2 → ^1.17.3 firebase ^9.6.9 → ^9.9.1 http-proxy-middleware ^2.0.4 → ^2.0.6 pinia ^2.0.13 → ^2.0.17 redis ^4.0.4 → ^4.2.0 vee-validate ^3.4.14 → ^4.6.2
サボりがちになっていて溜まっており、大変ダルい。minorアプデはポイポイ入れていきます...。
PostgreSQLでpublic以外のスキーマをつくって使う
という記事を見かけたのが発端。いままで特に深く考えずにpublic
スキーマの世界で生きていたんだけど、ユーザごとにスキーマつくって権限あげるのがお行儀いいよな、と思ってやってみた。
-- init.sql CREATE DATABASE mydb TEMPLATE='template0' ENCODING='UTF8' LC_CTYPE='C' LC_COLLATE='C'; \c mydb; REVOKE CREATE ON SCHEMA public FROM PUBLIC; REVOKE ALL ON DATABASE mydb FROM PUBLIC; CREATE ROLE readwrite; CREATE SCHEMA myschema; GRANT CONNECT ON DATABASE mydb TO readwrite; GRANT USAGE, CREATE ON SCHEMA myschema TO readwrite; GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA myschema TO readwrite; ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO readwrite; GRANT USAGE ON ALL SEQUENCES IN SCHEMA myschema TO readwrite; ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT USAGE ON SEQUENCES TO readwrite; CREATE USER myuser WITH PASSWORD 'myuserpassword'; GRANT readwrite TO myuser;
これをやるとmydb
のmyschema
で生きるmyuser
さんができる。CREATE DATABASE
はローカルと本番でできたりできなかったりすると思うのでその辺りはよしなに。開発環境のDockerイメージでは/docker-entrypoint-initdb.d
以下に置いておくと初回に実行してくれる。volumeのある状態だと実行されないので、一度失敗したらdocker compose down --volumes
などしないといけないことに注意。
db: image: postgres:14 environment: POSTGRES_PASSWORD: postgres ports: - 5432:5432 volumes: - db-volume:/var/lib/postgresql/data - ./init.sql:/docker-entrypoint-initdb.d/init.sql # <- 追加
Ecto
ついでにEctoでどうやって繋ぎに行くか書いておきます。
# /config/dev.exs config :my_app, MyApp.Repo, username: "myuser", password: "myuserpassword", hostname: "db", database: "mydb", stacktrace: true, show_sensitive_data_on_connection_error: true, pool_size: 10, migration_default_prefix: "myschema", # <- 1 after_connect: {Postgrex, :query!, ["SET search_path TO myschema", []]} # <- 2
の2つ。前者はマイグレーションのときの話で、後者はアプリケーションが起動してSELECT
とかINSERT
とかするときの話。マルチテナンシーとかやろうとすると細かく設定したいので、マイグレーション実行毎、マイグレーションファイル毎、Ecto.Schema
毎、クエリ毎に指定することもできるけど、今回の話はpublic
やめようねというだけなので割愛。
mix ecto.migrate
の後にmyschema
にテーブルができていることが確認できたらOK。
$ psql -h localhost -Upostgres -d mydb Password for user postgres: psql (14.3, server 14.4 (Debian 14.4-1.pgdg110+1)) Type "help" for help. mydb=# \dp myschema.* Access privileges Schema | Name | Type | Access privileges | Column privileges | Policies --------------+--------------------+-------+-------------------+-------------------+---------- myschema | users | table | | | (1 rows)