Submit Search
そうだRack作ろう。
•
11 likes
•
4,727 views
Kazuma Suzuki
Follow
社内勉強会用のスライド。
Read less
Read more
1 of 20
Download now
Downloaded 13 times
More Related Content
そうだRack作ろう。
1.
そ う だ R a c k 作 ろ う。
2.
Today s Goal •
Rackとは何か理解する • Rackアプリ/ミドルウェアを作れるようになる
3.
Agenda 1. Rackとは 2. Rackアプリを作ってみよう 3.
Rackミドルウェアを作ってみよう 4. Gemにしてみよう(おまけ) 5. Unicornで動かしてみよう(おまけ)
4.
1. Rackとは
5.
Rackとは RubyをサポートするWeb(AP)サーバと Rubyフレームワークとをつなぐ規約 (PythonのWSGIを元に提案された)
6.
Rackの役割 Passenger Unicorn Thin Mongrel Rails Sinatra Ramaze Merb Application ServerFramework インターフェースの統一により、 フレームワーク/APサーバ間の組み合わせを自由にする
7.
2. Rackアプリを作ってみよう
8.
! •callというメソッドを持っていること •callメソッドの引数としてWebサーバからのリクエスト を受けること •callメソッドは以下の要素を含むレスポンスを返すこと - ステータスコード - レスポンスヘッダ(Hash) -
レスポンスボディ(Array) Rackアプリケーション
9.
Rackアプリを作ってみよう class RackApp def call(env) [200,
{'Content-Type' => 'text/html'}, ["Hello, Rack world!"]] end end run RackApp.new config.ru ! $ rackup config.ru
10.
3. Rackミドルウェアを 作ってみよう
11.
Rackミドルウェア Rackに対応したアプリケーションに 機能を追加するためのミドルウェア ! •Rackアプリケーションの仕様を満たしていること •newの第一引数に他のRackアプリケーションを取ること
12.
Rackミドルウェアを作ってみよう class UpcaseAll def initialize(app) @app
= app end def call(env) code, headers, body = @app.call(env) body.each {|part| part.upcase! } [code, headers, body] end end class RackApp #... end use UpcaseAll run RackApp.new config.ru
13.
Rackミドルウェアの入れ子構造
14.
よく使うRackライブラリ •Rack::Request - リクエストを扱いやすくしてくれるラッパー •Rack::Response - レスポンスを扱いやすくしてくれるラッパー •Rack::URLMap -
パスに応じてリクエストを振り分けてくれるアプリケーション ! ‣参考:http://route477.net/w/RackReferenceJa.html
15.
【演習】 ! これまで学んだことを踏まえて、 オリジナルのRackミドルウェアを作ってみよう
16.
5. Gemにしてみよう
17.
Gemの作り方 require "my_first_gem/version" module MyFirstGem class
UpcaseAll #... end end $ bundle gem my_first_gem 1. Gemの雛形を作る 2. 概要をgemspecに書く 3. ライブラリを書く 4.Gemをビルドする $ rake build
18.
【演習】 ! 自作したGemをgeminaboxにアップして、 他人が作ったGemもインストールしてみよう
19.
6. Unicornで動かしてみよう
20.
Unicornの使い方 worker_processes 2 listen 9292 stderr_path
File.expand_path('unicorn.log', File.dirname(__FILE__)) stdout_path File.expand_path('unicorn.log', File.dirname(__FILE__)) pid File.expand_path('unicorn.pid', File.dirname(__FILE__)) $ echo “gem ‘unicorn’” >> Gemfile $ bundle install 1. Unicornをインストール 2. 設定ファイル(unicorn.conf)を用意する 3. Unicornを起動する 4. Unicornを停止する $ kill -QUIT `cat unicorn.pid` $ unicorn -c unicorn.conf -D
Download