Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
そ
う
だ
R
a
c
k
作
ろ
う。
Today s Goal
• Rackとは何か理解する
• Rackアプリ/ミドルウェアを作れるようになる
Agenda
1. Rackとは
2. Rackアプリを作ってみよう
3. Rackミドルウェアを作ってみよう
4. Gemにしてみよう(おまけ)
5. Unicornで動かしてみよう(おまけ)
1. Rackとは
Rackとは
RubyをサポートするWeb(AP)サーバと
Rubyフレームワークとをつなぐ規約
(PythonのWSGIを元に提案された)
Rackの役割
Passenger
Unicorn
Thin
Mongrel
Rails
Sinatra
Ramaze
Merb
Application ServerFramework
インターフェースの統一により、	

フレームワーク/APサ...
2. Rackアプリを作ってみよう
!
•callというメソッドを持っていること
•callメソッドの引数としてWebサーバからのリクエスト
を受けること
•callメソッドは以下の要素を含むレスポンスを返すこと
- ステータスコード
- レスポンスヘッダ(Hash)
- レスポ...
Rackアプリを作ってみよう
class RackApp
def call(env)
[200, {'Content-Type' => 'text/html'}, ["Hello, Rack world!"]]
end
end
 
run Ra...
3. Rackミドルウェアを
作ってみよう
Rackミドルウェア
Rackに対応したアプリケーションに
機能を追加するためのミドルウェア
!
•Rackアプリケーションの仕様を満たしていること
•newの第一引数に他のRackアプリケーションを取ること
Rackミドルウェアを作ってみよう
class UpcaseAll
def initialize(app)
@app = app
end
 
def call(env)
code, headers, body = @app.call(env)
...
Rackミドルウェアの入れ子構造
よく使うRackライブラリ
•Rack::Request
- リクエストを扱いやすくしてくれるラッパー
•Rack::Response
- レスポンスを扱いやすくしてくれるラッパー
•Rack::URLMap
- パスに応じてリクエストを振り分...
【演習】
!
これまで学んだことを踏まえて、
オリジナルのRackミドルウェアを作ってみよう
5. Gemにしてみよう
Gemの作り方
require "my_first_gem/version"
 
module MyFirstGem
class UpcaseAll
#...
end
end
$ bundle gem my_first_gem
1. Gemの雛...
【演習】
!
自作したGemをgeminaboxにアップして、
他人が作ったGemもインストールしてみよう
6. Unicornで動かしてみよう
Unicornの使い方
worker_processes 2
listen 9292
stderr_path File.expand_path('unicorn.log', File.dirname(__FILE__))
stdout_path...
Próxima SlideShare
Cargando en…5
×

そうだRack作ろう。

4.584 visualizaciones

Publicado el

社内勉強会用のスライド。

Publicado en: Ingeniería
  • Inicia sesión para ver los comentarios

そうだRack作ろう。

  1. 1. そ う だ R a c k 作 ろ う。
  2. 2. Today s Goal • Rackとは何か理解する • Rackアプリ/ミドルウェアを作れるようになる
  3. 3. Agenda 1. Rackとは 2. Rackアプリを作ってみよう 3. Rackミドルウェアを作ってみよう 4. Gemにしてみよう(おまけ) 5. Unicornで動かしてみよう(おまけ)
  4. 4. 1. Rackとは
  5. 5. Rackとは RubyをサポートするWeb(AP)サーバと Rubyフレームワークとをつなぐ規約 (PythonのWSGIを元に提案された)
  6. 6. Rackの役割 Passenger Unicorn Thin Mongrel Rails Sinatra Ramaze Merb Application ServerFramework インターフェースの統一により、 フレームワーク/APサーバ間の組み合わせを自由にする
  7. 7. 2. Rackアプリを作ってみよう
  8. 8. ! •callというメソッドを持っていること •callメソッドの引数としてWebサーバからのリクエスト を受けること •callメソッドは以下の要素を含むレスポンスを返すこと - ステータスコード - レスポンスヘッダ(Hash) - レスポンスボディ(Array) Rackアプリケーション
  9. 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. 10. 3. Rackミドルウェアを 作ってみよう
  11. 11. Rackミドルウェア Rackに対応したアプリケーションに 機能を追加するためのミドルウェア ! •Rackアプリケーションの仕様を満たしていること •newの第一引数に他のRackアプリケーションを取ること
  12. 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. 13. Rackミドルウェアの入れ子構造
  14. 14. よく使うRackライブラリ •Rack::Request - リクエストを扱いやすくしてくれるラッパー •Rack::Response - レスポンスを扱いやすくしてくれるラッパー •Rack::URLMap - パスに応じてリクエストを振り分けてくれるアプリケーション ! ‣参考:http://route477.net/w/RackReferenceJa.html
  15. 15. 【演習】 ! これまで学んだことを踏まえて、 オリジナルのRackミドルウェアを作ってみよう
  16. 16. 5. Gemにしてみよう
  17. 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. 18. 【演習】 ! 自作したGemをgeminaboxにアップして、 他人が作ったGemもインストールしてみよう
  19. 19. 6. Unicornで動かしてみよう
  20. 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

×