Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
そうだ Rack 作ろう。
Search
rince
July 30, 2014
Programming
2
110
そうだ Rack 作ろう。
社内勉強会でRackについて説明した際の資料です。
rince
July 30, 2014
Tweet
Share
More Decks by rince
See All by rince
エンジニアが加速させるプロダクトディスカバリー 〜最速で価値ある機能を見つける方法〜 / product discovery accelerated by engineers
rince
3
830
あらゆる商品を扱う商品データベースを再設計した話 / product db re-architecture
rince
11
6.4k
Elasticsearch入門 〜前編〜
rince
0
310
Railsで海外9ヵ国にサービス展開している話 / Rails i18n
rince
2
1.9k
ActiveSupport::Concern で学ぶRuby
rince
1
320
Railsを6年間やってきたぼくが最近Railsでハマったこと
rince
3
570
プロジェクトをまたいだIssue管理
rince
0
2.3k
Lean Startup
rince
0
200
Yahoo!主催のOpenHackDayJapanに参加してJAXA賞をいただきました
rince
0
150
Other Decks in Programming
See All in Programming
第9回 情シス転職ミートアップ 株式会社IVRy(アイブリー)の紹介
ivry_presentationmaterials
1
190
GraphRAGの仕組みまるわかり
tosuri13
7
440
エンジニア向け採用ピッチ資料
inusan
0
140
AWS CDKの推しポイント 〜CloudFormationと比較してみた〜
akihisaikeda
3
280
つよそうにふるまい、つよい成果を出すのなら、つよいのかもしれない
irof
1
290
統一感のある Go コードを生成 AI の力で手にいれる
otakakot
0
3k
レガシーシステムの機能調査・開発におけるAI利活用
takuya_ohtonari
0
610
GoのGenericsによるslice操作との付き合い方
syumai
2
670
FormFlow - Build Stunning Multistep Forms
yceruto
1
190
機械学習って何? 5分で解説頑張ってみる
kuroneko2828
0
220
Kotlin エンジニアへ送る:Swift 案件に参加させられる日に備えて~似てるけど色々違う Swift の仕様 / from Kotlin to Swift
lovee
1
240
Spring gRPC で始める gRPC 入門 / Introduction to gRPC with Spring gRPC
mackey0225
2
520
Featured
See All Featured
Code Review Best Practice
trishagee
68
18k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
32
5.9k
Agile that works and the tools we love
rasmusluckow
329
21k
Speed Design
sergeychernyshev
31
1k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
790
The World Runs on Bad Software
bkeepers
PRO
68
11k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Bash Introduction
62gerente
614
210k
Writing Fast Ruby
sferik
628
61k
Transcript
ͦ ͏ ͩ R a c k ࡞ Ζ ͏
ɻ
5PEBZ`T(PBM w 3BDLͱԿ͔ཧղ͢Δ w 3BDLΞϓϦϛυϧΣΞΛ࡞ΕΔΑ͏ʹͳΔ
"HFOEB 3BDLͱ 3BDLΞϓϦΛ࡞ͬͯΈΑ͏ 3BDLϛυϧΣΞΛ࡞ͬͯΈΑ͏ (FNʹͯ͠ΈΑ͏ʢ͓·͚ʣ
6OJDPSOͰಈ͔ͯ͠ΈΑ͏ʢ͓·͚ʣ
3BDLͱ
3BDLͱ 3VCZΛαϙʔτ͢Δ8FC "1 αʔόͱ 3VCZϑϨʔϜϫʔΫͱΛͭͳ͙ن 1ZUIPOͷ84(*ΛݩʹఏҊ͞Εͨ
3BDLͷׂ Passenger Unicorn Thin Mongrel Rails Sinatra Ramaze Merb Application
Server Framework ΠϯλʔϑΣʔεͷ౷ҰʹΑΓɺ ϑϨʔϜϫʔΫʗAPαʔόؒͷΈ߹ΘͤΛࣗ༝ʹ͢Δ
3BDLΞϓϦΛ࡞ͬͯΈΑ͏
! wDBMMͱ͍͏ϝιουΛ͍࣋ͬͯΔ͜ͱ wDBMMϝιουͷҾͱͯ͠8FCαʔό͔ΒͷϦΫΤετ Λड͚Δ͜ͱ wDBMMϝιουҎԼͷཁૉΛؚΉϨεϙϯεΛฦ͢͜ͱ εςʔλείʔυ Ϩεϙϯεϔομʢ)BTIʣ
ϨεϙϯεϘσΟʢ"SSBZʣ 3BDLΞϓϦέʔγϣϯ
3BDLΞϓϦΛ࡞ͬͯΈΑ͏ class RackApp def call(env) [200, {'Content-Type' => 'text/html'}, ["Hello,
Rack world!"]] end end run RackApp.new DPOpHSV ! $ rackup config.ru
3BDLϛυϧΣΞΛ ࡞ͬͯΈΑ͏
3BDLϛυϧΣΞ 3BDLʹରԠͨ͠ΞϓϦέʔγϣϯʹ ػೳΛՃ͢ΔͨΊͷϛυϧΣΞ ! w3BDLΞϓϦέʔγϣϯͷ༷Λຬ͍ͨͯ͠Δ͜ͱ wOFXͷୈҰҾʹଞͷ3BDLΞϓϦέʔγϣϯΛऔΔ͜ͱ
3BDLϛυϧΣΞΛ࡞ͬͯΈΑ͏ 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 DPOpHSV
3BDLϛυϧΣΞͷೖΕࢠߏ
Α͘͏3BDLϥΠϒϥϦ w3BDL3FRVFTU ϦΫΤετΛѻ͍ͯ͘͘͢͠ΕΔϥούʔ w3BDL3FTQPOTF ϨεϙϯεΛѻ͍ͯ͘͘͢͠ΕΔϥούʔ w3BDL63-.BQ ύεʹԠͯ͡ϦΫΤετΛৼΓ͚ͯ͘ΕΔΞϓϦέʔγϣϯ ! ‣ࢀߟɿIUUQSPVUFOFUX3BDL3FGFSFODF+BIUNM
ʲԋशʳ ! ͜Ε·ͰֶΜͩ͜ͱΛ౿·͑ͯɺ ΦϦδφϧͷ3BDLϛυϧΣΞΛ࡞ͬͯΈΑ͏
(FNʹͯ͠ΈΑ͏
(FNͷ࡞Γํ require "my_first_gem/version" module MyFirstGem class UpcaseAll #... end end
$ bundle gem my_first_gem (FNͷܗΛ࡞Δ ֓ཁΛHFNTQFDʹॻ͘ ϥΠϒϥϦΛॻ͘ (FNΛϏϧυ͢Δ $ rake build
ʲԋशʳ ! ࣗ࡞ͨ͠(FNΛHFNJOBCPYʹΞοϓͯ͠ɺ ଞਓ͕࡞ͬͨ(FNΠϯετʔϧͯ͠ΈΑ͏
6OJDPSOͰಈ͔ͯ͠ΈΑ͏
6OJDPSOͷ͍ํ 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 6OJDPSOΛΠϯετʔϧ ઃఆϑΝΠϧʢVOJDPSODPOGʣΛ༻ҙ͢Δ 6OJDPSOΛىಈ͢Δ 6OJDPSOΛఀࢭ͢Δ $ kill -QUIT `cat unicorn.pid` $ unicorn -c unicorn.conf -D