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
900
あらゆる商品を扱う商品データベースを再設計した話 / 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
580
プロジェクトをまたいだIssue管理
rince
0
2.3k
Lean Startup
rince
0
200
Yahoo!主催のOpenHackDayJapanに参加してJAXA賞をいただきました
rince
0
160
Other Decks in Programming
See All in Programming
CSC305 Summer Lecture 12
javiergs
PRO
0
110
オープンセミナー2025@広島LT技術ブログを続けるには
satoshi256kbyte
0
120
技術的負債で信頼性が限界だったWordPress運用をShifterで完全復活させた話
rvirus0817
1
2.1k
CEDEC 2025 『ゲームにおけるリアルタイム通信への QUIC導入事例の紹介』
segadevtech
3
970
Terraform やるなら公式スタイルガイドを読もう 〜重要項目 10選〜
hiyanger
13
3.2k
CEDEC2025 長期運営ゲームをあと10年続けるための0から始める自動テスト ~4000項目を50%自動化し、月1→毎日実行にした3年間~
akatsukigames_tech
0
150
未来を拓くAI技術〜エージェント開発とAI駆動開発〜
leveragestech
2
180
新世界の理解
koriym
0
140
20250808_AIAgent勉強会_ClaudeCodeデータ分析の実運用〜競馬を題材に回収率100%の先を目指すメソッドとは〜
kkakeru
0
200
AWS Serverless Application Model入門_20250708
smatsuzaki
0
130
tool ディレクティブを導入してみた感想
sgash708
1
150
Google I/O recap web編 大分Web祭り2025
kponda
0
2.9k
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
GitHub's CSS Performance
jonrohan
1031
460k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
Gamification - CAS2011
davidbonilla
81
5.4k
Rebuilding a faster, lazier Slack
samanthasiow
83
9.1k
RailsConf 2023
tenderlove
30
1.2k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
183
54k
Thoughts on Productivity
jonyablonski
69
4.8k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.4k
Docker and Python
trallard
45
3.5k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
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