List

Crafting Rails Culture

Crafting Rails Culture

by Shibata Hiroshi

The video titled "Crafting Rails Culture" features Shibata Hiroshi at the Rails Pacific 2014 event, where he discusses the significance of Ruby on Rails and the development environment surrounding it. The main theme centers on enhancing product development through the adoption of Ruby and Rails in various organizational practices.

Key points from the presentation include:
- Introduction of Ruby and Rails in Japan: Hiroshi introduces his background and contributions to the Ruby community in Japan, emphasizing his role in various Ruby meetups and projects.
- Benefits of Using Ruby: Three primary reasons for adopting Ruby are outlined: 1) Effective testing frameworks that outperform those in other languages. 2) A conducive environment for smooth development processes. 3) The availability of substantial resources in the Japanese language, facilitating learning and growth.
- Transitioning to Modern Architecture: Hiroshi discusses his company’s journey in upgrading legacy systems to modern technologies, highlighting the challenges and successes encountered during these transitions. He shares experiences with middleware changes and the advantages of upgrading the Ruby and Rails versions for better performance and security.
- OSS Culture: The importance of open source software contributions is emphasized as key for team development and project success. He mentions how the company’s structure allows for independent divisions to focus on their strategies while still collaborating effectively.
- Adopting Rails for Future Growth: Hiroshi underscores the need for knowledge sharing and continuous improvement within teams to avoid stagnation in development practices. He shares resources, such as recommended reading, to enhance understanding of Rails culture among developers.
- Long-term Vision: The talk ends with a call to action for adopting best practices in using Rails to ensure sustainable growth and quality in programming services.

The main takeaways focus on leveraging Ruby and Rails for enhancing productivity and fostering a collaborative development environment, while emphasizing the importance of upgrading technology, contributing to open source, and continuous learning and adaptation within teams.

Rails Pacific 2014

00:00:13.000 yes hello everyone so thank you for
00:00:15.679 inviting me so I and my wife are Rob
00:00:19.359 Taiwan yeah my name is Hiro shata my my
00:00:23.680 account name of Gan and Twitter are in
00:00:27.320 alphabetical for characters hsbt
00:00:31.080 yeah please follow me uh I came from
00:00:35.680 Tokyo this place is a mat so this city
00:00:40.559 is best place of Ruby and mats so we
00:00:43.800 call the
00:00:45.640 mat I'm one of organizers in ra girls
00:00:51.559 Japan and I'm member of asex RV asex RV
00:00:57.199 is the most active Meetup Group in Japan
00:01:01.199 we are talking about Ruby every Tuesday
00:01:04.519 if you arrive Tokyo at Tuesday please
00:01:08.240 mention to mataan or me we will pick to
00:01:12.119 you for our
00:01:14.720 Meetup I took many topics in Ruby
00:01:18.200 conference around Asia Pacific region
00:01:21.680 when I hear about raise past week I are
00:01:25.960 very excited and decided to go eat I I
00:01:30.079 think we need to communication with Ruby
00:01:32.799 and rers together in Pacific
00:01:36.880 region so I'm sh
00:01:40.119 Comm I prevent that Ruby break RA and
00:01:44.479 our application every day sometimes I
00:01:47.960 fix Ruby and fix raids and fix Ruby
00:01:52.200 James and
00:01:54.560 more uh and I'm a commit withit
00:01:58.280 corrector I'm Main to these gems and
00:02:02.280 applications Ruby and ruby gems like AR
00:02:05.680 py Ruby beard and
00:02:10.200 Etc this list is my work in Ruby
00:02:15.879 2.2 it's not only to write the code of
00:02:19.680 Ruby I'm improving to develop a produc
00:02:22.800 ability and the programming experience
00:02:25.760 with Ruby and ra
00:02:30.360 I prepared web and build servers for
00:02:33.599 Ruby com and Ruby
00:02:35.519 users uh this is website of Ruby
00:02:39.480 languages
00:02:41.200 so in this place fito is there yeah he
00:02:46.239 is uh translation to English uh English
00:02:49.959 to uh Chinese uh thank you so
00:02:54.519 much
00:02:56.080 uh this is a issor and to
00:03:01.319 Ruby this is our fastest document
00:03:04.959 Searcher Ruby
00:03:07.799 documentation this is a distributed
00:03:10.200 packet site of
00:03:12.120 rby so I'll introduce the companies that
00:03:15.400 support Ruby hero and iig has provided
00:03:21.280 website of Ru
00:03:24.360 rangor I'm offering CDM to fastory with
00:03:29.480 r or so you can download Ruby packages
00:03:33.680 to fast outside Japan VI
00:03:36.959 fastory Global sign provided Wild Card
00:03:40.959 certificate to us thanks to her thanks
00:03:45.400 to Richard iig fastory Global sign thank
00:03:49.640 you this is our
00:03:52.760 ruci ruci is uh build Ruby every comit
00:03:58.079 we C code quality with major reux and
00:04:01.280 BSD and
00:04:03.360 windows Ruby Shia is supported by Ruby
00:04:06.640 Association and Microsoft Ruby
00:04:09.519 Association was founded to further
00:04:11.760 development of the programming language
00:04:15.320 Ruby Microsoft provides aure platform
00:04:19.560 for building Ruby binaries thank you so
00:04:23.080 Ruby Association and
00:04:25.240 Microsoft
00:04:27.160 and it's last so it's s mod dashboard of
00:04:31.639 Ruby rank or I watch s status with this
00:04:36.440 dashboard this m is named mael mael is
00:04:42.360 developed by haa haa is web service
00:04:46.160 company in Japan and provide free plan
00:04:49.320 for
00:04:51.280 us so uh I'm working in GMO Pap we
00:04:56.919 provide service hosting BR service
00:04:59.120 shoppingall service Etc we have a lot of
00:05:03.000 web
00:05:04.240 service our company has continued to go
00:05:07.320 from Web
00:05:09.600 2.0 we provide hosting service and
00:05:12.759 domain registration service it's a first
00:05:16.560 category next category is e-commerce
00:05:19.840 service this service this service name
00:05:23.960 sui sui allow you to create your own
00:05:27.120 t-shirts with your orig ustation or
00:05:32.720 photos last category is CGM Services we
00:05:37.319 are running photo sharing service named
00:05:40.039 30 days AR this service concept is
00:05:44.000 private photo
00:05:46.000 sharing uh so these service build by
00:05:51.880 rails our company are consist that of
00:05:56.240 independent
00:05:57.440 divisions the service department can can
00:05:59.840 make their strategy on
00:06:02.120 themselves uh advantage of our
00:06:05.319 organization is that they can tune to
00:06:08.840 their
00:06:10.800 category our company are gr now my
00:06:14.319 collect number get to cost to 300 people
00:06:19.080 now well do you know the water roow of
00:06:25.000 convey the system architecture has
00:06:27.759 evolved around the way of
00:06:30.319 organization each systems and related
00:06:33.400 each others some service uses PHP some
00:06:36.880 service uses PHP and my 4 sometimes they
00:06:40.599 uses Ruby and PHP and my SEC
00:06:44.599 five as result also our system our same
00:06:48.400 company knowledge or programming may not
00:06:50.919 be
00:06:52.800 shared I'm at developer productiv Cham
00:06:56.919 on company example for upgrading to
00:07:00.599 framework and develop to open source
00:07:03.599 software and building to analysis
00:07:06.560 platform Etc and we have I have a lot of
00:07:11.199 work our team support to each divisions
00:07:14.280 in company we had to migrate to rage and
00:07:20.759 framework as a result it's preferable to
00:07:24.360 use the same language and the same
00:07:27.440 framework and the same version of
00:07:31.479 database it can scale the technology and
00:07:34.520 produc ability in our
00:07:36.599 company I will describe why was adopted
00:07:40.199 ra and
00:07:42.599 Ruby why do we will choose
00:07:46.520 Ruby we have three major reason to
00:07:49.240 choose Ruby first one is testing second
00:07:53.199 one is environment for development of
00:07:56.000 service last one is M reference
00:07:58.560 translated or written in in
00:08:02.440 Japanese rby has very substantial
00:08:06.120 liaries for the unit test bdd testing
00:08:10.440 and end to n testing when compared to
00:08:14.159 other
00:08:15.800 langages for example you can test
00:08:19.479 behavior of targeting class with unique
00:08:21.599 test Tools R
00:08:24.879 bandles bandles test unit and me test
00:08:28.319 for you
00:08:30.080 in rers you can use arpc and active sof
00:08:34.080 test case which is an extension of the
00:08:36.719 main
00:08:37.599 test in other words the code written in
00:08:41.200 in Ruby can be tested with Ruby it's a
00:08:44.920 big
00:08:46.320 Advantage there is also G very powerful
00:08:49.959 that cap in
00:08:51.920 Ruby application that are not in r or
00:08:55.839 Rock application can be test using cap
00:09:00.440 mechan our company are written tests
00:09:03.360 using Capa and Ruby for PHP
00:09:08.160 applications I will introduce another
00:09:10.920 Library called Power asset to
00:09:14.279 you power asset is assass rival of
00:09:18.600 groy Mr tuoto who are one of the Comm
00:09:22.279 one of Ruby committer put to Ruby from
00:09:27.040 groovy it it is the
00:09:31.959 giab okay I tsj power
00:09:36.959 face the power asset it is a simple
00:09:40.200 syntax passing the B to assertion as
00:09:44.040 shown in the figure on this it determine
00:09:47.920 true or false is a simple
00:09:50.480 syntax however part of the bar assion
00:09:53.720 results greatly when you got F
00:09:57.640 results as at the bottom on this
00:10:01.760 figure you can see the result of each
00:10:04.519 method inspect each method as storying
00:10:07.720 and three and enamorate an array and
00:10:11.160 array class it is the major pattern of
00:10:14.959 programers when you fix fil test
00:10:18.240 go it files after running the test
00:10:22.560 F what not good you can put the de code
00:10:27.320 to
00:10:28.320 investigate for example you will put the
00:10:31.040 pry or P method into your test Cod or
00:10:35.440 production
00:10:36.839 code then theun test with daa
00:10:41.880 code you can find the ca of test
00:10:47.200 file you can make sure that you fix the
00:10:50.560 code if you find the Cod of when run the
00:10:55.639 code well if test file at the five step
00:11:00.519 you must repeat the inspection
00:11:03.760 again this iteration will be repeated
00:11:06.360 until test is
00:11:09.160 fixed if you use par you can see inspect
00:11:14.360 the result of code when run test you
00:11:18.320 need to put the code where no longer
00:11:22.399 this is a very RAR effect we will leave
00:11:25.320 from painful task of switching to edit
00:11:27.760 and console and running
00:11:30.519 test so we I created called me test pass
00:11:35.519 out that it can be use the AC of test
00:11:38.839 case or
00:11:40.320 rails please use who are
00:11:43.959 interested so our company use this gems
00:11:48.279 it's so very
00:11:50.200 useful now let's talk about second
00:11:52.839 reason why we use Ruby Ruby is easy to
00:11:56.800 prepare development environment that
00:11:58.920 anyone can
00:12:00.079 use we use Mach and home and Ruby B and
00:12:05.200 rvm it's very easy to as because I'm
00:12:09.160 their
00:12:11.600 maintenance this is last reason because
00:12:15.519 Ruby was born in
00:12:17.920 Japan we can get many books of Ruby and
00:12:21.920 rs written in Japanese so many books we
00:12:26.440 have well I will introduce why we use
00:12:32.880 RS these are three R reason first one is
00:12:37.360 that become mod
00:12:38.920 architecture second one is possible to
00:12:42.079 use a good culture of
00:12:44.480 OSS first one is that it has a better ad
00:12:50.040 application the first we can enforce
00:12:53.920 modern architecture using the
00:12:57.000 rails for example it is possible that
00:13:00.959 our V system while continuously upgraded
00:13:04.279 the version of Ruby and
00:13:06.440 rails for my
00:13:08.639 information please look at my slide of
00:13:12.279 the of Taiwan and the r in speaker
00:13:18.959 deck it's it is overview our world R
00:13:23.360 application have been used Ruby 1.8 and
00:13:28.079 Rise 2.0 all therefore this version have
00:13:32.519 no security
00:13:34.320 fix and it does not give benefit from
00:13:39.000 Ruby's performance
00:13:41.959 Improvement I did the upgrade of Ruby
00:13:45.160 and rails in this procedure uh for two
00:13:49.240 years after upgrade this service can be
00:13:52.800 receiv received benefit from ratest
00:13:55.320 version of Ruby and rails
00:14:01.079 the second example how to transition
00:14:04.399 into modern architect modern middleware
00:14:06.759 from or the
00:14:09.120 middleware our system is the
00:14:12.399 konon is M the compatible session
00:14:16.560 St it have dual Master function it's
00:14:20.639 synchronizing uh each
00:14:23.480 other we need to De Master function at
00:14:27.600 that time
00:14:29.519 and uh our system used the passenger so
00:14:33.639 I TI sh shock
00:14:37.040 yesterday but session client named ddy
00:14:41.360 not supported K Tycoon D is different
00:14:45.399 session client on ra
00:14:48.680 four and the biggest problem in this C
00:14:52.880 Ty is slower than my
00:14:55.160 figure it's caused by your master
00:14:58.120 mechanism
00:14:59.800 in addition the binary protocol of the
00:15:02.800 di do not correspond to K
00:15:06.040 Tycoon it was necessary to stop the K
00:15:09.959 icon for us to use r
00:15:13.399 four I replace K Tycoon to Pure M
00:15:18.680 Cy I solved all problem for upgrading R
00:15:22.360 4 it looks like wasted
00:15:26.160 work but the architecture of for system
00:15:29.639 is refined by switch to
00:15:32.800 MCD and we can improve performance
00:15:38.199 too I introduce second benefits of using
00:15:43.360 R it is necessary to be ca good OS
00:15:49.240 way our company are creating service in
00:15:52.600 each
00:15:53.720 divisions they develop only Dem servers
00:15:57.519 ecosystem of raise
00:15:59.680 need to run and contribute gems around
00:16:02.600 the
00:16:03.319 rails we need to fix their
00:16:07.079 sometimes this is my Prest of
00:16:10.560 weok mes Chang the name space at version
00:16:14.480 five if you use active Ser test case and
00:16:18.040 test helper libraries like webm on ra
00:16:22.040 4 probably meest block these help us I
00:16:25.880 fixed this name space problem a lot of
00:16:30.279 G and sometimes I need to fix something
00:16:33.959 that Ruby and R
00:16:36.560 directory this is example of incomati
00:16:39.600 changes on Ruby
00:16:42.279 2.2 CR bar have who called f
00:16:47.440 methods argument B methods called f
00:16:52.440 methods B methods does not called the F
00:16:55.519 methods F equal f
00:16:59.839 Ruby 2.2 returns
00:17:02.680 n
00:17:04.600 in Buzz
00:17:07.880 methods it is not assignment same name
00:17:10.799 of default
00:17:12.760 value I found this changes break RA four
00:17:18.400 but it already fixed ra 4.1 by Aron Pon
00:17:22.959 sh be Comm that doesn't use raids it's a
00:17:26.039 two important
00:17:27.520 things sometimes Ruby break
00:17:30.880 raids I and Matan evalate raids with
00:17:34.640 Ruby trunk every day and will fix broken
00:17:38.600 points in this way it can make a big
00:17:42.000 benefit that you can directly control
00:17:44.679 your
00:17:48.120 technologies that the last thing is that
00:17:52.559 you can use adom integration with
00:17:55.360 ra what's adomi we call adom that
00:17:59.520 applications can be three things first
00:18:03.080 one is customer support second one is
00:18:06.480 com confirmation of payment and
00:18:09.679 refund third one is browser UI instead
00:18:13.200 of RA
00:18:15.440 console please remember the role of
00:18:18.320 convey again
00:18:20.200 here why we need three requirements our
00:18:24.120 organization background is
00:18:26.520 affected in our organization
00:18:29.440 customer support and developer has
00:18:31.480 become different
00:18:33.200 te therefore we must customer support
00:18:36.240 and director can operate service
00:18:39.400 separately from
00:18:43.200 developers application that it separated
00:18:46.320 from developers are not maintained by
00:18:50.120 often it is that we cannot improve
00:18:53.400 quality of customer
00:18:56.039 support we found that bra has ability to
00:19:00.240 enclosing another raay
00:19:03.240 applications by using this function it
00:19:06.840 become possible to include admin
00:19:08.640 application into raise
00:19:11.280 application therefore we have three
00:19:15.559 ways the first method is a way to make
00:19:19.600 specifying name space inside the
00:19:22.159 rails it would be created as a future
00:19:25.960 razor
00:19:27.440 applications the good things about this
00:19:30.400 method anomy is integrated with railers
00:19:34.840 you can deploy and test test that very
00:19:39.559 easy on the other hand application code
00:19:43.400 and admin code is tily coupl together
00:19:47.200 adom Cod tend to be
00:19:51.400 complex another way is to use ra
00:19:55.640 engine you can customize the Raz in Gem
00:19:59.400 and active admin gem it's measure
00:20:02.880 way and we can develop there from
00:20:07.320 scratch the good thing about this method
00:20:10.799 is that it can be separated from Razor
00:20:15.600 application also they work or raise Eng
00:20:20.080 in deploy is also very
00:20:22.360 easy but point it cannot share model
00:20:26.080 from Razor
00:20:27.440 application we must be form to module
00:20:31.159 for
00:20:33.720 test last method we make ad me
00:20:38.080 application completely different
00:20:40.480 application it is not affected at ra
00:20:44.760 applications but there are separate from
00:20:47.640 development
00:20:48.880 cycle that become applications that are
00:20:52.720 not
00:20:56.440 maintained there are notification
00:20:59.120 even if you are using Lan rails there
00:21:02.559 are no silver bar for sustainable growth
00:21:06.559 I'll show you what we are working
00:21:08.400 towards the next 10 years while using
00:21:11.480 the Ruan
00:21:14.840 rails we were able to increase increase
00:21:19.240 the productivity using rails but if you
00:21:23.760 have no action like or refactoring you
00:21:27.039 looks right you you look ra like Java ra
00:21:31.559 like
00:21:33.480 PHP we are
00:21:35.600 sharing knowledge of this book every
00:21:38.559 week in our
00:21:40.279 companies crafting R for applications is
00:21:43.520 the best book that describes their
00:21:48.840 internal we also read meta programming
00:21:51.799 Ruby too this book describes active
00:21:54.760 record internal these books is
00:21:58.039 recommended for become a senior
00:22:02.640 developer we use work for like or GitHub
00:22:06.640 one master branch is all way to our
00:22:10.200 development deployment and alloing test
00:22:14.039 States all Cod is Red by
00:22:19.919 others as much as possible we are
00:22:22.799 collecting information to one place
00:22:25.679 across the team for example this is IRC
00:22:29.039 room of some service we integrate all
00:22:32.360 over and monitoring message to it
00:22:35.679 customer contact notification and GitHub
00:22:38.400 issue created and N
00:22:42.640 Etc we have the daily work in
00:22:46.720 cooporation to using puppet and newor
00:22:49.880 and money and nagos and Etc uh we use a
00:22:53.919 lot of Ming
00:22:56.120 tools let's survive the next 10 years
00:23:00.159 while continue continuing our better
00:23:03.159 programming experience using R and Ruby
00:23:07.039 so Ruby and ra saves your business and
00:23:10.640 your programming
00:23:13.159 experience that's all thanks