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

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の動作するサーバーに問題が起きていないか ホストマシン…