2017-01-01から1年間の記事一覧
GMOペパボ Advent Calendar 2017の23日目の記事です。 今回はJavaScriptでGraphQLのサーバ/クライアントや関連ツールを提供しているApolloのツールセットでRailsプロジェクトでGraphQLのモックサーバを立ち上げるところまでを試してみます。 業務でRails製…
読みました、というよりは夏の終わりぐらいから何度か読んでいました。 Crafting Rails 4 Applications: Expert Practices for Everyday Rails Development (The Facets of Ruby)作者: Jose Valim,Brian P. Hogan出版社/メーカー: Pragmatic Bookshelf発売日…
2017-11-11(土)のYokohama.rb Monthly Meetup #85メモです。 yokohamarb.doorkeeper.jp Rubyレシピブック @igrepさんと、第10章の「Webプログラミング」の続きで次のレシピを読みました。 265: クッキーを処理する 266: セッションを使用する cgiとRackを…
あらかじめ書いたJSON Hyper Schema/OpenAPI 2.0のAPIドキュメントにおけるレスポンスのスキーマ定義をもとに、APIモードのRailsでHTTPリクエストを発行するテストを実行すると、自動でレスポンスのJSONをバリデーションしてくれるSchemaConformistというgem…
2017-10-24(火)にペパボEC事業部において「EC事業部 TechMTG #4」という社内勉強会がありました。この機会に、昨今のWeb API開発事情について知ってもらおうと思い、最近はチームでスキーマファースト開発をやってみているという話をしました。 スライドに…
この記事の続きのようなものです。 blog.kymmt.com やりたいこと Rails + RSpecでWeb APIのrequest specを書くときに、Committee(とCommittee::Rails)の assert_schema_conform を使って、レスポンスのJSONがOpenAPIドキュメントで定義したレスポンスのJSO…
APIドキュメントに書いたJSON Schemaと実際に実装したWeb APIのレスポンスJSONが一致するかバリデーションするためのCommitteeというgemがあります。また、このCommitteeをRailsプロジェクト中のテストから使うためのCommittee::Railsというgemがあります。 …
2017-09-09(土)のYokohama.rb Monthly Meetup #84参加のメモです。 yokohamarb.doorkeeper.jp Rubyレシピブック 今回から最終章のひとつ手前、第10章の「Webプログラミング」に入りました。次のレシピを読みました。 261: RSSを扱う 262: Rackを使う 263: …
2017年7月末リリースのOpenAPI v3.0.0に入ったCallback Objectという仕様がパッと見だとどう使うかわかりにくかったので、調べてみました。 Callback Objectの仕様は次のリンク先のとおりです。 OpenAPI-Specification/3.0.0.md at master · OAI/OpenAPI-Spe…
最近読んでいる “Crafting Rails 4 Applications” の中でRails pluginを開発する場面が多々あるので、手元でもRails 5を使ってRails pluginを書いてみています。 Rails 5だと、プラグインのセットアップ手順が本の記述やRails Guidesの記述と少し違っていた…
単純にGraphQLクエリを投げると、サーバサイドでの関連を含むレコード取得時にN+1問題が発生することがあります。こういうケースでは、複数のデータ取得リクエストをひとまとめにして、単一のリクエストとしてDBからデータを取得するbatchingが推奨されてい…
会社でGraphQLのハンズオンがあったのをきっかけに、最近はGraphQLのサーバ側実装をちょっと触っています。 graphql-rubyを使うと、RubyでGraphQL APIを実装することができます。今回はRailsでGraphQLのクエリとミューテーションを実装してみました。 graphq…
2017-07-08(土)のYokohama.rb Monthly Meetup #82参加メモです。 yokohamarb.doorkeeper.jp Rubyレシピブック レシピ257から260まででした*1。259, 260についてメモ。 259: リモートホストが稼働していることを確認する リモートホストが動いているかを確…
2017-06-10(土)のYokohama.rb Monthly Meetup #81参加メモです。 yokohamarb.doorkeeper.jp 3月の#78も参加していたのにメモを書いていなかったので、久しぶり感あります。 Rubyレシピブック レシピ254から256まで。HTTP, SMTP, FTPというプロトコル3連発…
このあいだ、Rails+MySQLという構成のアプリケーション開発環境をDocker Composeで構築できるようにしました。 blog.kymmt.com いろいろと理解が深まるにつれて、何点かクリアしたい問題が見えてきました。 Dockerfile で使うイメージ ruby:2.4.1-onbuild は…
先日、"Quickstart: Compose and Rails"の手順にしたがいながら、Docker ComposeでRails+MySQLがとりあえず動くような環境を作りました。 blog.kymmt.com 今回は、RailsのAPIサーバの開発環境をもうちょっといい感じにDocker Composeで作ってみます。DBにはM…
次の記事などでDockerを使ってRailsの開発環境を構築しているのを見て、自分でもやっておこうと思ったので、やってみました。 dev.classmethod.jp 公式ドキュメントの"Quickstart: Compose and Rails"を読みながらやります。 docs.docker.com 前提 まったく…
読みました。 Take My Money: Accepting Payments on the Web作者:Rappin, NoelPragmatic BookshelfAmazon どんな本か 副題が "Accepting Payments on the Web" となっているように、決済 (payment) システムをもつ Web アプリケーションを作る方法について…
JSON を返す API サーバでページネーションを実装したいと思っていて、前/後ページや最初/最後のページなどといった他のリソースとの関係を表すメタ情報をどこに格納すべきかなと考えていました。解決方法として少なくとも次の二つがありそうです。 JSON …
『MySQL 徹底入門 第 3 版』を読みました。 MySQL徹底入門 第3版 ~5.5新機能対応~作者:遠藤 俊裕,坂井 恵,館山 聖司,鶴長 鎮一,とみた まさひろ,班石 悦夫,松信 嘉範翔泳社Amazon なぜ読んだか 特定の DB プロダクトについての知識がなかった Web サービス開…
RSpec で request spec を書くとき、get "/users/:id.json" と書くかわりに get "/users/:id" と書くとエラーになりました。 ActionController::UnknownFormat: UsersController#show is missing a template for this request format and variant. リソース …
Rails 5.0.1 で rails new したときに作成される Gemfile の先頭に次のブロックが挿入されるようになっていました。 git_source(:github) do |repo_name| repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/") "https://github.com/#{re…
2017-01-14(土)の Yokohama.rb Monthly Meetup #76 に参加したので、メモを書きます。1 週間たってしまった。 yokohamarb.doorkeeper.jp Ruby レシピブック 今回はレシピ 244 から 247 まで読みました。システム寄りの話題が中心です。 レシピ 244 スレッ…
結論 star や like を付与するような、冪等性を持つアクションのための API エンドポイントでも POST はよく使われる が、HTTP メソッドの意図を考慮すると、冪等な更新処理の API エンドポイントにアクセスするときの HTTP メソッドは、POST より PUT がよ…
2016 年をふりかえらないと 2017 年が始まらないので、ハイライトでふりかえります。 上半期と下半期で在籍していた会社が違うので、そのくくりで分けてます。 上半期 個人活動 2015 年の秋ぐらいから触っていた Ruby で引き続き遊んでいました。 読書メータ…