Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Crafting Rails Culture
SHIBATA Hiroshi
September 27, 2014
Technology
1
720
Crafting Rails Culture
SHIBATA Hiroshi
September 27, 2014
Tweet
Share
More Decks by SHIBATA Hiroshi
See All by SHIBATA Hiroshi
OSS ことはじめ
hsbt
3
580
GMO DevNight 05 在宅勤務開始から2ヶ月でやったこと
hsbt
1
190
Development Environment 2019
hsbt
1
160
How to become the Psychic
hsbt
0
1.2k
Software Development
hsbt
0
5.5k
Social Inclusion for Engineering Organization
hsbt
0
610
YAPC::Tokyo 2019 GMOペパボ会社紹介
hsbt
0
380
20181215-snapcraftsummit.pdf
hsbt
0
18
Productive Organization with Ruby
hsbt
0
130
Other Decks in Technology
See All in Technology
アルプでのAgile Testing / Alp Agile Testing
nametake
0
280
Oracle Database Technology Night #55 Oracle Autonomous Database 再入門
oracle4engineer
PRO
1
140
A1A会社紹介資料-2022-05-20
a1a
2
1.1k
AWS ChatbotでEC2インスタンスを 起動できるようにした
iwamot
0
170
モダンデータスタックとかの話(データエンジニアのお仕事とは)
foursue
0
470
失敗を経験したあなたへ〜建設的なインシデントの振り返りを行うために実践するべきこと〜
nobuakikikuchi
0
210
[SRE NEXT 2022]組織に対してSREを適用するとはどういうことか
srenext
0
410
LINEスタンプの実例紹介 小さく始める障害検知・対応・振り返りの 改善プラクティス
line_developers
PRO
3
1.8k
HTTP Session Architecture Pattern
chiroito
1
410
1年間のポストモーテム運用とそこから生まれたツール sre-advisor / SRE NEXT 2022
fujiwara3
6
3.5k
Agile and Requirement : アジャイルな要件定義について考える
kawaguti
PRO
9
3.5k
Stripe Search APIを利用した、LINEとStripeの顧客情報連携/line-dc-202205
stripehideokamoto
0
130
Featured
See All Featured
Thoughts on Productivity
jonyablonski
43
2.2k
A better future with KSS
kneath
225
15k
Debugging Ruby Performance
tmm1
65
10k
Principles of Awesome APIs and How to Build Them.
keavy
113
15k
A designer walks into a library…
pauljervisheath
196
16k
The Cult of Friendly URLs
andyhume
68
4.7k
The Invisible Customer
myddelton
110
11k
For a Future-Friendly Web
brad_frost
164
7.4k
Teambox: Starting and Learning
jrom
121
7.6k
In The Pink: A Labor of Love
frogandcode
130
21k
Mobile First: as difficult as doing things right
swwweet
212
7.5k
Fashionably flexible responsive web design (full day workshop)
malarkey
396
62k
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