SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
そ
う
だ
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)
- レスポンスボディ(Array)
Rackアプリケーション
Rackアプリを作ってみよう
class RackApp
def call(env)
[200, {'Content-Type' => 'text/html'}, ["Hello, Rack world!"]]
end
end
 
run RackApp.new
config.ru
!
$ rackup config.ru
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)
body.each {|part| part.upcase! }
[code, headers, body]
end
end
 
class RackApp
#...
end
 
use UpcaseAll
run RackApp.new
config.ru
Rackミドルウェアの入れ子構造
よく使うRackライブラリ
•Rack::Request
- リクエストを扱いやすくしてくれるラッパー
•Rack::Response
- レスポンスを扱いやすくしてくれるラッパー
•Rack::URLMap
- パスに応じてリクエストを振り分けてくれるアプリケーション
!
‣参考:http://route477.net/w/RackReferenceJa.html
【演習】
!
これまで学んだことを踏まえて、
オリジナルのRackミドルウェアを作ってみよう
5. Gemにしてみよう
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
【演習】
!
自作したGemをgeminaboxにアップして、
他人が作ったGemもインストールしてみよう
6. Unicornで動かしてみよう
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

Contenu connexe

Tendances

続マスタN対スレーブ1レプリケーションの作り方
続マスタN対スレーブ1レプリケーションの作り方続マスタN対スレーブ1レプリケーションの作り方
続マスタN対スレーブ1レプリケーションの作り方
do_aki
 
Azure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーションAzure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーション
Masashi Shinbara
 
Riak Search 2.0を使ったデータ集計
Riak Search 2.0を使ったデータ集計Riak Search 2.0を使ったデータ集計
Riak Search 2.0を使ったデータ集計
正志 坪坂
 
FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係
moai kids
 

Tendances (19)

RubyとPost Gis
RubyとPost GisRubyとPost Gis
RubyとPost Gis
 
SPA on AWS
SPA on AWSSPA on AWS
SPA on AWS
 
続マスタN対スレーブ1レプリケーションの作り方
続マスタN対スレーブ1レプリケーションの作り方続マスタN対スレーブ1レプリケーションの作り方
続マスタN対スレーブ1レプリケーションの作り方
 
Serverless frameworkでお手軽lambda運用 at #nseg #93
Serverless frameworkでお手軽lambda運用 at #nseg #93Serverless frameworkでお手軽lambda運用 at #nseg #93
Serverless frameworkでお手軽lambda運用 at #nseg #93
 
Serverless frameworkを使ってみた話 at #nseg #90
Serverless frameworkを使ってみた話 at #nseg #90Serverless frameworkを使ってみた話 at #nseg #90
Serverless frameworkを使ってみた話 at #nseg #90
 
超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
 
AWS Lambda を使ってみた話 at づや会Vol.3
AWS Lambda を使ってみた話 at  づや会Vol.3AWS Lambda を使ってみた話 at  づや会Vol.3
AWS Lambda を使ってみた話 at づや会Vol.3
 
Azure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーションAzure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーション
 
わかってるフレームワーク Laravel
わかってるフレームワーク Laravelわかってるフレームワーク Laravel
わかってるフレームワーク Laravel
 
DBMoto v9 新機能
DBMoto v9 新機能DBMoto v9 新機能
DBMoto v9 新機能
 
スキーマつきストリーム データ処理基盤、 Confluent Platformとは?
スキーマつきストリーム データ処理基盤、 Confluent Platformとは?スキーマつきストリーム データ処理基盤、 Confluent Platformとは?
スキーマつきストリーム データ処理基盤、 Confluent Platformとは?
 
Riak Search 2.0を使ったデータ集計
Riak Search 2.0を使ったデータ集計Riak Search 2.0を使ったデータ集計
Riak Search 2.0を使ったデータ集計
 
U1 lt120119
U1 lt120119U1 lt120119
U1 lt120119
 
スモールサービスにおけるCloudFrontの真骨頂
スモールサービスにおけるCloudFrontの真骨頂スモールサービスにおけるCloudFrontの真骨頂
スモールサービスにおけるCloudFrontの真骨頂
 
DBMotoで異種間DBらくらく移行 Auroraも使っちゃうよ! - JAWS-UG Kyoto 第5回勉強会
DBMotoで異種間DBらくらく移行 Auroraも使っちゃうよ! - JAWS-UG Kyoto 第5回勉強会DBMotoで異種間DBらくらく移行 Auroraも使っちゃうよ! - JAWS-UG Kyoto 第5回勉強会
DBMotoで異種間DBらくらく移行 Auroraも使っちゃうよ! - JAWS-UG Kyoto 第5回勉強会
 
FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係
 
LINE Engineerを支える CaaS基盤の今とこれから
LINE Engineerを支える CaaS基盤の今とこれからLINE Engineerを支える CaaS基盤の今とこれから
LINE Engineerを支える CaaS基盤の今とこれから
 
CloudFront
CloudFrontCloudFront
CloudFront
 
Lambdaによるクラウド型言語の実装
Lambdaによるクラウド型言語の実装Lambdaによるクラウド型言語の実装
Lambdaによるクラウド型言語の実装
 

Similaire à そうだRack作ろう。

Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionRails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
Goh Matsumoto
 
クラウドカンファレンスIn静岡 r cloud
クラウドカンファレンスIn静岡 r cloudクラウドカンファレンスIn静岡 r cloud
クラウドカンファレンスIn静岡 r cloud
Kazuki Aranami
 
Railsの運用について
Railsの運用についてRailsの運用について
Railsの運用について
Yuuki Namikawa
 
Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】
Kikunaga Taishi
 
Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」
Takuya ASADA
 
Whats new Apache CloudStack
Whats new Apache CloudStackWhats new Apache CloudStack
Whats new Apache CloudStack
Kimihiko Kitase
 
RailsとCで広告システムを作って起業した話
RailsとCで広告システムを作って起業した話RailsとCで広告システムを作って起業した話
RailsとCで広告システムを作って起業した話
Daisuke Yamazaki
 

Similaire à そうだRack作ろう。 (20)

Sinatra hijacker
Sinatra hijackerSinatra hijacker
Sinatra hijacker
 
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionRails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
 
OSvの概要と実装
OSvの概要と実装OSvの概要と実装
OSvの概要と実装
 
クラウドカンファレンスIn静岡 r cloud
クラウドカンファレンスIn静岡 r cloudクラウドカンファレンスIn静岡 r cloud
クラウドカンファレンスIn静岡 r cloud
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.js
 
Jjug springセッション
Jjug springセッションJjug springセッション
Jjug springセッション
 
Railsの運用について
Railsの運用についてRailsの運用について
Railsの運用について
 
Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】
 
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscalaビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
 
Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」
 
Web技術勉強会 第31回
Web技術勉強会 第31回Web技術勉強会 第31回
Web技術勉強会 第31回
 
10.1 res tful services
10.1 res tful services10.1 res tful services
10.1 res tful services
 
Springの今
Springの今Springの今
Springの今
 
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
 
Mod mrubyについて
Mod mrubyについてMod mrubyについて
Mod mrubyについて
 
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
 
Web技術勉強会 第33回
Web技術勉強会 第33回Web技術勉強会 第33回
Web技術勉強会 第33回
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
 
Whats new Apache CloudStack
Whats new Apache CloudStackWhats new Apache CloudStack
Whats new Apache CloudStack
 
RailsとCで広告システムを作って起業した話
RailsとCで広告システムを作って起業した話RailsとCで広告システムを作って起業した話
RailsとCで広告システムを作って起業した話
 

そうだRack作ろう。