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
Crafting Rails Culture
Search
SHIBATA Hiroshi
September 27, 2014
Technology
1.2k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Crafting Rails Culture
SHIBATA Hiroshi
September 27, 2014
More Decks by SHIBATA Hiroshi
See All by SHIBATA Hiroshi
How to make faster release cycle of Ruby?
hsbt
2
6.3k
Ruby の開発を支えるエコシステム
hsbt
4
2.4k
Why is building the Ruby environment hard?
hsbt
6
8.5k
開発環境へのこだわり
hsbt
16
12k
OSS ことはじめ
hsbt
5
1.5k
GMO DevNight 05 在宅勤務開始から2ヶ月でやったこと
hsbt
2
600
Development Environment 2019
hsbt
1
380
How to become the Psychic
hsbt
0
2.1k
Software Development
hsbt
1
6.7k
Other Decks in Technology
See All in Technology
Claude Code 珍プレー好プレー
shinyasaita
0
310
地域 SRE コミュニティ最前線 / SRE NEXT 2026 Discussion Night Track C
muziyoshiz
0
200
DatabricksにおけるMCPソリューション
taka_aki
1
180
KiCAD講習会②
tutcreators
0
100
AIに「使われる」時代のSaaS戦略 〜既存WebAPIのMCPサーバー化における開発ノウハウ〜
ekispert_api
0
300
証券システムを10年Scalaで作り続けるということ - 関数型まつり2026
krrrr38
3
810
そのタスクオンスケですか?
poropinai1966
0
150
Mastraエージェント、どのクラウドにデプロイする?
minorun365
PRO
2
180
Empower GenAI with Agile - あなたのアジャイルが生成AIのバフになる仕組み
hageyahhoo
1
160
完全自律ロボットを作りたくて、先に開発を自律させた話(ROS Japan UG #63 LT)
rryz09
0
440
なぜ人は自分のプロジェクトを 「なんちゃってアジャイル」と 自嘲するのか
kozotaira
0
280
ローカルLLMとLINE Botの組み合わせ その3 / LINE DC Generative AI Meetup #8
you
PRO
0
130
Featured
See All Featured
Are puppies a ranking factor?
jonoalderson
1
3.7k
How to Talk to Developers About Accessibility
jct
2
290
Faster Mobile Websites
deanohume
310
32k
Evolving SEO for Evolving Search Engines
ryanjones
0
240
The browser strikes back
jonoalderson
0
1.4k
WCS-LA-2024
lcolladotor
0
680
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
350
Raft: Consensus for Rubyists
vanstee
141
7.6k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Accessibility Awareness
sabderemane
1
150
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Transcript
Crafting Rails Culture to Your Company Hiroshi SHIBATA @hsbt RailsPacific
Thank you!
SHIBATA Hiroshi @hsbt
Tokyo Matze
RailsGirls in Japan
asakusa.rb
RubyKaigi 2014 RubyConf Taiwan 2014 RedDotRubyConf 2014 RailsPacific OedoRubyKaigi04
Ruby Committer
ruby rubygems rake rdoc psych syck ruby-build railsgirls railsgirls-jp kaminari
tdiary hiki jenkins.rb fastladder commit bit collector
My work of Ruby 2.2.0 Update test-unit and minitest (removed
from repository but bundled in tarball) coordinate to Ruby committers negotiate to sponsors make development environment
None
None
None
None
None
None
None
None
"MPOHUJNFBHP
None
None
None
Pepabo Hosting EC Media
0WFSQFPQMF
organizations which design systems ... are constrained to produce designs
which are copies of the communication structures of these organizations — M. Conway
PHP MySQL5 PHP MySQL4 Ruby and PHP Rails MySQL5 Pepabo
ϛυϧΣΞͷΞοϓάϨʔυ ࣾ։ൃج൫ͷߏங ౷ܭج൫ͷߏங +409ͷӡ༻උ HJUIVC ηΩϡϦςΟࠪ ίʔυϨϏϡʔ ςετج൫ͷߏங ΞΫηεղੳج൫ͷߏங ։ൃϓϩηε
৽ਓڭҭ ݪߘࣥච ΧϯϑΝϨϯεൃද 044։ൃ αʔόʔߏཧͷ৽ ϦʔϯελʔτΞοϓ +FOLJOT 3VCZ3BJMT 3%#.4 ٕज़ج൫νʔϜ
Pepabo ٕज़ج൫νʔϜ PHP MySQL5 PHP MySQL4 Ruby and PHP Rails
MySQL5
Ruby Rails MySQL5 Ruby Rails MySQL5 Ruby and PHP Rails
MySQL5 Pepabo ٕज़ج൫νʔϜ
Why Ruby?
3. references Why Ruby? 2. environment 1. testing
Testing
3. rspec powerful testing framework 2. minitest 1. test-unit
Capybara
1) Failure: TestPowerAssert#test_power_assert_failed [test/test_power_assert.rb:10]: assert { "0".class == "3".to_i.times.map {|i|
i + 1 }.class } | | | | | | | | | Array | | | [1, 2, 3] | | #<Enumerator: 3:times> | 3 String Power Assert
None
1) Failure: TestPowerAssert#test_power_assert_failed [test/test_power_assert.rb:10]: assert { "0".class == "3".to_i.times.map {|i|
i + 1 }.class } | | | | | | | | | Array | | | [1, 2, 3] | | #<Enumerator: 3:times> | 3 String class TestPowerAssert < Minitest::Test def test_power_assert_failed assert { "0".class == "3".to_i.times.map {|i| i + 1 }.class } end end testcase assertion
3. run test -> fail -> detect fail reason Typical
usecase 2. add inspection code 1. run test -> fail 5. run test -> success 4. fix code
3. run test -> fail -> detect fail reason Typical
usecase 2. add inspection code 1. run test -> fail 5. run test -> fail!!! -> turn to 2 4. fix code
Typical usecase 1. run test -> fail 5. run test
-> fail!!! -> turn to 4 4. fix code 1) Failure: TestPowerAssert#test_power_assert_failed [test/test_power_assert.rb:10]: assert { "0".class == "3".to_i.times.map {|i| i + 1 }.class } | | | | | | | | | Array | | | [1, 2, 3] | | #<Enumerator: 3:times> | 3 String
None
Development Environment 2. rbenv + ruby-build 1. osx + homebrew
Many references
Rails Good Parts Why Rails?
3. admin integration Why Rails? 2. oss way 1. modern
architecture
enforce modern architecture
case.1 Ruby 1.8.6 to Ruby 2.1.2
Ruby 1.8.6 Rails 2.0.2 Ruby 2.1.3 Rails 4.1.6 new!
Ruby 1.8.6 1.8.7 1.9.3 2.0.0 2.1 Rails 2.0/2.1 2.3 3.0
3.2 4.0/4.1
KyotoTycoon to memcached case.2 replace legacy middleware
app1 app2
begin require 'dalli' rescue LoadError => e $stderr.puts "You don't
have dalli installed in your application. Please add it to your Gemfile and run bundle install" raise e end rails4 need to dalli
kyoto tycoon is slower than mysql… dalli is not support
to kyoto tycoon…
None
enforce oss way
Ruby Rails MySQL5 Ruby Rails MySQL5 Ruby and PHP Rails
MySQL5 Pepabo ٕज़ج൫νʔϜ
None
class Bar def bar(foo = foo()) foo end def buzz(foo
= foo) foo end def foo :buzz end end p Bar.new.bar p Bar.new.buzz
% ruby -v r45272.rb ruby 2.2.0dev (2014-04-13 trunk 45580) [x86_64-darwin13]
:buzz nil % ruby -v r45272.rb ruby 2.1.2p80 (2014-03-01 revision 45231) [x86_64-darwin13.0] :buzz :buzz
None
admin integration
3. no console What’s admin? 2. payment/refund 1. customer support
organizations which design systems ... are constrained to produce designs
which are copies of the communication structures of these organizations — M. Conway
Developer Director Customer Support Our Typical Team
VONBJOUBJOFEʜ
3. other app better admin 2. Rails Engine 1. app
internal
app internal pros better testing better deploy cons including difference
application including effective code
Rails Engine pros splitting application code better deploy cons difficulty
testing can’t use production code directly
Other app pros definitely splitting app cons separated develop cycle
duplicated code
No silver bullet
Rails like a php MySQL5 Rails like a java MySQL5
Rails like a php MySQL5 Optimize Your Company ٕज़ج൫νʔϜ
Lern to Rails Internal step by step
Lern to Active Record Internal
github workflow
ChatOps github issue costomer’s contact nagios
DevOps
Go to the next 10 years