SlideShare una empresa de Scribd logo
1 de 40
Descargar para leer sin conexión
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

Más contenido relacionado

Destacado

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
 

Destacado (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
 

Similar 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
 

Similar 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

Vip Call US 📞 7738631006 ✅Call Girls In Sakinaka ( Mumbai )
Vip Call US 📞 7738631006 ✅Call Girls In Sakinaka ( Mumbai )Vip Call US 📞 7738631006 ✅Call Girls In Sakinaka ( Mumbai )
Vip Call US 📞 7738631006 ✅Call Girls In Sakinaka ( Mumbai )Pooja Nehwal
 
TEST BANK For Corporate Finance, 13th Edition By Stephen Ross, Randolph Weste...
TEST BANK For Corporate Finance, 13th Edition By Stephen Ross, Randolph Weste...TEST BANK For Corporate Finance, 13th Edition By Stephen Ross, Randolph Weste...
TEST BANK For Corporate Finance, 13th Edition By Stephen Ross, Randolph Weste...ssifa0344
 
High Class Call Girls Nashik Maya 7001305949 Independent Escort Service Nashik
High Class Call Girls Nashik Maya 7001305949 Independent Escort Service NashikHigh Class Call Girls Nashik Maya 7001305949 Independent Escort Service Nashik
High Class Call Girls Nashik Maya 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 
Top Rated Pune Call Girls Viman Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Sex...
Top Rated  Pune Call Girls Viman Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Sex...Top Rated  Pune Call Girls Viman Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Sex...
Top Rated Pune Call Girls Viman Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Sex...Call Girls in Nagpur High Profile
 
Call Girls Koregaon Park Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Koregaon Park Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Koregaon Park Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Koregaon Park Call Me 7737669865 Budget Friendly No Advance Bookingroncy bisnoi
 
The Economic History of the U.S. Lecture 19.pdf
The Economic History of the U.S. Lecture 19.pdfThe Economic History of the U.S. Lecture 19.pdf
The Economic History of the U.S. Lecture 19.pdfGale Pooley
 
High Class Call Girls Nagpur Grishma Call 7001035870 Meet With Nagpur Escorts
High Class Call Girls Nagpur Grishma Call 7001035870 Meet With Nagpur EscortsHigh Class Call Girls Nagpur Grishma Call 7001035870 Meet With Nagpur Escorts
High Class Call Girls Nagpur Grishma Call 7001035870 Meet With Nagpur Escortsranjana rawat
 
00_Main ppt_MeetupDORA&CyberSecurity.pptx
00_Main ppt_MeetupDORA&CyberSecurity.pptx00_Main ppt_MeetupDORA&CyberSecurity.pptx
00_Main ppt_MeetupDORA&CyberSecurity.pptxFinTech Belgium
 
The Economic History of the U.S. Lecture 25.pdf
The Economic History of the U.S. Lecture 25.pdfThe Economic History of the U.S. Lecture 25.pdf
The Economic History of the U.S. Lecture 25.pdfGale Pooley
 
Independent Call Girl Number in Kurla Mumbai📲 Pooja Nehwal 9892124323 💞 Full ...
Independent Call Girl Number in Kurla Mumbai📲 Pooja Nehwal 9892124323 💞 Full ...Independent Call Girl Number in Kurla Mumbai📲 Pooja Nehwal 9892124323 💞 Full ...
Independent Call Girl Number in Kurla Mumbai📲 Pooja Nehwal 9892124323 💞 Full ...Pooja Nehwal
 
Stock Market Brief Deck (Under Pressure).pdf
Stock Market Brief Deck (Under Pressure).pdfStock Market Brief Deck (Under Pressure).pdf
Stock Market Brief Deck (Under Pressure).pdfMichael Silva
 
The Economic History of the U.S. Lecture 18.pdf
The Economic History of the U.S. Lecture 18.pdfThe Economic History of the U.S. Lecture 18.pdf
The Economic History of the U.S. Lecture 18.pdfGale Pooley
 
05_Annelore Lenoir_Docbyte_MeetupDora&Cybersecurity.pptx
05_Annelore Lenoir_Docbyte_MeetupDora&Cybersecurity.pptx05_Annelore Lenoir_Docbyte_MeetupDora&Cybersecurity.pptx
05_Annelore Lenoir_Docbyte_MeetupDora&Cybersecurity.pptxFinTech Belgium
 
20240429 Calibre April 2024 Investor Presentation.pdf
20240429 Calibre April 2024 Investor Presentation.pdf20240429 Calibre April 2024 Investor Presentation.pdf
20240429 Calibre April 2024 Investor Presentation.pdfAdnet Communications
 
The Economic History of the U.S. Lecture 30.pdf
The Economic History of the U.S. Lecture 30.pdfThe Economic History of the U.S. Lecture 30.pdf
The Economic History of the U.S. Lecture 30.pdfGale Pooley
 
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best sexual serviceanilsa9823
 
02_Fabio Colombo_Accenture_MeetupDora&Cybersecurity.pptx
02_Fabio Colombo_Accenture_MeetupDora&Cybersecurity.pptx02_Fabio Colombo_Accenture_MeetupDora&Cybersecurity.pptx
02_Fabio Colombo_Accenture_MeetupDora&Cybersecurity.pptxFinTech Belgium
 

Último (20)

Vip Call US 📞 7738631006 ✅Call Girls In Sakinaka ( Mumbai )
Vip Call US 📞 7738631006 ✅Call Girls In Sakinaka ( Mumbai )Vip Call US 📞 7738631006 ✅Call Girls In Sakinaka ( Mumbai )
Vip Call US 📞 7738631006 ✅Call Girls In Sakinaka ( Mumbai )
 
(INDIRA) Call Girl Mumbai Call Now 8250077686 Mumbai Escorts 24x7
(INDIRA) Call Girl Mumbai Call Now 8250077686 Mumbai Escorts 24x7(INDIRA) Call Girl Mumbai Call Now 8250077686 Mumbai Escorts 24x7
(INDIRA) Call Girl Mumbai Call Now 8250077686 Mumbai Escorts 24x7
 
TEST BANK For Corporate Finance, 13th Edition By Stephen Ross, Randolph Weste...
TEST BANK For Corporate Finance, 13th Edition By Stephen Ross, Randolph Weste...TEST BANK For Corporate Finance, 13th Edition By Stephen Ross, Randolph Weste...
TEST BANK For Corporate Finance, 13th Edition By Stephen Ross, Randolph Weste...
 
VIP Independent Call Girls in Bandra West 🌹 9920725232 ( Call Me ) Mumbai Esc...
VIP Independent Call Girls in Bandra West 🌹 9920725232 ( Call Me ) Mumbai Esc...VIP Independent Call Girls in Bandra West 🌹 9920725232 ( Call Me ) Mumbai Esc...
VIP Independent Call Girls in Bandra West 🌹 9920725232 ( Call Me ) Mumbai Esc...
 
High Class Call Girls Nashik Maya 7001305949 Independent Escort Service Nashik
High Class Call Girls Nashik Maya 7001305949 Independent Escort Service NashikHigh Class Call Girls Nashik Maya 7001305949 Independent Escort Service Nashik
High Class Call Girls Nashik Maya 7001305949 Independent Escort Service Nashik
 
Top Rated Pune Call Girls Viman Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Sex...
Top Rated  Pune Call Girls Viman Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Sex...Top Rated  Pune Call Girls Viman Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Sex...
Top Rated Pune Call Girls Viman Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Sex...
 
Call Girls Koregaon Park Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Koregaon Park Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Koregaon Park Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Koregaon Park Call Me 7737669865 Budget Friendly No Advance Booking
 
VIP Independent Call Girls in Andheri 🌹 9920725232 ( Call Me ) Mumbai Escorts...
VIP Independent Call Girls in Andheri 🌹 9920725232 ( Call Me ) Mumbai Escorts...VIP Independent Call Girls in Andheri 🌹 9920725232 ( Call Me ) Mumbai Escorts...
VIP Independent Call Girls in Andheri 🌹 9920725232 ( Call Me ) Mumbai Escorts...
 
The Economic History of the U.S. Lecture 19.pdf
The Economic History of the U.S. Lecture 19.pdfThe Economic History of the U.S. Lecture 19.pdf
The Economic History of the U.S. Lecture 19.pdf
 
High Class Call Girls Nagpur Grishma Call 7001035870 Meet With Nagpur Escorts
High Class Call Girls Nagpur Grishma Call 7001035870 Meet With Nagpur EscortsHigh Class Call Girls Nagpur Grishma Call 7001035870 Meet With Nagpur Escorts
High Class Call Girls Nagpur Grishma Call 7001035870 Meet With Nagpur Escorts
 
00_Main ppt_MeetupDORA&CyberSecurity.pptx
00_Main ppt_MeetupDORA&CyberSecurity.pptx00_Main ppt_MeetupDORA&CyberSecurity.pptx
00_Main ppt_MeetupDORA&CyberSecurity.pptx
 
The Economic History of the U.S. Lecture 25.pdf
The Economic History of the U.S. Lecture 25.pdfThe Economic History of the U.S. Lecture 25.pdf
The Economic History of the U.S. Lecture 25.pdf
 
Independent Call Girl Number in Kurla Mumbai📲 Pooja Nehwal 9892124323 💞 Full ...
Independent Call Girl Number in Kurla Mumbai📲 Pooja Nehwal 9892124323 💞 Full ...Independent Call Girl Number in Kurla Mumbai📲 Pooja Nehwal 9892124323 💞 Full ...
Independent Call Girl Number in Kurla Mumbai📲 Pooja Nehwal 9892124323 💞 Full ...
 
Stock Market Brief Deck (Under Pressure).pdf
Stock Market Brief Deck (Under Pressure).pdfStock Market Brief Deck (Under Pressure).pdf
Stock Market Brief Deck (Under Pressure).pdf
 
The Economic History of the U.S. Lecture 18.pdf
The Economic History of the U.S. Lecture 18.pdfThe Economic History of the U.S. Lecture 18.pdf
The Economic History of the U.S. Lecture 18.pdf
 
05_Annelore Lenoir_Docbyte_MeetupDora&Cybersecurity.pptx
05_Annelore Lenoir_Docbyte_MeetupDora&Cybersecurity.pptx05_Annelore Lenoir_Docbyte_MeetupDora&Cybersecurity.pptx
05_Annelore Lenoir_Docbyte_MeetupDora&Cybersecurity.pptx
 
20240429 Calibre April 2024 Investor Presentation.pdf
20240429 Calibre April 2024 Investor Presentation.pdf20240429 Calibre April 2024 Investor Presentation.pdf
20240429 Calibre April 2024 Investor Presentation.pdf
 
The Economic History of the U.S. Lecture 30.pdf
The Economic History of the U.S. Lecture 30.pdfThe Economic History of the U.S. Lecture 30.pdf
The Economic History of the U.S. Lecture 30.pdf
 
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best sexual service
 
02_Fabio Colombo_Accenture_MeetupDora&Cybersecurity.pptx
02_Fabio Colombo_Accenture_MeetupDora&Cybersecurity.pptx02_Fabio Colombo_Accenture_MeetupDora&Cybersecurity.pptx
02_Fabio Colombo_Accenture_MeetupDora&Cybersecurity.pptx
 

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