From 10a7b1ec84194694c37623b998a9bb0f7627d3d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Akkaoui?= Date: Wed, 29 Nov 2023 18:56:49 +0100 Subject: [PATCH] [Case Studies] Add Ecov Case study --- _posts/2023-11-29-case-study-ecov.md | 53 +++++++++++++++++++++++ assets/images/case_studies/ecov/logo.png | Bin 0 -> 51784 bytes 2 files changed, 53 insertions(+) create mode 100644 _posts/2023-11-29-case-study-ecov.md create mode 100644 assets/images/case_studies/ecov/logo.png diff --git a/_posts/2023-11-29-case-study-ecov.md b/_posts/2023-11-29-case-study-ecov.md new file mode 100644 index 0000000..25a7522 --- /dev/null +++ b/_posts/2023-11-29-case-study-ecov.md @@ -0,0 +1,53 @@ +--- +layout: post +company: "Ecov" +title: "Ecov - Modernizing Ruby on Rails Applications" +date: 2023-11-29 18:45:13 +0600 +tags: ruby-on-rails ruby +categories: [Case Study] +author: "Stéphane Akkaoui" +post_image: "/assets/images/case_studies/ecov/logo.png" +show_categories: false +show_meta_info: false +show_comments: false +show_bottom_posts: false +show_bottom_tags: false +--- + +- - - +**TL;DR : ForeverBije successfully upgraded Ecov's Ruby on Rails applications over two months, methodically migrating from Ruby 2.7 and Rails 5.2 to Ruby 3.2 and Rails 7.0. The process involved a detailed initial audit, systematic updates of gems, configurations, and adherence to new naming conventions. Despite challenges like serialization changes and unsupported gems, ForeverBije effectively resolved these issues, enhancing the performance and maintainability of Ecov's digital infrastructure. This project exemplifies ForeverBije's technical expertise and adaptability in software upgrades.** +- - - +## 🧩 The initial problem +- - - +Ecov, an innovative company transforming individual cars into public transport services, faced a significant challenge: **upgrading their outdated Ruby on Rails application**. ForeverBije stepped in to lead this crucial technological transition. +- - - +## ✅ The solution +- - - + +**Audit and Assessment**: Our initial two-day audit meticulously evaluated custom and open-source gems for migration risks, assessed test coverage and quality, and ensured the development environment was primed for testing. This foundational step set the stage for the upgrade. + +**Migration Process**: Over two months, our team dedicated 25 days to **meticulously upgrade one large shared library and nine applications** from Ruby 2.7 to 3.2 and Rails 5.2 to 7.0. We approached Rails migration gradually, transitioning first to 6.0, then 6.1, and finally to 7.0. After each step, we rigorously tested and upgraded necessary gems, ensuring seamless functionality before advancing. The Ruby migration was tackled in one ambitious leap from 2.7 to 3.2, **with extensive testing and fixes** applied throughout the process. + +**Our methodology was systematic**: updating versions in Gemfile, gemspec, .ruby-version, and Dockerfile; adjusting default configurations in config/application.rb; and modifying schema.rb to align with Rails version changes. Additionally, we restructured class, file, and directory names to adhere to Zeitwerk's conventions. + +**Challenges and Solutions**: The upgrade journey wasn't without its hurdles. We navigated through various challenges, including adapting to JSON serialization for Date, Time, or BigDecimal classes, addressing the precision changes in DateTime columns, and adapting to the updated ActionDispatch content_type format. **The transition to Zeitwerk's new naming convention required thoughtful directory architecture modifications**. Some gems were no longer supported, prompting us to creatively fix their versions or patch them. Additionally, the move away from CoffeeScript necessitated converting scripts to standard JavaScript. + +**Results and Impact**: The successful migration brought Ecov's applications up to speed with the latest technological standards, enhancing both performance and future maintainability. **This upgrade has positioned Ecov to better serve their customers** with a more robust and efficient digital infrastructure. + + +- - - +## 💻 The stack +- - - + +- **App**: Ruby on Rails +- **Database**: PostgreSQL +- **Testing**: Rspec, FactoryBot +- **Background Tasks**: Sidekiq +- **Hosting**: Custom +- **CI/CD & Project Management**: Gitlab + +- - - +## 🚀 The results +- - - + +The collaboration between Ecov and ForeverBije exemplifies **our commitment to technical excellence and our ability to adapt to evolving software landscapes**. This project not only modernized Ecov's technological backbone but also reinforced their infrastructure improving the applications performance and reliability. **ForeverBije's expertise in handling complex software upgrades** has once again proven pivotal in advancing our client's operational capabilities. \ No newline at end of file diff --git a/assets/images/case_studies/ecov/logo.png b/assets/images/case_studies/ecov/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9cc29da699a4029fabe16bdb715abc7cd9113ebd GIT binary patch literal 51784 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