Active Recordのinsert_allをto_sqlする方法

Active Recordのinsert_allをto_sqlする方法

GCPのリソースと認証・認可の方法

GCP上のリソースにアクセスする場合、公式から提供されているCLIやプログラムからアクセスするためのSDKなど、使用するクライアントに応じて複数の認証・認可の方法が用意されている。 どのような場合にどの認証・認可方法を採用すべきか迷うことが多いので…

データベース間のテーブル差分を比較するスクリプトを作成した

同じスキーマを持つ異なるデータベース間でテーブルの差分を確認したいことがあって、テーブル毎に差分を確認するのも面倒なのでデータベースの全テーブルを比較して差分を出力するスクリプトを作った。 今後もデータのマイグレーションなどで使えそうなので…

2023年の振り返り

年も瀬なので、開発関連の取り組みを雑に書きなぐっておこうと思う。 また来年の年の瀬に見てやるべきことがしっかりやれたかを確認できればと。 今年やれたこと・やってみたこと SREっぽい動き 特に組織上SREというポジションに就いているわけではないが、…

GraphQL RubyでIntrospectionクエリをクライアント別に制御する方法

GraphQL Rubyを使用しているプロジェクトで、Introspectionクエリをクライアント毎に有効化、無効化の制御を行いたいことがあったので、その方法を備忘として残しておきたいと思います。 前提 graphql-rubyでは、GraphQL::Schemaの継承クラスでdisable_intro…

open-uriライブラリ10kbの罠

RakeタスクでとあるCSVファイルをダウンロードしながら(CSV.foreach)、データの加工やDBへの保存処理を行うスクリプトを作成していたところ、以下にあるような課題に当たって、ヘルパーメソッドを作成したので背景とともに残しておく 背景と課題 ローカルで…

Railsの初期化コードと置き場所

Railsでconfig配下に置く各種初期化ファイルについて、それぞれのユースケースや実行の順番について整理しておきます。 今回はRailsガイドでも挙げられている、代表的な初期化コードの配置および定義場所を扱います。 config/application.rb config/environm…

【graphql-batch】カスタムローダーの運用を考えてみた

実際のプロジェクトでカスタムローダーを運用していると、graphql-rubyリポジトリに用意されているexamplesのように抽象化されたデータローダーと、アプリケーション固有の要件を満たすためのロジックを含んだデータローダーをそれぞれ作成することがありま…

graphql-batchのカスタムローダーと作り方

カスタムローダーの作り方 graphql-batchのリポジトリに用意されているexamplesを参考に、カスタムローダーの作り方を見ていこうと思います。 まずLoaderと定義されているpublicメソッドを書き出してみます。 AssociationLoader initialize load cache_key p…

graphql-batchの仕組みを調べてみた

graphql-batchを用いたバッチ処理の仕組みについて調べてみたので、まとめておきたいと思います。 graphql-batchの仕組み 公式のexamplesにあるRecordLoaderを使って、実際のバッチ処理を例にして処理流れや仕組みをみていきます。 例として、記事一覧の記事…

【GraphQL Ruby】InputObjectのField参照について

graphql-rubyではFieldとして引数をとることができます。さらに引数を定義するための型として、以下があります。 Scalar Enum InputObject List NonNull 特にInputObjectに関して、オブジェクトに定義されたFieldを参照する方法として メソッドとして参照す…

Pumaとメトリクス

WebサーバーとしてPumaを使用している場合の以下についてまとめておく 監視の観点 メトリクスの収集方法 監視の観点 Pumaの動作するサーバーに問題が起きていないか Pumaに問題が起きていないか Pumaの動作するサーバーに問題が起きていないか ホストマシン…

「コーディングを支える技術」を読んでだので、クラスに関して整理してみた

背景 「コーディングを支える技術」を読んだので、クラスに関して理解したことを整理するとともに、 普段Rubyを使う機会が多いため、クラスの機能がRubyでどのように表現できるのか?に関しても考えてみたいと思います。 クラスとは? クラスという機能がプ…

【RealityKit】モデルにMaterialを設定する方法

作成したmodelをEntityとして読み込む guard let model = try? Entity.load(named: "sample.scnassets/sample") else { return } 読み込んだEntityからmaterialを設定する対象のEntityを検索して、ModelComponentを取得する if var modelComponent = model.f…

Sign in with Appleを実装する際に確認すること

概要 Sign in with Apple(Sign up with Apple)を実装して、Appleに審査に提出する上で注意すべきことがいくつかあったので、その内容と対応方法を備忘としてまとめておく ボタンの実装方法 ASAuthorizationAppleIDButtonを使用する デフォルトでガイドライン…