TL;DR JSON Schemaを使ってこういうことが実現可能になった。 ダミーAPIサーバの提供 ドキュメントの自動生成APIクライアントの動的定義APIサーバのバリデータの動的定義APIサーバのレスポンスの自動テスト JSON Schemaとは JSON SchemaというのはあるJSONのデータ構造を記述するための方法および書式の仕様で、 JSON SchemaもJSONで記述される。 これを利用すれば、リソースベースの(=RESTfulライクな)APIの仕様が簡便に記述できる。 例えば、我々のAPIはレシピとユーザというリソースを扱っていて、 それぞれCRUDのAPIを備えており、レシピはidとtitleとdescriptionという属性を持つ、 という旨をJSON Schemaで表現できる。 なんで最近ちょっと流行ってんの Mobile First、 Service Or

次にエントリを書くときは HBFav の次のバージョンの話、と思っていたのだが AppStore のレビューに時間がかかっているので、なんとなく閑話休題的に更新しておこう。 Helios について。ロゴがかわいい。 先月くらいに何かの拍子で自分の周囲でも話題になった。今年の4月くらいにHeroku からリリースされた、MBaaS (Mobile Backend as a Service) を構築するためのフレームワーク。実際には OSS なのでHeroku からというかHeroku 社員の mattt さん によるもの。 mattt さんはご存知、iOS の AFNetworking や TTTAttributedLabel そのほかの開発者として有名なスーパーハッカーである。Heroku 勤務ということで、Heroku の親会社であるSalesforce が開催の Salesfo


This is anarchive. CloudKit is not under active development. CloudKit provides schema-free, auto-versioned, RESTful JSON storage with optional OpenID and OAuth support, including OAuth Discovery. CloudKit is Rack middleware.It can be used onits own or alongside other Rack-based applications or middleware components such asRails, Merb or Sinatra. The CloudKit stack provides an optional OAuth Fi
はじめに SinatraやRamazeといったRubyのWebアプケーションフレームワークに興味をお持ちの方であれば、Rackという名前をしばしば目にしているかもしれません。どうやら様々なフレームワークに使われているらしいのだけど、そいつが一体なんなのかよくわからない、そんなあなたのために今日はそのRackをご紹介したいと思います。 様々なフレームワーク、様々なアプリケーションサーバ しばらく前なら、Ruby onRailsブームの真っ只中、Rubyと言えばRails、Webアプリケーションを作るならRails、といったイメージを持たれていた方も多かったと思います。実際にWebアプリケーションを作ったり、Rubyに触れたりしたきっかけがRailsだったという方も多いでしょう。 しかし最近は、RubyのWebアプケーションフレームワークと一口に言っても、非常に簡単にアプリケーションが書けて
Sinatra::Base.middleware そもそも、 Sinatra::Base を継承したクラスには、クラスメソッドとして Sinatra::Base.middleware が用意されており、明示的に Sinatra::Base.use で利用を宣言したミドルウェアはそこから一覧を取得できる。 + (Object) middleware ところが、 Sinatra アプリケーションが実際に Rack でホストされ、アクセスされる際には、 use で宣言していないミドルウェアもたくさん呼ばれるわけで。その全貌が知りたい場合。むろん、Rails、Ramaze、Camping といった Rack に対応したフレームワークならば同じような方法で「中を覗く」ことが可能なはず。 set_trace_func を使ってみる Kernel#set_trace_func は profile.rb
Warden はかなり好き(PadrinoというかSinatraでも使えるし)。でも、僕もDeviseはやり過ぎだと思う派だなあ 認証関連の画面遷移やURLが Devise の規約にぴったりハマるケースっていくらなんでも稀だと思うし、カスタマイズするとなると結構ソース追わないといけなくなって結局だるい… env['warden'] に一通り入ってるのは、少しかっこ悪いかもしれないけど便利。 認証とかリダイレクト処理とかガラケー対応とか、はアプリケーション本体ではなくRack Middleware で実現したいな~と言う facebook でこんなことをつぶやいた。 僕は Rack とその関連技術が凄く好きで、もっと勉強する人が増えてほしいと思っているのだが、何で好きなのかとかを整理してみた。Good Stuff 結合度が低くなる。なので: Rackでとある機能(認証など)を実現すれば、そ
『るびま』は、Ruby に関する技術記事はもちろんのこと、Rubyist へのインタビューやエッセイ、その他をお届けするウェブ雑誌です。Rubyist Magazine について 『Rubyist Magazine』、略して『るびま』は、日本Ruby の会の有志によるRubyist のRubyist による、Rubyist とそうでない人のためのウェブ雑誌です。 最新号Rubyist Magazine 0058 号 バックナンバーRubyist Magazine 0058 号RubyKaigi 2018 直前特集号Rubyist Magazine 0057 号RubyKaigi 2017 直前特集号Rubyist Magazine 0056 号Rubyist Magazine 0055 号Rubyist Magazine 0054 号 東京Ruby 会議 11 直
「エラーメッセージから学ぶRack最初の一歩」および「エラーメッセージから学ぶRack - Middlewareの魔法」の続きです。 前2本の記事で、Rackはrackupコマンドを起動すると、defaultでconfig.ruを読み込みWebサーバを起動するということが分かりました。また、config.ruの中でuseを使ってmiddlewareを指定すると、Webアプリをラップして内側から外側に向けてそれらの#callを順次呼び出すということも分かりました。ちなみに僕はこの呼び出しスタイルを今後「マトリョーシカ呼び出し」と呼ぶことにしました。 ここで2点気になることがあります。config.ruはRubyスクリプトです。rackupコマンドの実行からRackはどうやってこのファイルを実行しているのでしょうか。まあ簡単に想像はつきますが(エバるほどではない)、これが1点目です。もう1点は
前回、前々回の記事では、Rackの生まれた背景、Rackとは何か、実際にRackアプリケーションを作る際に使えるものをご紹介しましたが、もう一つまだ説明していない重要な要素がRackにはあります。今回は、そのミドルウェアという仕組みについてご紹介します。 ミドルウェアとは ミドルウェアとは何かを一言で言うと、「別なアプリケーションをラップして、リクエストやレスポンスを加工したり、処理を切り換えたりするRackアプリケーション」です。 この仕組みがあることで一体何ができるのでしょうか。Webアプリケーションを作っていると、リクエストやレスポンスをアプリケーションに行く前やアプリケーションの処理の後に加工したくなることはよくあります。例えば、条件に応じてURLの書き換えをしたり、エンコーディングの変換をしたり、Cookieの処理をしたり…といったことが日常茶飯事です。こういう処理を、サーバと
Rainbows! is a HTTP server for sleepy Rack applications.It is based on Unicorn, but designed to handle applications that expect long request/response times and/or slow clients. For Rack applications not heavily bound by slow externalnetwork dependencies, consider Unicorn instead asitsimpler and easier to debug. Rainbows! is about Diversity Weaim to support as many concurrency models as we can
Rackの動きについてコードを追ってみたよ Rackのバージョンは1.4.1です。 Rackの動きの前に、まずはざっくりRackで動かすっていうのを確認してみよう。 rack up! まずは適当にRackの設定ファイル兼クラスを定義する require 'rack' require 'pp' class Sample def call(env) pp env [200, {"Content-Type" => "text/plain"}, ["rack up!\n"]] end end run Sample.new これを rack up する sugamasao@GRAM% rackup sample.ru [2012-02-13 23:35:44] INFO WEBrick 1.3.1 [2012-02-13 23:35:44] INFOruby 1.9.3 (2011-11-30)
1リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く