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
まだRailsで消耗してるの?
Search
h3poteto
October 25, 2016
Programming
7
4.8k
まだRailsで消耗してるの?
https://cw-meetup.doorkeeper.jp/events/52879
での発表資料
h3poteto
October 25, 2016
Tweet
Share
More Decks by h3poteto
See All by h3poteto
EKS on Fargateは最高のJob基盤 / jawsug_bgnr
h3poteto
1
970
Kubernetes上で単発のジョブを実行するkube-jobというツールを作った / kubernetesmeetuptokyo22
h3poteto
6
8.2k
Electronによるアプリケーション開発事情2018 / builderscon2018
h3poteto
9
9.9k
fluentdサーバをchefで構築するの辛かったけどDockerも別に救世主じゃなかった / tokyu ruby kaigi 12
h3poteto
0
4.5k
ECSのサービスをslack botでデプロイする // ecs-goploy
h3poteto
1
5.3k
阿澄佳奈と昇竜拳
h3poteto
1
500
Other Decks in Programming
See All in Programming
Cloudflare Realtime と Workers でつくるサーバーレス WebRTC
nekoya3
0
230
Efficiency and Rock 'n’ Roll (Really!)
hollycummins
0
600
Building an Application with TDD, DDD and Hexagonal Architecture - Isn't it a bit too much?
mufrid
0
370
技術懸念に立ち向かい 法改正を穏便に乗り切った話
pop_cashew
0
820
Javaのルールをねじ曲げろ!禁断の操作とその代償から学ぶメタプログラミング入門 / A Guide to Metaprogramming: Lessons from Forbidden Techniques and Their Price
nrslib
1
240
CQRS/ESのクラスとシステムフロー ~ RailsでフルスクラッチでCQRSESを組んで みたことから得た学び~
suzukimar
0
190
テスト分析入門/Test Analysis Tutorial
goyoki
11
2.7k
TypeScript Language Service Plugin で CSS Modules の開発体験を改善する
mizdra
PRO
3
2.4k
TypeScriptのmoduleオプションを改めて整理する
bicstone
4
420
推論された型の移植性エラーTS2742に挑む
teamlab
PRO
0
150
クラシルリワードにおける iOSアプリ開発の取り組み
funzin
1
810
Blueskyのプラグインを作ってみた
hakkadaikon
1
290
Featured
See All Featured
A Tale of Four Properties
chriscoyier
159
23k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
750
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
5
620
The Straight Up "How To Draw Better" Workshop
denniskardys
233
140k
The Power of CSS Pseudo Elements
geoffreycrofte
76
5.8k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Music & Morning Musume
bryan
47
6.6k
The Cost Of JavaScript in 2023
addyosmani
49
8.1k
How to Ace a Technical Interview
jacobian
276
23k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
21k
Transcript
·ͩRailsͰ ফͯ͠Δͷʁ @h3_poteto
About me • ౡ ໌ • CrowdWorksͷRailsΤϯδχΞ • github: h3poteto
• twitter: h3_poteto • ͖: ѨՂಸ
·ͩRailsͰ ফͯ͠Δͷʁ
ಥવͰ͕͢ɺ RailsͭΒ͘ͳ͍ʁ
CrowdWorksͷRails ͭΒ͍Ͱ͢
࠷ۙͷݴಈ • ͜ΕΠϯλʔϑΣʔεΛఆ͍͚ٛͨͩͩ͠ΑͶʁ • ͳΜͰԿҕৡ͠ͳ͍ͷʹϙϦϞʔϑΟοΫʁ • ໊લม͑Δͱ͔Өڹൣғ͗ͯ͢ແཧ • ͬͺܕ͡ΌͶʁ
ʊਓਓਓਓਓਓਓਓʊ ʼɹܕ͡ΌͶʁʂɹʻ ʉ̮̮̮̮̮̮̮̮
goͷ͔ͳʁ
elixirͷ͠·͢
͋Μ·Γਂ͍͠ͳ͍Ͱ͢
RailsΤϯδχΞͷͨΊͷ Phoenixೖ
elixirͬͯʁ
elixir • ErlangVM্Ͱಈ͘ • ؔܕ • rubyΈ͍ͨͳγϯλοΫε
phoenixͬͯʁ
phoenix • elixirͷwebϑϨʔϜϫʔΫ • ͍͍ͩͨRails
ҰԠίϯύΠϧ͞Ε·͢
ܕͳ͍
RailsͰ͍͏˓˓ Ͳ͏Δͷʁ
bundler
mix͍ͬͯ͏ͷ͕͋Δ • bundler, rakeΛ߹ΘͤͨΈ͍ͨͳ • mix —help͢ΔͱԿ͕Ͱ͖Δ͔ݟ͑Δ
Gemfile
mix.exs • ґଘ͢Δhex(rubygems)Λॻ͘ • mix deps.getͯ͠Πϯετʔϧ • lockϑΝΠϧ࡞ΒΕΔ(mix.lock)
mix.exs
mix phoenix.newͨ͠Β ܗ࡞ͬͯ͘Ε·͢
mix phoenix.new
mix phoenix.server
mix phoenix.server • js, cssͷίϯύΠϧಉ࣌ʹͯ͘͠ΕΔ • devͰLive reloadͯ͘͠ΕΔ
generate
generate • mix phoenix.gen.model ( rails g model ) •
mix phoenix.gen.html ( rails g scaffold ) • σΟϨΫτϦߏ͍͍ͩͨRails
σΟϨΫτϦߏ
ActiveRecord
Ecto • elixirͷORM • ͪΐͬͱػೳͷগͳ͍ActiveRecord • has_many, has_one, belongs_to͑Δ
Ecto • schemaͱ͍͏ͷΛఆٛ͢Δ
Ecto • where, order, preload
routing
router.ex • mix phoenix.routesͰ֬ೝͰ͖Δ • จ๏΄΅Rails
controller, view(template)
΄ͱΜͲRailsͩΖ͜Ε
eex(erb)
ςετ
ExUnit • phoenixʹඪ४Ͱ͍ͭͯ͘Δςετ • Ϣχοτςετ͕Ͱ͖Δ • setup, setup_allʢRSpecͷbeforeͱͪΐͬ ͱҧ͏ •
describe͋Δ
ESpec • RSpecΈ͍ͨͳ…… • จ๏΄΅RSpec • before, let, describe, context…
ESpec
خ͔ͬͨ͜͠ͱ
sprockets͕ͳ͍
Sprocketsͱ͍͑…… • node͕ϝδϟʔ͡Όͳ͍࣌ʹΑ͘ؤுͬͨ • helperͱͷ૬ੑྑ͍ • precompileͯ͘͠ΕΔ
Ͱ࠷ۙͭΒ͍
ES6͍͍ͨ
React͍͍ͨ
browserifyͲ͏͠Α͏
npm͕͍͍……
None
phoenixͷϑϩϯτΤϯυ • npmʹ͔ͬΔ • branchͰτϥϯεύΠϧ͍ͯ͠Δ • gulpͱ͔webpackʹมߋՄೳ
phoenixͷϑϩϯτΤϯυ • devͰมߋݕʴLive Reload • mix phoenix.serverίϚϯυͰશ෦ͬͯ͘Ε Δ • ຊ൪༻ʹɺmix
phoenix.digest ( assets:precompile )
ඇಉظॲཧ
RailsͰඇಉظॲཧͬͯʁ • DelayedJobʢCrowdWorksͰͬͯΔ • Resque • Sidekiq • ShoryukenʢCrowdWorksͰͬͯΔ
͍ͣΕʹͯ͠ ϫʔΧʔΛผϓϩηεͰཱͪ ্͓͛ͯ͘
Ωϡʔredisͱ͔ࣗͰ ༻ҙ͢Δ
elixirͷඇಉظॲཧ • ͦͦܰྔϓϩηεͰಈ͍ͯΔ • OTP(actorͬΆ͍ͭ) • ৽͍͠ϓϩηε্ཱͪ͛ͯɺϝοηʔδΛૹ Ζ͏
elixirͷඇಉظॲཧ • Taskͱ͔Agentͱ͍͏ͷ͕ͦͦ༻ҙ͞Εͯ ͍Δ • όοΫάϥϯυॲཧΛ͚ͨ͠ΕTaskʹ ͛Δ͚ͩ
elixirͷඇಉظॲཧ • ݁ՌΛͪड͚Δ͜ͱͰ͖Δʢͨͳͯ͘ ͍͍
elixirͷඇಉظॲཧ • ϓϩηεͷϦϯΫ • ࢠ͕ࢮΜͩͱ͖ʹࢮ͵ • ࢠ͕ࢮΜͰԿΒ͞Εͳ͍ • ࢠ͕ࢮΜͩΒʹ௨͚ͩߦ͘
RailsʹൺΔͱ • ΩϡʔͷཧΛ͠ͳ͍͍ͯ͘ • sidekiqͱ͔ϓϩηεΛੜ͔͢͜ͱʹؾΛΘ ͳ͍͍ͯ͘ • ͦͦRailsͬͯͦ͜·ͰεϨουηʔϑ ͡Όͳ͍Ͱ͠ΐ
shoryukenͷίϛολʔͱઓ Θͳ͍͍ͯ͘!!!
ϙϦϞʔϑΟοΫ
RailsͷϙϦϞʔϑΟοΫ • ActiveRecord͕༻ҙͯ͘͠ΕͯΔ • **able_id, **able_typeͰDBςʔϒϧͷؔ࿈Λ ࡞ͬͯ͘ΕΔ
ศརͳ͜ͱ͋Δ
Ͱ୯७ʹΫϥεʹ ΠϯλʔϑΣʔεΛఆٛͨ͠ ͍ͱ͖͋Δ
elixirͷprotocol • protocol͕ఆٛͰ͖Δ • ͷΠϯλʔϑΣʔεͩΑʂʂʂ
ظ
modelͱschema ͢ΔͬͯΑ
None
RailsͰݴ͏ͱɺ model͕ActiveRecord͔Β Γ͞ΕΔ
ࣾαʔϏε࡞ͬͯΔ
None
Yadockeri • ࣾherokuΈ͍ͨͳ • CrowdWorksͷDockerίϯςφΛDocker swarm্ʹσϓϩΠ͢Δ • WebUIͱAPIΛ࡞
·ͱΊ • ͋·Γ෭࡞༻ͷ͋ΔϝιουΛॻ͘ؾʹͳΕ ͳ͍ • ΦϒδΣΫτͱ͔ͳ͍͠Ͷʂ • ͰτϥϯβΫγϣϯॻ͖࢝ΊΔͱؔײθϩ • sprocketsͳͲͳ͍ɺશ෦npmͩʂ
͓ΘΓ