新規プロジェクトでGraphQL-Rubyを利用する際に気をつけること

GraphQL-RubyでAPI開発する際に、以下のように--apiオプションをつけたくなる。 rails new iikannzino_service --api そうすると、rails generate graphql:installとした時にgraphiql-railsがinstallされなくなってしまう。 rails g graphql:install --no-ap…

「Design It!」は、人生に影響を与える本になりそうです

設計から携われるタスクがあり希望の上、チーム異動しました。どのように設計を行うか、何を考慮する必要があるのか、どのように関係者(ステークホルダー)に説明するかなど、ありとあらゆることが手探り状態です。「Design It!」を読んだことで具体的なアク…

Best Practice Ruby on Rails Refactoringは、Rails開発を初めて半年のエンジニアにピッタリの本だった

Rails AntiPatterns: Best Practice Ruby on Rails Refactoring (Addison-Wesley Professional Ruby Series) (English Edition)作者:Chad Pytel,Tammer Saleh出版社/メーカー: Addison-Wesley Professional発売日: 2010/11/09メディア: Kindle版 Best Practi…

Design Patterns in RubyでStrategyパターンを学んだ

Design Patterns in Ruby でStrategyパターンを学んだ。自分用のメモとして残しておく。 Design Patterns in Ruby (Adobe Reader) (Addison-Wesley Professional Ruby Series) (English Edition)作者:Russ Olsen出版社/メーカー: Addison-Wesley Professiona…

Rubyであるメソッドの定義場所を知る方法

OSSなど実装を見る機会が乏しいコードに触れる時、あるメソッドがどこに定義されているか継承を辿るとデバッグに時間がかかる時がある。 そんな時は、methodとsource_locationメソッドを利用すると便利である。 GraphQL::Types::String.method( :graphql_def…

GraphQLで独自Scalar型を定義する時に気をつけること

GraphQL-Rubyでは、Int、Float、String、Boolean,IDといったビルドイン以外にISO8601DateTimeやISO8601Date型が提供されています。 また、独自Scalar型を定義することができ、その方法はドキュメントに記載されています。 class Types::Url < Types::BaseSca…

alert(1)では、危険性がわからなかった人にも優しいXSS解説

XSSとは、攻撃者によって意図しないHTMLやJavaScriptを挿入される脆弱性です。 XSSを説明する際に、ローカルサーバーを立ち上げた後にブラウザ上でhttp://localhost:8080/?keyword=<script>alert(1)</script>にアクセスすると警告ダイヤルが表示される例を目にすることが多い…

GraphQL-RubyでUnion型を実装する方法

GraphQLにおけるUnion型は、Object型のリストを表現します。 実装方法は、ドキュメントを参考にすると以下の通りです。 簡易的にUnionを試すためUserクラスにcommentsメソッドを実装していますが、本来はSTIやCTIなどの実装を表現する場合に利用します。それ…

Rubyの予約語を取得する方法

Rubyの予約語を取得するワンライナーを知った。いくつか疑問があるので忘れないように残しておく。 RubyToken::TokenDefinitions.select { |definition| definition[1] == RubyToken::TkId }.map { |definition| definition[2] }.compact しかし、v2_7_0_pre…

Rubyでは、クラスの比較ができる

Rubyでは、クラスを比較できることを知ったのでメモとして残しておく。 String < Object 比較演算子は、Moduleクラスに存在している。 ここで、以下を比較すると結果としてnilが返る。 Kernel < BasicObject これは、BasicObjectとKernelが継承関係にないか…