SlideShare a Scribd company logo
Being With Rails App 
For 3 Years 
RubyHiroba 2014 生活発表会 
2014-09-21 
deeeki
Me 
• deeeki
Being With Rails App For 3 Years
Job 
• Freelance Programmer 
• Ruby / Rails
#mydev 
• Slidegate 
• http://slidegate.herokuapp.com/ 
• Talked at 
個人開発を支える技術Night
Being With Rails App For 3 Years
Contributions 
• Rails (3 times) 
• DatabaseRewinder
Being With Rails App For 3 Years
Being With Rails App For 3 Years
Background of Talk 
• 3 years have gone 
since I start to work with Rails 
• Want to share something
Topics 
• How Did I Develop 
• Tips 
• Thoughts
How Did I Develop
Question 
• How long do you maintain 
your app at work?
A Rails App 
• Insurance Industry 
• Introducing Customers to Planners 
• Some Kind of Users 
• Customer / Planner / Admin …
Environment 
• Rails4.0 / Ruby2.0 
• Apache / Passenger / MySQL 
• AWS (EC2 / RDS)
1st Year: 2011
1st Year: 2011 
• A half year has passed 
since launching 
• 2 Developers and 1 Manager 
• Original Developer Has Quitted 
• Assigned a Subapp of Existing App
Stats 
• Some Complex Logic and DB Schema 
• Not Rails Way in Places 
• No Test
Mission 
• Launch a Subapp 
• Migrating Rails2 to 3 
! 
• Figure Out Somehow Finally
How to Learn 
• Rails Study Meetup at Tokyo 
• “Ruby on Rails 3 
アプリケーションプログラミング” 
• RailsCasts 
• Existing Codes
Interval 
• Quitted the Job 
• 2 Months Later 
• Got an Offer as a Freelancer
the Most 
Impressive Commit
Being With Rails App For 3 Years
My 1st RSpec 
• Request Spec 
• CommitDate: 
Mon Oct 17 08:05:56 2011 +0900
Looking back - RSpec 
• New Feature with New Layout 
• "Write integration test first" 
• Got Relief and Comfort 
Beyond Expectation
Markup Improvement 
• Twitter Bootstrap 
• Haml 
• Simple Form
Drastic Changes 
• Replace 2 Admin Sites with 
Useful View Libraries 
• Mobile / Smartphone Site 
• Write Integration Tests 
Eventually
Summary of 2011 
• Improve a Lot 
Because of Starting as a Beginner 
• Take Care of Choosing a Gem 
• Write Tests as Soon as Possible
2nd Year: 2012
Summary of 2012 
• Implement New Features 
• Return Technical Debts 
• Try Advanced Features 
• STI / Polymorphic Association 
Serialize
2012: As a Freelancer 
• Try External Projects 
• CrowdWorks 
• Reuse Knowledge 
• RSpec / Bootstrap / Several Gems
3rd Year: 2013
Big Upgrade 
• Ruby1.9 -> Ruby2.0 
• Rails3.0 -> Rails3.2 
-> Rails4.0
Issues to Upgrade 
• Outdated Gem 
• Meta Search -> Ransack 
• Assets Pipeline 
• Decided Not to Use
Being With Rails App For 3 Years
Looking back - 
Upgrade 
• Tests Help Us 
• Compromise is OK
2013: As a Freelancer 
• Work Only With Offers 
• "Get work as a reward for work" 
• Try to Work Abroad
Tips
Personal Tiny Tips
File Structure 
• Keep Rails' Structure as Possible 
• Put Non-Rails Files into “lib” 
• Put Custom Initialisers 
into Subdir 
• “YAGNI”
Migration 
• Use :after Option 
• Arrange Columns Meaningfully 
• **Only Available In MySQL** 
• Squach Migrations(Squasher)
Any Related Codes 
on VCS 
• Cron(Whenever) 
• EC2 scripts 
• Middleware Configuration 
• Apache / Logrotate
How to Keep Up
Surf the Internet 
• Twitter / GitHub 
• Follow Remarkable Developers 
• Hatena::Bookmark / Qiita 
• Read Feeds Filtered by Tag 
like “Rails”
rails commit log 流し読み 
なるようになるブログ id:y_yagi
GoRails 
“Continue your Ruby on Rails education.”
Ruby Weekly 
! 
“once–weekly e-mail round-up of Ruby news and articles.”
Thoughts
Principle 
• Keep Maintainable Codes 
• Taking Over Anyone Anytime 
• Follow the Rails Way 
• Convention over Configuration
About Rails 
• Enough for Me 
• Worry Only Using Rails 
• Go Well For the Near Future
Concerning 
• Team Development 
• Teach / Review
I appreciate 
• Gave Me a Lot of Things 
• Knowledge / Opportunity / People 
• Enjoyable
Recap
Recap 
• Share My Experience (And You?) 
• Tips for Maintainable Codes 
• Change Continuously
Thank You
Ad

More Related Content

What's hot (20)

Migrate PHP E-Commerce Site to Go
Migrate PHP E-Commerce Site to GoMigrate PHP E-Commerce Site to Go
Migrate PHP E-Commerce Site to Go
Weng Wei
 
The New JavaScript: ES6
The New JavaScript: ES6The New JavaScript: ES6
The New JavaScript: ES6
Rob Eisenberg
 
RubyConf Taiwan 2016 - Large scale Rails applications
RubyConf Taiwan 2016 - Large scale Rails applicationsRubyConf Taiwan 2016 - Large scale Rails applications
RubyConf Taiwan 2016 - Large scale Rails applications
Florian Dutey
 
Hands on Gradle
Hands on GradleHands on Gradle
Hands on Gradle
Mushfekur Rahman
 
User-percieved performance
User-percieved performanceUser-percieved performance
User-percieved performance
Mike North
 
UWP apps development - Part 2
UWP apps development - Part 2UWP apps development - Part 2
UWP apps development - Part 2
Jiri Danihelka
 
Scaling Tech in Asia
Scaling Tech in AsiaScaling Tech in Asia
Scaling Tech in Asia
Lester Chan
 
Architecture - why so serious?
Architecture - why so serious?Architecture - why so serious?
Architecture - why so serious?
Barbara Fusinska
 
Training on iOS app development - Samesh Swongamikha & Neetin Sharma
Training on iOS app development - Samesh Swongamikha & Neetin SharmaTraining on iOS app development - Samesh Swongamikha & Neetin Sharma
Training on iOS app development - Samesh Swongamikha & Neetin Sharma
MobileNepal
 
ES2015 / ES6: Basics of modern Javascript
ES2015 / ES6: Basics of modern JavascriptES2015 / ES6: Basics of modern Javascript
ES2015 / ES6: Basics of modern Javascript
Wojciech Dzikowski
 
Refactoring Rails applications with RubyMine
Refactoring Rails applications with RubyMineRefactoring Rails applications with RubyMine
Refactoring Rails applications with RubyMine
Andrzej Krzywda
 
Migration from ASP.NET MVC to ASP.NET Core
Migration from ASP.NET MVC to ASP.NET CoreMigration from ASP.NET MVC to ASP.NET Core
Migration from ASP.NET MVC to ASP.NET Core
Miroslav Popovic
 
eMusic: WordPress in the Enterprise
eMusic: WordPress in the EnterpriseeMusic: WordPress in the Enterprise
eMusic: WordPress in the Enterprise
Scott Taylor
 
Introduction to Rails by Evgeniy Hinyuk
Introduction to Rails by Evgeniy HinyukIntroduction to Rails by Evgeniy Hinyuk
Introduction to Rails by Evgeniy Hinyuk
Pivorak MeetUp
 
Lecture #5 Introduction to rails
Lecture #5 Introduction to railsLecture #5 Introduction to rails
Lecture #5 Introduction to rails
Evgeniy Hinyuk
 
Deployment Nirvana
Deployment NirvanaDeployment Nirvana
Deployment Nirvana
Adrian Pike
 
SGCE 2015 REST APIs
SGCE 2015 REST APIsSGCE 2015 REST APIs
SGCE 2015 REST APIs
Domingo Suarez Torres
 
Moving Beyond WordPress At Tech in Asia
Moving Beyond WordPress At Tech in AsiaMoving Beyond WordPress At Tech in Asia
Moving Beyond WordPress At Tech in Asia
Lester Chan
 
Novmeber 2015 WordPress News 'n' Stuff
Novmeber 2015 WordPress News 'n' StuffNovmeber 2015 WordPress News 'n' Stuff
Novmeber 2015 WordPress News 'n' Stuff
WordPress Sydney
 
Reacting to the Isomorphic Buzz
Reacting to the Isomorphic BuzzReacting to the Isomorphic Buzz
Reacting to the Isomorphic Buzz
Bruce Coddington
 
Migrate PHP E-Commerce Site to Go
Migrate PHP E-Commerce Site to GoMigrate PHP E-Commerce Site to Go
Migrate PHP E-Commerce Site to Go
Weng Wei
 
The New JavaScript: ES6
The New JavaScript: ES6The New JavaScript: ES6
The New JavaScript: ES6
Rob Eisenberg
 
RubyConf Taiwan 2016 - Large scale Rails applications
RubyConf Taiwan 2016 - Large scale Rails applicationsRubyConf Taiwan 2016 - Large scale Rails applications
RubyConf Taiwan 2016 - Large scale Rails applications
Florian Dutey
 
User-percieved performance
User-percieved performanceUser-percieved performance
User-percieved performance
Mike North
 
UWP apps development - Part 2
UWP apps development - Part 2UWP apps development - Part 2
UWP apps development - Part 2
Jiri Danihelka
 
Scaling Tech in Asia
Scaling Tech in AsiaScaling Tech in Asia
Scaling Tech in Asia
Lester Chan
 
Architecture - why so serious?
Architecture - why so serious?Architecture - why so serious?
Architecture - why so serious?
Barbara Fusinska
 
Training on iOS app development - Samesh Swongamikha & Neetin Sharma
Training on iOS app development - Samesh Swongamikha & Neetin SharmaTraining on iOS app development - Samesh Swongamikha & Neetin Sharma
Training on iOS app development - Samesh Swongamikha & Neetin Sharma
MobileNepal
 
ES2015 / ES6: Basics of modern Javascript
ES2015 / ES6: Basics of modern JavascriptES2015 / ES6: Basics of modern Javascript
ES2015 / ES6: Basics of modern Javascript
Wojciech Dzikowski
 
Refactoring Rails applications with RubyMine
Refactoring Rails applications with RubyMineRefactoring Rails applications with RubyMine
Refactoring Rails applications with RubyMine
Andrzej Krzywda
 
Migration from ASP.NET MVC to ASP.NET Core
Migration from ASP.NET MVC to ASP.NET CoreMigration from ASP.NET MVC to ASP.NET Core
Migration from ASP.NET MVC to ASP.NET Core
Miroslav Popovic
 
eMusic: WordPress in the Enterprise
eMusic: WordPress in the EnterpriseeMusic: WordPress in the Enterprise
eMusic: WordPress in the Enterprise
Scott Taylor
 
Introduction to Rails by Evgeniy Hinyuk
Introduction to Rails by Evgeniy HinyukIntroduction to Rails by Evgeniy Hinyuk
Introduction to Rails by Evgeniy Hinyuk
Pivorak MeetUp
 
Lecture #5 Introduction to rails
Lecture #5 Introduction to railsLecture #5 Introduction to rails
Lecture #5 Introduction to rails
Evgeniy Hinyuk
 
Deployment Nirvana
Deployment NirvanaDeployment Nirvana
Deployment Nirvana
Adrian Pike
 
Moving Beyond WordPress At Tech in Asia
Moving Beyond WordPress At Tech in AsiaMoving Beyond WordPress At Tech in Asia
Moving Beyond WordPress At Tech in Asia
Lester Chan
 
Novmeber 2015 WordPress News 'n' Stuff
Novmeber 2015 WordPress News 'n' StuffNovmeber 2015 WordPress News 'n' Stuff
Novmeber 2015 WordPress News 'n' Stuff
WordPress Sydney
 
Reacting to the Isomorphic Buzz
Reacting to the Isomorphic BuzzReacting to the Isomorphic Buzz
Reacting to the Isomorphic Buzz
Bruce Coddington
 

Similar to Being With Rails App For 3 Years (20)

Whitepages Practical Experience Converting from Ruby to Reactive
Whitepages Practical Experience Converting from Ruby to ReactiveWhitepages Practical Experience Converting from Ruby to Reactive
Whitepages Practical Experience Converting from Ruby to Reactive
Dragos Manolescu
 
Experience Converting from Ruby to Scala
Experience Converting from Ruby to ScalaExperience Converting from Ruby to Scala
Experience Converting from Ruby to Scala
John Nestor
 
OpenStack Doc Overview for Boot Camp
OpenStack Doc Overview for Boot CampOpenStack Doc Overview for Boot Camp
OpenStack Doc Overview for Boot Camp
Anne Gentle
 
Prototyping like it is 2022
Prototyping like it is 2022 Prototyping like it is 2022
Prototyping like it is 2022
Michael Yagudaev
 
Frontend as a first class citizen
Frontend as a first class citizenFrontend as a first class citizen
Frontend as a first class citizen
Marcin Grzywaczewski
 
MEAN Stack WeNode Barcelona Workshop
MEAN Stack WeNode Barcelona WorkshopMEAN Stack WeNode Barcelona Workshop
MEAN Stack WeNode Barcelona Workshop
Valeri Karpov
 
O365: Attack of the Clones
O365: Attack of the ClonesO365: Attack of the Clones
O365: Attack of the Clones
Christopher Johnson
 
Zero to Sixty with Oracle ApEx
Zero to Sixty with Oracle ApExZero to Sixty with Oracle ApEx
Zero to Sixty with Oracle ApEx
Bradley Brown
 
Selenium at Mozilla: An Essential Element to our Success
Selenium at Mozilla: An Essential Element to our SuccessSelenium at Mozilla: An Essential Element to our Success
Selenium at Mozilla: An Essential Element to our Success
Stephen Donner
 
Play Architecture, Implementation, Shiny Objects, and a Proposal
Play Architecture, Implementation, Shiny Objects, and a ProposalPlay Architecture, Implementation, Shiny Objects, and a Proposal
Play Architecture, Implementation, Shiny Objects, and a Proposal
Mike Slinn
 
Riding the Edge with Ember.js
Riding the Edge with Ember.jsRiding the Edge with Ember.js
Riding the Edge with Ember.js
aortbals
 
Part I: SharePoint 2013 Administration by Todd Klindt and Shane Young - SPTec...
Part I: SharePoint 2013 Administration by Todd Klindt and Shane Young - SPTec...Part I: SharePoint 2013 Administration by Todd Klindt and Shane Young - SPTec...
Part I: SharePoint 2013 Administration by Todd Klindt and Shane Young - SPTec...
SPTechCon
 
Lessons Learned Migrating from Jekyll to Next.pptx
Lessons Learned Migrating from Jekyll to Next.pptxLessons Learned Migrating from Jekyll to Next.pptx
Lessons Learned Migrating from Jekyll to Next.pptx
M. Scott Ford
 
Service-Oriented Design and Implement with Rails3
Service-Oriented Design and Implement with Rails3Service-Oriented Design and Implement with Rails3
Service-Oriented Design and Implement with Rails3
Wen-Tien Chang
 
Untangling - fall2017 - week 8
Untangling - fall2017 - week 8Untangling - fall2017 - week 8
Untangling - fall2017 - week 8
Derek Jacoby
 
The things we found in your website
The things we found in your websiteThe things we found in your website
The things we found in your website
hernanibf
 
What’s new in share point 2013
What’s new in share point 2013What’s new in share point 2013
What’s new in share point 2013
Wael Sharba
 
Docs at Weaveworks: DX from open source to SaaS and beyond
Docs at Weaveworks: DX from open source to SaaS and beyondDocs at Weaveworks: DX from open source to SaaS and beyond
Docs at Weaveworks: DX from open source to SaaS and beyond
Luke Marsden
 
How to write a web framework
How to write a web frameworkHow to write a web framework
How to write a web framework
Ngoc Dao
 
Scaling with swagger
Scaling with swaggerScaling with swagger
Scaling with swagger
Tony Tam
 
Whitepages Practical Experience Converting from Ruby to Reactive
Whitepages Practical Experience Converting from Ruby to ReactiveWhitepages Practical Experience Converting from Ruby to Reactive
Whitepages Practical Experience Converting from Ruby to Reactive
Dragos Manolescu
 
Experience Converting from Ruby to Scala
Experience Converting from Ruby to ScalaExperience Converting from Ruby to Scala
Experience Converting from Ruby to Scala
John Nestor
 
OpenStack Doc Overview for Boot Camp
OpenStack Doc Overview for Boot CampOpenStack Doc Overview for Boot Camp
OpenStack Doc Overview for Boot Camp
Anne Gentle
 
Prototyping like it is 2022
Prototyping like it is 2022 Prototyping like it is 2022
Prototyping like it is 2022
Michael Yagudaev
 
MEAN Stack WeNode Barcelona Workshop
MEAN Stack WeNode Barcelona WorkshopMEAN Stack WeNode Barcelona Workshop
MEAN Stack WeNode Barcelona Workshop
Valeri Karpov
 
Zero to Sixty with Oracle ApEx
Zero to Sixty with Oracle ApExZero to Sixty with Oracle ApEx
Zero to Sixty with Oracle ApEx
Bradley Brown
 
Selenium at Mozilla: An Essential Element to our Success
Selenium at Mozilla: An Essential Element to our SuccessSelenium at Mozilla: An Essential Element to our Success
Selenium at Mozilla: An Essential Element to our Success
Stephen Donner
 
Play Architecture, Implementation, Shiny Objects, and a Proposal
Play Architecture, Implementation, Shiny Objects, and a ProposalPlay Architecture, Implementation, Shiny Objects, and a Proposal
Play Architecture, Implementation, Shiny Objects, and a Proposal
Mike Slinn
 
Riding the Edge with Ember.js
Riding the Edge with Ember.jsRiding the Edge with Ember.js
Riding the Edge with Ember.js
aortbals
 
Part I: SharePoint 2013 Administration by Todd Klindt and Shane Young - SPTec...
Part I: SharePoint 2013 Administration by Todd Klindt and Shane Young - SPTec...Part I: SharePoint 2013 Administration by Todd Klindt and Shane Young - SPTec...
Part I: SharePoint 2013 Administration by Todd Klindt and Shane Young - SPTec...
SPTechCon
 
Lessons Learned Migrating from Jekyll to Next.pptx
Lessons Learned Migrating from Jekyll to Next.pptxLessons Learned Migrating from Jekyll to Next.pptx
Lessons Learned Migrating from Jekyll to Next.pptx
M. Scott Ford
 
Service-Oriented Design and Implement with Rails3
Service-Oriented Design and Implement with Rails3Service-Oriented Design and Implement with Rails3
Service-Oriented Design and Implement with Rails3
Wen-Tien Chang
 
Untangling - fall2017 - week 8
Untangling - fall2017 - week 8Untangling - fall2017 - week 8
Untangling - fall2017 - week 8
Derek Jacoby
 
The things we found in your website
The things we found in your websiteThe things we found in your website
The things we found in your website
hernanibf
 
What’s new in share point 2013
What’s new in share point 2013What’s new in share point 2013
What’s new in share point 2013
Wael Sharba
 
Docs at Weaveworks: DX from open source to SaaS and beyond
Docs at Weaveworks: DX from open source to SaaS and beyondDocs at Weaveworks: DX from open source to SaaS and beyond
Docs at Weaveworks: DX from open source to SaaS and beyond
Luke Marsden
 
How to write a web framework
How to write a web frameworkHow to write a web framework
How to write a web framework
Ngoc Dao
 
Scaling with swagger
Scaling with swaggerScaling with swagger
Scaling with swagger
Tony Tam
 
Ad

More from deeeki (6)

個人開発 in フィリピン
個人開発 in フィリピン個人開発 in フィリピン
個人開発 in フィリピン
deeeki
 
Geekmtsm memories
Geekmtsm memoriesGeekmtsm memories
Geekmtsm memories
deeeki
 
Ruby Surroundings in Japan
Ruby Surroundings in JapanRuby Surroundings in Japan
Ruby Surroundings in Japan
deeeki
 
Ruby Movement in Japan
Ruby Movement in JapanRuby Movement in Japan
Ruby Movement in Japan
deeeki
 
How to learn Rails
How to learn RailsHow to learn Rails
How to learn Rails
deeeki
 
モトスミHack半年間ふりかえり
モトスミHack半年間ふりかえりモトスミHack半年間ふりかえり
モトスミHack半年間ふりかえり
deeeki
 
個人開発 in フィリピン
個人開発 in フィリピン個人開発 in フィリピン
個人開発 in フィリピン
deeeki
 
Geekmtsm memories
Geekmtsm memoriesGeekmtsm memories
Geekmtsm memories
deeeki
 
Ruby Surroundings in Japan
Ruby Surroundings in JapanRuby Surroundings in Japan
Ruby Surroundings in Japan
deeeki
 
Ruby Movement in Japan
Ruby Movement in JapanRuby Movement in Japan
Ruby Movement in Japan
deeeki
 
How to learn Rails
How to learn RailsHow to learn Rails
How to learn Rails
deeeki
 
モトスミHack半年間ふりかえり
モトスミHack半年間ふりかえりモトスミHack半年間ふりかえり
モトスミHack半年間ふりかえり
deeeki
 
Ad

Recently uploaded (20)

SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 

Being With Rails App For 3 Years

  • 1. Being With Rails App For 3 Years RubyHiroba 2014 生活発表会 2014-09-21 deeeki
  • 4. Job • Freelance Programmer • Ruby / Rails
  • 5. #mydev • Slidegate • http://slidegate.herokuapp.com/ • Talked at 個人開発を支える技術Night
  • 7. Contributions • Rails (3 times) • DatabaseRewinder
  • 10. Background of Talk • 3 years have gone since I start to work with Rails • Want to share something
  • 11. Topics • How Did I Develop • Tips • Thoughts
  • 12. How Did I Develop
  • 13. Question • How long do you maintain your app at work?
  • 14. A Rails App • Insurance Industry • Introducing Customers to Planners • Some Kind of Users • Customer / Planner / Admin …
  • 15. Environment • Rails4.0 / Ruby2.0 • Apache / Passenger / MySQL • AWS (EC2 / RDS)
  • 17. 1st Year: 2011 • A half year has passed since launching • 2 Developers and 1 Manager • Original Developer Has Quitted • Assigned a Subapp of Existing App
  • 18. Stats • Some Complex Logic and DB Schema • Not Rails Way in Places • No Test
  • 19. Mission • Launch a Subapp • Migrating Rails2 to 3 ! • Figure Out Somehow Finally
  • 20. How to Learn • Rails Study Meetup at Tokyo • “Ruby on Rails 3 アプリケーションプログラミング” • RailsCasts • Existing Codes
  • 21. Interval • Quitted the Job • 2 Months Later • Got an Offer as a Freelancer
  • 24. My 1st RSpec • Request Spec • CommitDate: Mon Oct 17 08:05:56 2011 +0900
  • 25. Looking back - RSpec • New Feature with New Layout • "Write integration test first" • Got Relief and Comfort Beyond Expectation
  • 26. Markup Improvement • Twitter Bootstrap • Haml • Simple Form
  • 27. Drastic Changes • Replace 2 Admin Sites with Useful View Libraries • Mobile / Smartphone Site • Write Integration Tests Eventually
  • 28. Summary of 2011 • Improve a Lot Because of Starting as a Beginner • Take Care of Choosing a Gem • Write Tests as Soon as Possible
  • 30. Summary of 2012 • Implement New Features • Return Technical Debts • Try Advanced Features • STI / Polymorphic Association Serialize
  • 31. 2012: As a Freelancer • Try External Projects • CrowdWorks • Reuse Knowledge • RSpec / Bootstrap / Several Gems
  • 33. Big Upgrade • Ruby1.9 -> Ruby2.0 • Rails3.0 -> Rails3.2 -> Rails4.0
  • 34. Issues to Upgrade • Outdated Gem • Meta Search -> Ransack • Assets Pipeline • Decided Not to Use
  • 36. Looking back - Upgrade • Tests Help Us • Compromise is OK
  • 37. 2013: As a Freelancer • Work Only With Offers • "Get work as a reward for work" • Try to Work Abroad
  • 38. Tips
  • 40. File Structure • Keep Rails' Structure as Possible • Put Non-Rails Files into “lib” • Put Custom Initialisers into Subdir • “YAGNI”
  • 41. Migration • Use :after Option • Arrange Columns Meaningfully • **Only Available In MySQL** • Squach Migrations(Squasher)
  • 42. Any Related Codes on VCS • Cron(Whenever) • EC2 scripts • Middleware Configuration • Apache / Logrotate
  • 44. Surf the Internet • Twitter / GitHub • Follow Remarkable Developers • Hatena::Bookmark / Qiita • Read Feeds Filtered by Tag like “Rails”
  • 45. rails commit log 流し読み なるようになるブログ id:y_yagi
  • 46. GoRails “Continue your Ruby on Rails education.”
  • 47. Ruby Weekly ! “once–weekly e-mail round-up of Ruby news and articles.”
  • 49. Principle • Keep Maintainable Codes • Taking Over Anyone Anytime • Follow the Rails Way • Convention over Configuration
  • 50. About Rails • Enough for Me • Worry Only Using Rails • Go Well For the Near Future
  • 51. Concerning • Team Development • Teach / Review
  • 52. I appreciate • Gave Me a Lot of Things • Knowledge / Opportunity / People • Enjoyable
  • 53. Recap
  • 54. Recap • Share My Experience (And You?) • Tips for Maintainable Codes • Change Continuously