SlideShare uma empresa Scribd logo
1 de 40
Baixar para ler offline
CSA on Rails :
a practical
case-study
Ruby and Rails Devroom
FOSDEM, 24.02.2008



Bernard Dubuisson, CSA
bernard@dub.be
Damien Merenne, Cosinux
dam@cosinux.org
About this presentation

“I am no Ruby or RoR specialist and
 wouldn't myself call a developper,
 I just happened to get my hands on
 RoR at the right time and found my
 way through it much like a lot of
 people did with HTML, 15 years ago.
 There's a lot to say about our
 quot;real lifequot; project, but not much
 on the techy side, I guess.”
What this is about
1.Brief context overview
2.Why Ruby on Rails
3.A global description of the
 solution
4.Basic project data such as budget,
 time spent, ...
5.Strength and weaknesses of ROR
6.Working internally : pros and cons
7.Conclusions
Overview : CSA
●   CSA = Conseil supérieur de
    l'audiovisuel, Regulation authority
    for the French Community
●   A public agency with a large
    autonomy
●   22 people on the payroll
●   Lots of documents produced inside
    of a legal framework
Overview : website needs
●   Existing website ...
    –   Custom made, dynamic (ASP)
    –   Poor usability
    –   High maintenance costs
●   ... facing new needs
    –   Evolutive solution
    –   Management of large amount of
        information
    –   Links between contents
    –   Evolution of users practices
Overview : website needs
●   Basic CMS features :
    –   Access to documents, news, events,
        links, ...
    –   Large amount of data
    –   Update by several people
●   Global objectives :
    –   Complete information
    –   Easy access
    –   Interactivity
Why Ruby on Rails?
Why Ruby on Rails
Open source CMS (Drupal) :
the Playmobil approach
 –   Nice and easy
 –   Very little customization possible
Why Ruby on Rails
PHP :
the Mecano approach
 •   Taylor-made
 •   Not much help
Why Ruby on Rails
●   Ruby on Rails : the Lego approach
    –   Flexible, easy to assemble
    –   From simple to complex systems
Our methodology
●   The development would be
    internalized
    –   1 in-house developper :
         ●   Project management, information
             architecture, usability and webdesign
             background
         ●   Out of main attributions
    –   1 external coach :
         ●   Professional RoR consultant
http://www.csa.be
The solution
●   A full featured CMS built with RoR
    1.1.6
●   Every content can be managed
    through forms
●   A lot of features are “out of the
    box”
The solution
●   Features :
    –   Document repository, News and Agenda
        (external and internal), Links, FAQ
    –   “e-Booth” : subscriptions, complaints,
        questions, orders,
    –   Newsletter tool, Meeting support,
        Minisites
Content models
●   Generic Content model (no single
    table inheritance)
•   Specific content models :
    •   Pages : generic static page (Tiny MCE)
    •   Documents : mostly PDF
    •   News
    •   Events, Meetings
    •   Organs
    •   People, Members
Other models
●   Other “supporting” models : User,
    Menu,Tag, Category, Message,
    Visitor, Newsletter, ...
●   Role-based access : different
    permission levels
●   Extranet features : the same page
    can render different informations
    depending on the user's permission
    (ex. Meetings).
A Meeting page for a regular user
A Meeting page for a internal user
Plugins
●   Authentication
    and role-based
    access
●   Search engine
●   Usability features
●   Error notification
●   Expand RoR 1.1.6
    possibilities
Hosting
●   Hosted on a VPS over at
    Railsmachine.com (100$/month)
●   Rails dedicated company with
    extensive experience and
    referential clients
●   Eventually, in a datacenter located
    in Europe
Facts and figures

dub-macbook:~/Sites/trunk dub$ rake stats
(in /Users/dub/Sites/trunk)

+----------------------+-------+-------+---------+---------+-----+-------+
| Name                 | Lines |    LOC | Classes | Methods | M/C | LOC/M |
+----------------------+-------+-------+---------+---------+-----+-------+
| Controllers          | 2830 | 2255 |          32 |     246 |   7 |    7 |
| Helpers              |   771 |    578 |        0 |      61 |   0 |    7 |
| Models               | 1130 |     865 |       44 |     109 |   2 |    5 |
| Libraries            | 1111 |     670 |       12 |      57 |   4 |    9 |
| Components           |     0 |      0 |        0 |       0 |   0 |    0 |
| Functional tests     | 1316 |     959 |       34 |     115 |   3 |    6 |
| Unit tests           |   624 |    487 |       19 |      64 |   3 |    5 |
+----------------------+-------+-------+---------+---------+-----+-------+
| Total                | 7782 | 5814 |         141 |     652 |   4 |    6 |
+----------------------+-------+-------+---------+---------+-----+-------+
  Code LOC: 4368     Test LOC: 1446       Code to Test Ratio: 1:0.3
Facts and figures
●   Main developper : approximately 500
    hours, including learning curve
●   Coach : approximately 12 days,
    including
    – coaching
    – development of complex features
    – server configuration, deployment,
      sysadmin
Facts and figures
●   Overal cost : < 10.000 EUR
    – coach,
    – hosting
    – productivity tools
    – excluding in-house developper
Ruby on Rails :
strengths and weaknesses
RoR Strengths
    –   Ruby is easy to learn
    –   Ruby on Rails is oriented
        towards good development
        practices :
●   Model-View-          ●   Migrations
    Controller           ●   Use of SVN
●   Unit and             ●   Code documentation
    functional testing
                         ●   Explicit names
●   DRY                  ●   Environments
●   Content/layout       ●   ...
    separation
RoR Strengths
●   Rails provides a rapid development
    framework
●   You get seldom or never lost or
    stuck with problems or errors
    –   Explicit error messages
    –   Good community support
RoR Strengths
●   Rails' production deployment and
    official launch worked without
    clouds, no application crashes
●   Rails has lots of built-in time-
    saving features (pagination,
    validation, ...)
●   Rails community provides a large
    range of available plugins
●   Ruby is open to third party
    applications and technologies, ...
RoR Weaknesses
●   Ruby is slow
●   Needs a special hosting config and
    sysadmin care (not fit for shared
    hosting)
●   Constant evolution of Rails needs
    monitoring
●   Slow spread among “real world”
    developers
RoR Weaknesses
●   Relying on plugins isn't always a
    good thing
●   Code can lack clarity (DRY, haiku
    style and inheritance)
●   Charset use can be tricky for non-
    English
Confronting RoR “mythology”
●   Testing
    –   Requires a particular set of
        competencies, it's not easy and very
        well documented (for example, document
        upload testing)
    –   For this reason, we couldn't afford to
        complete all the tests that the code
        would have required
Confronting RoR “mythology”
●   DRY
    –   In some cases, the DRY approach
        requires some extra effort that isn't
        worth the gain
    –   Perfection vs. realism : Sometimes, it
        can be more productive to just RY
Working internally :
    pros and cons,
conditions of success
Working internally
●   A in-house developper with non
    exclusively technical attributions,
    coached and helped by a
    professionnal
●   Pros :
    –   Allows to develop with the user's
        needs in mind. Very little user-
        developper translation needed
    –   Reduced cost
    –   Allows constant upgrading and light-
        touch evolutions
    –   User empowerment
Working internally
●   Cons :
    –   Need to find the “right” in-house
        profile and competencies
    –   Attribution conflicts
    –   Time availability (development spread
        over 9 months)
    –   Authority on the development team
Working internally
●   Conditions of success :
    –   Fair amount of trust from hierarchy,
        autonomy
    –   Little pressure on deadlines
    –   Start from scratch, no legacy
    –   Backup plan
●   Ruby on Rails is the ideal tool for
    this kind of user empowerment
Conclusions
Conclusions
●   Ruby on Rails is a mature,
    efficient, powerful framework for
    quality web-based applications
●   To us, Rails is all about user
    empowerment. It allowed us to build
    a custom CMS we couldn't have
    dreamed of in another context
Conclusions
●   Reverse approach : Bringing the
    user on the developer's ground vs.
    bringing the developer to the
    user's ground
●   Requires the right people and the
    right context
●   Could become a real nightmare in
    the “wrong hands” (see HTML)
●   Rails also comes with a philosophy
    that prevents bad coding habits
Conclusions




Rails is educational
Questions ?




bernard@dub.be

Mais conteúdo relacionado

Destaque

Ruby: Fun, Productive and Open Source
Ruby: Fun, Productive and Open SourceRuby: Fun, Productive and Open Source
Ruby: Fun, Productive and Open SourceEleanor McHugh
 
Ruby on Rails Meets Enterprise Applications
Ruby on Rails Meets Enterprise ApplicationsRuby on Rails Meets Enterprise Applications
Ruby on Rails Meets Enterprise Applicationsdan_mcweeney
 
[Srijan Wednesday Webinar] Rails 5: What's in It for Me?
[Srijan Wednesday Webinar] Rails 5: What's in It for Me?[Srijan Wednesday Webinar] Rails 5: What's in It for Me?
[Srijan Wednesday Webinar] Rails 5: What's in It for Me?Srijan Technologies
 
Ruby and Docker on Rails
Ruby and Docker on RailsRuby and Docker on Rails
Ruby and Docker on RailsMuriel Salvan
 
Rails view chapte 5 - form
Rails view   chapte 5 - formRails view   chapte 5 - form
Rails view chapte 5 - formThaichor Seng
 
URUG Ruby on Rails Workshop - Sesssion 5
URUG Ruby on Rails Workshop - Sesssion 5URUG Ruby on Rails Workshop - Sesssion 5
URUG Ruby on Rails Workshop - Sesssion 5jakemallory
 
Ionic Hybrid Mobile Application
Ionic Hybrid Mobile ApplicationIonic Hybrid Mobile Application
Ionic Hybrid Mobile ApplicationAl Sayed Gamal
 
php[world] 2015 Training - Laravel from the Ground Up
php[world] 2015 Training - Laravel from the Ground Upphp[world] 2015 Training - Laravel from the Ground Up
php[world] 2015 Training - Laravel from the Ground UpJoe Ferguson
 
Rails is Easy*
Rails is Easy*Rails is Easy*
Rails is Easy*bryanbibat
 
Ruby on Rails : RESTful 和 Ajax
Ruby on Rails : RESTful 和 AjaxRuby on Rails : RESTful 和 Ajax
Ruby on Rails : RESTful 和 AjaxWen-Tien Chang
 
Prototype design patterns
Prototype design patternsPrototype design patterns
Prototype design patternsThaichor Seng
 

Destaque (20)

Ruby: Fun, Productive and Open Source
Ruby: Fun, Productive and Open SourceRuby: Fun, Productive and Open Source
Ruby: Fun, Productive and Open Source
 
Rails course day 4
Rails course day 4Rails course day 4
Rails course day 4
 
Ruby on Rails Meets Enterprise Applications
Ruby on Rails Meets Enterprise ApplicationsRuby on Rails Meets Enterprise Applications
Ruby on Rails Meets Enterprise Applications
 
Rails course day 8
Rails course day 8Rails course day 8
Rails course day 8
 
Rails01
Rails01Rails01
Rails01
 
Rails course day 2
Rails course  day 2Rails course  day 2
Rails course day 2
 
[Srijan Wednesday Webinar] Rails 5: What's in It for Me?
[Srijan Wednesday Webinar] Rails 5: What's in It for Me?[Srijan Wednesday Webinar] Rails 5: What's in It for Me?
[Srijan Wednesday Webinar] Rails 5: What's in It for Me?
 
Rails course day 6
Rails course day 6Rails course day 6
Rails course day 6
 
Rails 5 All topic Notes
Rails 5 All  topic NotesRails 5 All  topic Notes
Rails 5 All topic Notes
 
Ruby and Docker on Rails
Ruby and Docker on RailsRuby and Docker on Rails
Ruby and Docker on Rails
 
Rails view chapte 5 - form
Rails view   chapte 5 - formRails view   chapte 5 - form
Rails view chapte 5 - form
 
URUG Ruby on Rails Workshop - Sesssion 5
URUG Ruby on Rails Workshop - Sesssion 5URUG Ruby on Rails Workshop - Sesssion 5
URUG Ruby on Rails Workshop - Sesssion 5
 
Ionic Hybrid Mobile Application
Ionic Hybrid Mobile ApplicationIonic Hybrid Mobile Application
Ionic Hybrid Mobile Application
 
Rails course day 5
Rails course day 5Rails course day 5
Rails course day 5
 
php[world] 2015 Training - Laravel from the Ground Up
php[world] 2015 Training - Laravel from the Ground Upphp[world] 2015 Training - Laravel from the Ground Up
php[world] 2015 Training - Laravel from the Ground Up
 
Hd 10 japan
Hd 10 japanHd 10 japan
Hd 10 japan
 
Rails is Easy*
Rails is Easy*Rails is Easy*
Rails is Easy*
 
Ruby on Rails : RESTful 和 Ajax
Ruby on Rails : RESTful 和 AjaxRuby on Rails : RESTful 和 Ajax
Ruby on Rails : RESTful 和 Ajax
 
Rails course day 3
Rails course day 3Rails course day 3
Rails course day 3
 
Prototype design patterns
Prototype design patternsPrototype design patterns
Prototype design patterns
 

Semelhante a CSA on Rails: a practical case-study

The Importance Things of Full Stack Development
The Importance Things of Full Stack DevelopmentThe Importance Things of Full Stack Development
The Importance Things of Full Stack DevelopmentMike Taylor
 
SELF - Becoming a Rails Developer - The Rest of the Story
SELF - Becoming a Rails Developer - The Rest of the StorySELF - Becoming a Rails Developer - The Rest of the Story
SELF - Becoming a Rails Developer - The Rest of the StoryNathanial McConnell
 
Angular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraLINAGORA
 
Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010arif44
 
From Rails legacy to DDD - Pivorak, Lviv
From Rails legacy to DDD - Pivorak, LvivFrom Rails legacy to DDD - Pivorak, Lviv
From Rails legacy to DDD - Pivorak, LvivAndrzej Krzywda
 
Security Goodness with Ruby on Rails
Security Goodness with Ruby on RailsSecurity Goodness with Ruby on Rails
Security Goodness with Ruby on RailsSource Conference
 
Bitfusion Nimbix Dev Summit Heterogeneous Architectures
Bitfusion Nimbix Dev Summit Heterogeneous Architectures Bitfusion Nimbix Dev Summit Heterogeneous Architectures
Bitfusion Nimbix Dev Summit Heterogeneous Architectures Subbu Rama
 
[Srijan Wednesday Webinars] How to Build a Cloud Native Platform for Enterpri...
[Srijan Wednesday Webinars] How to Build a Cloud Native Platform for Enterpri...[Srijan Wednesday Webinars] How to Build a Cloud Native Platform for Enterpri...
[Srijan Wednesday Webinars] How to Build a Cloud Native Platform for Enterpri...Srijan Technologies
 
Meetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleMeetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleIT Arena
 
Curriculum Vitae - Ravi Gupta
Curriculum Vitae - Ravi GuptaCurriculum Vitae - Ravi Gupta
Curriculum Vitae - Ravi GuptaRavi Raman Gupta
 
Dojo 1.0: Great Experiences For Everyone
Dojo 1.0: Great Experiences For EveryoneDojo 1.0: Great Experiences For Everyone
Dojo 1.0: Great Experiences For Everyoneslightlyoff
 
I got 99 trends and a # is all of them
I got 99 trends and a # is all of themI got 99 trends and a # is all of them
I got 99 trends and a # is all of themRoberto Suggi Liverani
 
Portal / BI 2008 Presentation by Ted Tschopp
Portal / BI 2008 Presentation by Ted TschoppPortal / BI 2008 Presentation by Ted Tschopp
Portal / BI 2008 Presentation by Ted TschoppTed Tschopp
 
Ror Seminar With agilebd.org on 23 Jan09
Ror Seminar With agilebd.org on 23 Jan09Ror Seminar With agilebd.org on 23 Jan09
Ror Seminar With agilebd.org on 23 Jan09Shaer Hassan
 
Fast, Flexible Application Development with Oracle Database Cloud Service
Fast, Flexible Application Development with Oracle Database Cloud ServiceFast, Flexible Application Development with Oracle Database Cloud Service
Fast, Flexible Application Development with Oracle Database Cloud ServiceGustavo Rene Antunez
 
Demystifying Decoupled Drupal for Developers & Content Authors
Demystifying Decoupled Drupal for Developers & Content AuthorsDemystifying Decoupled Drupal for Developers & Content Authors
Demystifying Decoupled Drupal for Developers & Content AuthorsRachel Wandishin
 
A Tour of Ruby On Rails
A Tour of Ruby On RailsA Tour of Ruby On Rails
A Tour of Ruby On RailsDavid Keener
 

Semelhante a CSA on Rails: a practical case-study (20)

re7olabini
re7olabinire7olabini
re7olabini
 
The Importance Things of Full Stack Development
The Importance Things of Full Stack DevelopmentThe Importance Things of Full Stack Development
The Importance Things of Full Stack Development
 
SELF - Becoming a Rails Developer - The Rest of the Story
SELF - Becoming a Rails Developer - The Rest of the StorySELF - Becoming a Rails Developer - The Rest of the Story
SELF - Becoming a Rails Developer - The Rest of the Story
 
Angular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - Linagora
 
The Decoupled CMS in Financial Services
The Decoupled CMS in Financial ServicesThe Decoupled CMS in Financial Services
The Decoupled CMS in Financial Services
 
Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010
 
From Rails legacy to DDD - Pivorak, Lviv
From Rails legacy to DDD - Pivorak, LvivFrom Rails legacy to DDD - Pivorak, Lviv
From Rails legacy to DDD - Pivorak, Lviv
 
Security Goodness with Ruby on Rails
Security Goodness with Ruby on RailsSecurity Goodness with Ruby on Rails
Security Goodness with Ruby on Rails
 
Bitfusion Nimbix Dev Summit Heterogeneous Architectures
Bitfusion Nimbix Dev Summit Heterogeneous Architectures Bitfusion Nimbix Dev Summit Heterogeneous Architectures
Bitfusion Nimbix Dev Summit Heterogeneous Architectures
 
[Srijan Wednesday Webinars] How to Build a Cloud Native Platform for Enterpri...
[Srijan Wednesday Webinars] How to Build a Cloud Native Platform for Enterpri...[Srijan Wednesday Webinars] How to Build a Cloud Native Platform for Enterpri...
[Srijan Wednesday Webinars] How to Build a Cloud Native Platform for Enterpri...
 
Choosing the Right Tool for the Job
Choosing the Right Tool for the JobChoosing the Right Tool for the Job
Choosing the Right Tool for the Job
 
Meetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleMeetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech People
 
Curriculum Vitae - Ravi Gupta
Curriculum Vitae - Ravi GuptaCurriculum Vitae - Ravi Gupta
Curriculum Vitae - Ravi Gupta
 
Dojo 1.0: Great Experiences For Everyone
Dojo 1.0: Great Experiences For EveryoneDojo 1.0: Great Experiences For Everyone
Dojo 1.0: Great Experiences For Everyone
 
I got 99 trends and a # is all of them
I got 99 trends and a # is all of themI got 99 trends and a # is all of them
I got 99 trends and a # is all of them
 
Portal / BI 2008 Presentation by Ted Tschopp
Portal / BI 2008 Presentation by Ted TschoppPortal / BI 2008 Presentation by Ted Tschopp
Portal / BI 2008 Presentation by Ted Tschopp
 
Ror Seminar With agilebd.org on 23 Jan09
Ror Seminar With agilebd.org on 23 Jan09Ror Seminar With agilebd.org on 23 Jan09
Ror Seminar With agilebd.org on 23 Jan09
 
Fast, Flexible Application Development with Oracle Database Cloud Service
Fast, Flexible Application Development with Oracle Database Cloud ServiceFast, Flexible Application Development with Oracle Database Cloud Service
Fast, Flexible Application Development with Oracle Database Cloud Service
 
Demystifying Decoupled Drupal for Developers & Content Authors
Demystifying Decoupled Drupal for Developers & Content AuthorsDemystifying Decoupled Drupal for Developers & Content Authors
Demystifying Decoupled Drupal for Developers & Content Authors
 
A Tour of Ruby On Rails
A Tour of Ruby On RailsA Tour of Ruby On Rails
A Tour of Ruby On Rails
 

Último

Demographic transition and the rise of wealth inequality
Demographic transition and the rise of wealth inequalityDemographic transition and the rise of wealth inequality
Demographic transition and the rise of wealth inequalityGRAPE
 
Banking: Commercial and Central Banking.pptx
Banking: Commercial and Central Banking.pptxBanking: Commercial and Central Banking.pptx
Banking: Commercial and Central Banking.pptxANTHONYAKINYOSOYE1
 
TACLOBAN-CITY-DIVISION-POPQUIZ-2023.pptx
TACLOBAN-CITY-DIVISION-POPQUIZ-2023.pptxTACLOBAN-CITY-DIVISION-POPQUIZ-2023.pptx
TACLOBAN-CITY-DIVISION-POPQUIZ-2023.pptxKathlynVillar
 
Uk-NO1 Rohani Amil In Islamabad Amil Baba in Rawalpindi Kala Jadu Amil In Raw...
Uk-NO1 Rohani Amil In Islamabad Amil Baba in Rawalpindi Kala Jadu Amil In Raw...Uk-NO1 Rohani Amil In Islamabad Amil Baba in Rawalpindi Kala Jadu Amil In Raw...
Uk-NO1 Rohani Amil In Islamabad Amil Baba in Rawalpindi Kala Jadu Amil In Raw...Amil baba
 
Money Forward Integrated Report “Forward Map” 2024
Money Forward Integrated Report “Forward Map” 2024Money Forward Integrated Report “Forward Map” 2024
Money Forward Integrated Report “Forward Map” 2024Money Forward
 
10 QuickBooks Tips 2024 - Globus Finanza.pdf
10 QuickBooks Tips 2024 - Globus Finanza.pdf10 QuickBooks Tips 2024 - Globus Finanza.pdf
10 QuickBooks Tips 2024 - Globus Finanza.pdfglobusfinanza
 
Global Economic Outlook, 2024 - Scholaride Consulting
Global Economic Outlook, 2024 - Scholaride ConsultingGlobal Economic Outlook, 2024 - Scholaride Consulting
Global Economic Outlook, 2024 - Scholaride Consultingswastiknandyofficial
 
2B Nation-State.pptx contemporary world nation
2B  Nation-State.pptx contemporary world nation2B  Nation-State.pptx contemporary world nation
2B Nation-State.pptx contemporary world nationko9240888
 
ΤτΕ: Ανάπτυξη 2,3% και πληθωρισμός 2,8% φέτος
ΤτΕ: Ανάπτυξη 2,3% και πληθωρισμός 2,8% φέτοςΤτΕ: Ανάπτυξη 2,3% και πληθωρισμός 2,8% φέτος
ΤτΕ: Ανάπτυξη 2,3% και πληθωρισμός 2,8% φέτοςNewsroom8
 
What is sip and What are its Benefits in 2024
What is sip and What are its Benefits in 2024What is sip and What are its Benefits in 2024
What is sip and What are its Benefits in 2024prajwalgopocket
 
OAT_RI_Ep18 WeighingTheRisks_Mar24_GlobalCredit.pptx
OAT_RI_Ep18 WeighingTheRisks_Mar24_GlobalCredit.pptxOAT_RI_Ep18 WeighingTheRisks_Mar24_GlobalCredit.pptx
OAT_RI_Ep18 WeighingTheRisks_Mar24_GlobalCredit.pptxhiddenlevers
 
Introduction to Health Economics Dr. R. Kurinji Malar.pptx
Introduction to Health Economics Dr. R. Kurinji Malar.pptxIntroduction to Health Economics Dr. R. Kurinji Malar.pptx
Introduction to Health Economics Dr. R. Kurinji Malar.pptxDrRkurinjiMalarkurin
 
Building pressure? Rising rents, and what to expect in the future
Building pressure? Rising rents, and what to expect in the futureBuilding pressure? Rising rents, and what to expect in the future
Building pressure? Rising rents, and what to expect in the futureResolutionFoundation
 
Hello this ppt is about seminar final project
Hello this ppt is about seminar final projectHello this ppt is about seminar final project
Hello this ppt is about seminar final projectninnasirsi
 
Thoma Bravo Equity - Presentation Pension Fund
Thoma Bravo Equity - Presentation Pension FundThoma Bravo Equity - Presentation Pension Fund
Thoma Bravo Equity - Presentation Pension FundAshwinJey
 
Aon-UK-DC-Pension-Tracker-Q1-2024. slideshare
Aon-UK-DC-Pension-Tracker-Q1-2024. slideshareAon-UK-DC-Pension-Tracker-Q1-2024. slideshare
Aon-UK-DC-Pension-Tracker-Q1-2024. slideshareHenry Tapper
 
ekthesi-trapeza-tis-ellados-gia-2023.pdf
ekthesi-trapeza-tis-ellados-gia-2023.pdfekthesi-trapeza-tis-ellados-gia-2023.pdf
ekthesi-trapeza-tis-ellados-gia-2023.pdfSteliosTheodorou4
 
2024-04-09 - Pension Playpen roundtable - slides.pptx
2024-04-09 - Pension Playpen roundtable - slides.pptx2024-04-09 - Pension Playpen roundtable - slides.pptx
2024-04-09 - Pension Playpen roundtable - slides.pptxHenry Tapper
 
Zimbabwe's New Gold-Backed Currency- A Path to Stability or Another Monetary.pdf
Zimbabwe's New Gold-Backed Currency- A Path to Stability or Another Monetary.pdfZimbabwe's New Gold-Backed Currency- A Path to Stability or Another Monetary.pdf
Zimbabwe's New Gold-Backed Currency- A Path to Stability or Another Monetary.pdfFREELANCER
 

Último (19)

Demographic transition and the rise of wealth inequality
Demographic transition and the rise of wealth inequalityDemographic transition and the rise of wealth inequality
Demographic transition and the rise of wealth inequality
 
Banking: Commercial and Central Banking.pptx
Banking: Commercial and Central Banking.pptxBanking: Commercial and Central Banking.pptx
Banking: Commercial and Central Banking.pptx
 
TACLOBAN-CITY-DIVISION-POPQUIZ-2023.pptx
TACLOBAN-CITY-DIVISION-POPQUIZ-2023.pptxTACLOBAN-CITY-DIVISION-POPQUIZ-2023.pptx
TACLOBAN-CITY-DIVISION-POPQUIZ-2023.pptx
 
Uk-NO1 Rohani Amil In Islamabad Amil Baba in Rawalpindi Kala Jadu Amil In Raw...
Uk-NO1 Rohani Amil In Islamabad Amil Baba in Rawalpindi Kala Jadu Amil In Raw...Uk-NO1 Rohani Amil In Islamabad Amil Baba in Rawalpindi Kala Jadu Amil In Raw...
Uk-NO1 Rohani Amil In Islamabad Amil Baba in Rawalpindi Kala Jadu Amil In Raw...
 
Money Forward Integrated Report “Forward Map” 2024
Money Forward Integrated Report “Forward Map” 2024Money Forward Integrated Report “Forward Map” 2024
Money Forward Integrated Report “Forward Map” 2024
 
10 QuickBooks Tips 2024 - Globus Finanza.pdf
10 QuickBooks Tips 2024 - Globus Finanza.pdf10 QuickBooks Tips 2024 - Globus Finanza.pdf
10 QuickBooks Tips 2024 - Globus Finanza.pdf
 
Global Economic Outlook, 2024 - Scholaride Consulting
Global Economic Outlook, 2024 - Scholaride ConsultingGlobal Economic Outlook, 2024 - Scholaride Consulting
Global Economic Outlook, 2024 - Scholaride Consulting
 
2B Nation-State.pptx contemporary world nation
2B  Nation-State.pptx contemporary world nation2B  Nation-State.pptx contemporary world nation
2B Nation-State.pptx contemporary world nation
 
ΤτΕ: Ανάπτυξη 2,3% και πληθωρισμός 2,8% φέτος
ΤτΕ: Ανάπτυξη 2,3% και πληθωρισμός 2,8% φέτοςΤτΕ: Ανάπτυξη 2,3% και πληθωρισμός 2,8% φέτος
ΤτΕ: Ανάπτυξη 2,3% και πληθωρισμός 2,8% φέτος
 
What is sip and What are its Benefits in 2024
What is sip and What are its Benefits in 2024What is sip and What are its Benefits in 2024
What is sip and What are its Benefits in 2024
 
OAT_RI_Ep18 WeighingTheRisks_Mar24_GlobalCredit.pptx
OAT_RI_Ep18 WeighingTheRisks_Mar24_GlobalCredit.pptxOAT_RI_Ep18 WeighingTheRisks_Mar24_GlobalCredit.pptx
OAT_RI_Ep18 WeighingTheRisks_Mar24_GlobalCredit.pptx
 
Introduction to Health Economics Dr. R. Kurinji Malar.pptx
Introduction to Health Economics Dr. R. Kurinji Malar.pptxIntroduction to Health Economics Dr. R. Kurinji Malar.pptx
Introduction to Health Economics Dr. R. Kurinji Malar.pptx
 
Building pressure? Rising rents, and what to expect in the future
Building pressure? Rising rents, and what to expect in the futureBuilding pressure? Rising rents, and what to expect in the future
Building pressure? Rising rents, and what to expect in the future
 
Hello this ppt is about seminar final project
Hello this ppt is about seminar final projectHello this ppt is about seminar final project
Hello this ppt is about seminar final project
 
Thoma Bravo Equity - Presentation Pension Fund
Thoma Bravo Equity - Presentation Pension FundThoma Bravo Equity - Presentation Pension Fund
Thoma Bravo Equity - Presentation Pension Fund
 
Aon-UK-DC-Pension-Tracker-Q1-2024. slideshare
Aon-UK-DC-Pension-Tracker-Q1-2024. slideshareAon-UK-DC-Pension-Tracker-Q1-2024. slideshare
Aon-UK-DC-Pension-Tracker-Q1-2024. slideshare
 
ekthesi-trapeza-tis-ellados-gia-2023.pdf
ekthesi-trapeza-tis-ellados-gia-2023.pdfekthesi-trapeza-tis-ellados-gia-2023.pdf
ekthesi-trapeza-tis-ellados-gia-2023.pdf
 
2024-04-09 - Pension Playpen roundtable - slides.pptx
2024-04-09 - Pension Playpen roundtable - slides.pptx2024-04-09 - Pension Playpen roundtable - slides.pptx
2024-04-09 - Pension Playpen roundtable - slides.pptx
 
Zimbabwe's New Gold-Backed Currency- A Path to Stability or Another Monetary.pdf
Zimbabwe's New Gold-Backed Currency- A Path to Stability or Another Monetary.pdfZimbabwe's New Gold-Backed Currency- A Path to Stability or Another Monetary.pdf
Zimbabwe's New Gold-Backed Currency- A Path to Stability or Another Monetary.pdf
 

CSA on Rails: a practical case-study

  • 1. CSA on Rails : a practical case-study Ruby and Rails Devroom FOSDEM, 24.02.2008 Bernard Dubuisson, CSA bernard@dub.be Damien Merenne, Cosinux dam@cosinux.org
  • 2. About this presentation “I am no Ruby or RoR specialist and wouldn't myself call a developper, I just happened to get my hands on RoR at the right time and found my way through it much like a lot of people did with HTML, 15 years ago. There's a lot to say about our quot;real lifequot; project, but not much on the techy side, I guess.”
  • 3. What this is about 1.Brief context overview 2.Why Ruby on Rails 3.A global description of the solution 4.Basic project data such as budget, time spent, ... 5.Strength and weaknesses of ROR 6.Working internally : pros and cons 7.Conclusions
  • 4. Overview : CSA ● CSA = Conseil supérieur de l'audiovisuel, Regulation authority for the French Community ● A public agency with a large autonomy ● 22 people on the payroll ● Lots of documents produced inside of a legal framework
  • 5. Overview : website needs ● Existing website ... – Custom made, dynamic (ASP) – Poor usability – High maintenance costs ● ... facing new needs – Evolutive solution – Management of large amount of information – Links between contents – Evolution of users practices
  • 6. Overview : website needs ● Basic CMS features : – Access to documents, news, events, links, ... – Large amount of data – Update by several people ● Global objectives : – Complete information – Easy access – Interactivity
  • 7. Why Ruby on Rails?
  • 8. Why Ruby on Rails Open source CMS (Drupal) : the Playmobil approach – Nice and easy – Very little customization possible
  • 9. Why Ruby on Rails PHP : the Mecano approach • Taylor-made • Not much help
  • 10. Why Ruby on Rails ● Ruby on Rails : the Lego approach – Flexible, easy to assemble – From simple to complex systems
  • 11. Our methodology ● The development would be internalized – 1 in-house developper : ● Project management, information architecture, usability and webdesign background ● Out of main attributions – 1 external coach : ● Professional RoR consultant
  • 13. The solution ● A full featured CMS built with RoR 1.1.6 ● Every content can be managed through forms ● A lot of features are “out of the box”
  • 14. The solution ● Features : – Document repository, News and Agenda (external and internal), Links, FAQ – “e-Booth” : subscriptions, complaints, questions, orders, – Newsletter tool, Meeting support, Minisites
  • 15. Content models ● Generic Content model (no single table inheritance) • Specific content models : • Pages : generic static page (Tiny MCE) • Documents : mostly PDF • News • Events, Meetings • Organs • People, Members
  • 16. Other models ● Other “supporting” models : User, Menu,Tag, Category, Message, Visitor, Newsletter, ... ● Role-based access : different permission levels ● Extranet features : the same page can render different informations depending on the user's permission (ex. Meetings).
  • 17. A Meeting page for a regular user
  • 18. A Meeting page for a internal user
  • 19. Plugins ● Authentication and role-based access ● Search engine ● Usability features ● Error notification ● Expand RoR 1.1.6 possibilities
  • 20. Hosting ● Hosted on a VPS over at Railsmachine.com (100$/month) ● Rails dedicated company with extensive experience and referential clients ● Eventually, in a datacenter located in Europe
  • 21. Facts and figures dub-macbook:~/Sites/trunk dub$ rake stats (in /Users/dub/Sites/trunk) +----------------------+-------+-------+---------+---------+-----+-------+ | Name | Lines | LOC | Classes | Methods | M/C | LOC/M | +----------------------+-------+-------+---------+---------+-----+-------+ | Controllers | 2830 | 2255 | 32 | 246 | 7 | 7 | | Helpers | 771 | 578 | 0 | 61 | 0 | 7 | | Models | 1130 | 865 | 44 | 109 | 2 | 5 | | Libraries | 1111 | 670 | 12 | 57 | 4 | 9 | | Components | 0 | 0 | 0 | 0 | 0 | 0 | | Functional tests | 1316 | 959 | 34 | 115 | 3 | 6 | | Unit tests | 624 | 487 | 19 | 64 | 3 | 5 | +----------------------+-------+-------+---------+---------+-----+-------+ | Total | 7782 | 5814 | 141 | 652 | 4 | 6 | +----------------------+-------+-------+---------+---------+-----+-------+ Code LOC: 4368 Test LOC: 1446 Code to Test Ratio: 1:0.3
  • 22. Facts and figures ● Main developper : approximately 500 hours, including learning curve ● Coach : approximately 12 days, including – coaching – development of complex features – server configuration, deployment, sysadmin
  • 23. Facts and figures ● Overal cost : < 10.000 EUR – coach, – hosting – productivity tools – excluding in-house developper
  • 24. Ruby on Rails : strengths and weaknesses
  • 25. RoR Strengths – Ruby is easy to learn – Ruby on Rails is oriented towards good development practices : ● Model-View- ● Migrations Controller ● Use of SVN ● Unit and ● Code documentation functional testing ● Explicit names ● DRY ● Environments ● Content/layout ● ... separation
  • 26. RoR Strengths ● Rails provides a rapid development framework ● You get seldom or never lost or stuck with problems or errors – Explicit error messages – Good community support
  • 27. RoR Strengths ● Rails' production deployment and official launch worked without clouds, no application crashes ● Rails has lots of built-in time- saving features (pagination, validation, ...) ● Rails community provides a large range of available plugins ● Ruby is open to third party applications and technologies, ...
  • 28. RoR Weaknesses ● Ruby is slow ● Needs a special hosting config and sysadmin care (not fit for shared hosting) ● Constant evolution of Rails needs monitoring ● Slow spread among “real world” developers
  • 29. RoR Weaknesses ● Relying on plugins isn't always a good thing ● Code can lack clarity (DRY, haiku style and inheritance) ● Charset use can be tricky for non- English
  • 30. Confronting RoR “mythology” ● Testing – Requires a particular set of competencies, it's not easy and very well documented (for example, document upload testing) – For this reason, we couldn't afford to complete all the tests that the code would have required
  • 31. Confronting RoR “mythology” ● DRY – In some cases, the DRY approach requires some extra effort that isn't worth the gain – Perfection vs. realism : Sometimes, it can be more productive to just RY
  • 32. Working internally : pros and cons, conditions of success
  • 33. Working internally ● A in-house developper with non exclusively technical attributions, coached and helped by a professionnal ● Pros : – Allows to develop with the user's needs in mind. Very little user- developper translation needed – Reduced cost – Allows constant upgrading and light- touch evolutions – User empowerment
  • 34. Working internally ● Cons : – Need to find the “right” in-house profile and competencies – Attribution conflicts – Time availability (development spread over 9 months) – Authority on the development team
  • 35. Working internally ● Conditions of success : – Fair amount of trust from hierarchy, autonomy – Little pressure on deadlines – Start from scratch, no legacy – Backup plan ● Ruby on Rails is the ideal tool for this kind of user empowerment
  • 37. Conclusions ● Ruby on Rails is a mature, efficient, powerful framework for quality web-based applications ● To us, Rails is all about user empowerment. It allowed us to build a custom CMS we couldn't have dreamed of in another context
  • 38. Conclusions ● Reverse approach : Bringing the user on the developer's ground vs. bringing the developer to the user's ground ● Requires the right people and the right context ● Could become a real nightmare in the “wrong hands” (see HTML) ● Rails also comes with a philosophy that prevents bad coding habits