2019-12-01から1ヶ月間の記事一覧
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 (Adobe Reader) (Addison-Wesley Professional Ruby Series) (English Edition)作者:Russ Olsen出版社/メーカー: Addison-Wesley Professiona…
OSSなど実装を見る機会が乏しいコードに触れる時、あるメソッドがどこに定義されているか継承を辿るとデバッグに時間がかかる時がある。 そんな時は、methodとsource_locationメソッドを利用すると便利である。 GraphQL::Types::String.method( :graphql_def…
GraphQL-Rubyでは、Int、Float、String、Boolean,IDといったビルドイン以外にISO8601DateTimeやISO8601Date型が提供されています。 また、独自Scalar型を定義することができ、その方法はドキュメントに記載されています。 class Types::Url < Types::BaseSca…
XSSとは、攻撃者によって意図しないHTMLやJavaScriptを挿入される脆弱性です。 XSSを説明する際に、ローカルサーバーを立ち上げた後にブラウザ上でhttp://localhost:8080/?keyword=<script>alert(1)</script>にアクセスすると警告ダイヤルが表示される例を目にすることが多い…
GraphQLにおけるUnion型は、Object型のリストを表現します。 実装方法は、ドキュメントを参考にすると以下の通りです。 簡易的にUnionを試すためUserクラスにcommentsメソッドを実装していますが、本来はSTIやCTIなどの実装を表現する場合に利用します。それ…
Rubyの予約語を取得するワンライナーを知った。いくつか疑問があるので忘れないように残しておく。 RubyToken::TokenDefinitions.select { |definition| definition[1] == RubyToken::TkId }.map { |definition| definition[2] }.compact しかし、v2_7_0_pre…
Rubyでは、クラスを比較できることを知ったのでメモとして残しておく。 String < Object 比較演算子は、Moduleクラスに存在している。 ここで、以下を比較すると結果としてnilが返る。 Kernel < BasicObject これは、BasicObjectとKernelが継承関係にないか…
GraphQL-RubyのEnumを翻訳するにあたり、Enum classes are never instantiated and their methods are never called.に疑問を持ったのでソースコードを読むことにしました。 version graphq-ruby: 1.9.5 ruby: 2.6.5 実装は、GraphQL::Schema::Enumにありま…
Classにmoduleをmix-inしてもmoduleで定義したクラスメソッドを利用できない。 これを解決するために、以下ようにincludeされた時点でクラスに対してmoduleをextendする方法がある。 module M def self.included(klass) klass.extend ClassMethods end modul…
GraphQL-Rubyには、Queryの実行前後で処理を差し込むことが可能なInstrumentが実装されています。 この機能を利用するためには、必ず#before_query(query)と#after_query(query)二つのメソッドを定義する必要があります。 以下のように自身のスキーマクラス…