SlideShare a Scribd company logo
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

More Related Content

Viewers also liked

Ruby: Fun, Productive and Open Source
Ruby: Fun, Productive and Open SourceRuby: Fun, Productive and Open Source
Ruby: Fun, Productive and Open Source
Eleanor McHugh
 
Rails course day 4
Rails course day 4Rails course day 4
Rails course day 4
Al Sayed Gamal
 
Ruby on Rails Meets Enterprise Applications
Ruby on Rails Meets Enterprise ApplicationsRuby on Rails Meets Enterprise Applications
Ruby on Rails Meets Enterprise Applications
dan_mcweeney
 
Rails course day 8
Rails course day 8Rails course day 8
Rails course day 8
Al Sayed Gamal
 
Rails01
Rails01Rails01
Rails course day 2
Rails course  day 2Rails course  day 2
Rails course day 2
Al Sayed Gamal
 
[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
 
Rails course day 6
Rails course day 6Rails course day 6
Rails course day 6
Al Sayed Gamal
 
Rails 5 All topic Notes
Rails 5 All  topic NotesRails 5 All  topic Notes
Rails 5 All topic Notes
Manish Sakariya
 
Ruby and Docker on Rails
Ruby and Docker on RailsRuby and Docker on Rails
Ruby and Docker on Rails
Muriel Salvan
 
Rails view chapte 5 - form
Rails view   chapte 5 - formRails view   chapte 5 - form
Rails view chapte 5 - form
Thaichor 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 5
jakemallory
 
Ionic Hybrid Mobile Application
Ionic Hybrid Mobile ApplicationIonic Hybrid Mobile Application
Ionic Hybrid Mobile Application
Al Sayed Gamal
 
Rails course day 5
Rails course day 5Rails course day 5
Rails course day 5
Al 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 Up
Joe Ferguson
 
Hd 10 japan
Hd 10 japanHd 10 japan
Hd 10 japan
bryanbibat
 
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 和 Ajax
Wen-Tien Chang
 
Rails course day 3
Rails course day 3Rails course day 3
Rails course day 3
Al Sayed Gamal
 
Prototype design patterns
Prototype design patternsPrototype design patterns
Prototype design patterns
Thaichor Seng
 

Viewers also liked (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 to CSA on Rails: a practical case-study

re7olabini
re7olabinire7olabini
re7olabini
guest6850dd
 
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
Mike 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 Story
Nathanial 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 - Linagora
LINAGORA
 
The Decoupled CMS in Financial Services
The Decoupled CMS in Financial ServicesThe Decoupled CMS in Financial Services
The Decoupled CMS in Financial Services
Open Source Strategy Forum
 
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
arif44
 
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
Andrzej Krzywda
 
Security Goodness with Ruby on Rails
Security Goodness with Ruby on RailsSecurity Goodness with Ruby on Rails
Security Goodness with Ruby on Rails
Source 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
 
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
Salesforce Developers
 
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
IT Arena
 
Curriculum Vitae - Ravi Gupta
Curriculum Vitae - Ravi GuptaCurriculum Vitae - Ravi Gupta
Curriculum Vitae - Ravi Gupta
Ravi 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 Everyone
slightlyoff
 
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
Roberto 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 Tschopp
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
Shaer 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 Service
Gustavo 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 Authors
Rachel Wandishin
 
A Tour of Ruby On Rails
A Tour of Ruby On RailsA Tour of Ruby On Rails
A Tour of Ruby On Rails
David Keener
 

Similar to 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
 

Recently uploaded

^%$Zone1:+971)581248768’][* Legit & Safe #Abortion #Pills #For #Sale In #Duba...
^%$Zone1:+971)581248768’][* Legit & Safe #Abortion #Pills #For #Sale In #Duba...^%$Zone1:+971)581248768’][* Legit & Safe #Abortion #Pills #For #Sale In #Duba...
^%$Zone1:+971)581248768’][* Legit & Safe #Abortion #Pills #For #Sale In #Duba...
mayaclinic18
 
Does teamwork really matter? Looking beyond the job posting to understand lab...
Does teamwork really matter? Looking beyond the job posting to understand lab...Does teamwork really matter? Looking beyond the job posting to understand lab...
Does teamwork really matter? Looking beyond the job posting to understand lab...
Labour Market Information Council | Conseil de l’information sur le marché du travail
 
快速制作美国迈阿密大学牛津分校毕业证文凭证书英文原版一模一样
快速制作美国迈阿密大学牛津分校毕业证文凭证书英文原版一模一样快速制作美国迈阿密大学牛津分校毕业证文凭证书英文原版一模一样
快速制作美国迈阿密大学牛津分校毕业证文凭证书英文原版一模一样
rlo9fxi
 
Ending stagnation: How to boost prosperity across Scotland
Ending stagnation: How to boost prosperity across ScotlandEnding stagnation: How to boost prosperity across Scotland
Ending stagnation: How to boost prosperity across Scotland
ResolutionFoundation
 
Earn a passive income with prosocial investing
Earn a passive income with prosocial investingEarn a passive income with prosocial investing
Earn a passive income with prosocial investing
Colin R. Turner
 
Unlock-the-Power-of-UAN-Your-Key-to-Secure-Retirement.pptx
Unlock-the-Power-of-UAN-Your-Key-to-Secure-Retirement.pptxUnlock-the-Power-of-UAN-Your-Key-to-Secure-Retirement.pptx
Unlock-the-Power-of-UAN-Your-Key-to-Secure-Retirement.pptx
cosmo-soil
 
Applying the Global Internal Audit Standards_AIS.pdf
Applying the Global Internal Audit Standards_AIS.pdfApplying the Global Internal Audit Standards_AIS.pdf
Applying the Global Internal Audit Standards_AIS.pdf
alexiusbrian1
 
falcon-invoice-discounting-a-strategic-approach-to-optimize-investments
falcon-invoice-discounting-a-strategic-approach-to-optimize-investmentsfalcon-invoice-discounting-a-strategic-approach-to-optimize-investments
falcon-invoice-discounting-a-strategic-approach-to-optimize-investments
Falcon Invoice Discounting
 
一比一原版(RMIT毕业证)皇家墨尔本理工大学毕业证如何办理
一比一原版(RMIT毕业证)皇家墨尔本理工大学毕业证如何办理一比一原版(RMIT毕业证)皇家墨尔本理工大学毕业证如何办理
一比一原版(RMIT毕业证)皇家墨尔本理工大学毕业证如何办理
k4ncd0z
 
STREETONOMICS: Exploring the Uncharted Territories of Informal Markets throug...
STREETONOMICS: Exploring the Uncharted Territories of Informal Markets throug...STREETONOMICS: Exploring the Uncharted Territories of Informal Markets throug...
STREETONOMICS: Exploring the Uncharted Territories of Informal Markets throug...
sameer shah
 
The state of welfare Resolution Foundation Event
The state of welfare Resolution Foundation EventThe state of welfare Resolution Foundation Event
The state of welfare Resolution Foundation Event
ResolutionFoundation
 
在线办理(GU毕业证书)美国贡萨加大学毕业证学历证书一模一样
在线办理(GU毕业证书)美国贡萨加大学毕业证学历证书一模一样在线办理(GU毕业证书)美国贡萨加大学毕业证学历证书一模一样
在线办理(GU毕业证书)美国贡萨加大学毕业证学历证书一模一样
5spllj1l
 
Solution Manual For Financial Accounting, 8th Canadian Edition 2024, by Libby...
Solution Manual For Financial Accounting, 8th Canadian Edition 2024, by Libby...Solution Manual For Financial Accounting, 8th Canadian Edition 2024, by Libby...
Solution Manual For Financial Accounting, 8th Canadian Edition 2024, by Libby...
Donc Test
 
1. Elemental Economics - Introduction to mining.pdf
1. Elemental Economics - Introduction to mining.pdf1. Elemental Economics - Introduction to mining.pdf
1. Elemental Economics - Introduction to mining.pdf
Neal Brewster
 
Independent Study - College of Wooster Research (2023-2024) FDI, Culture, Glo...
Independent Study - College of Wooster Research (2023-2024) FDI, Culture, Glo...Independent Study - College of Wooster Research (2023-2024) FDI, Culture, Glo...
Independent Study - College of Wooster Research (2023-2024) FDI, Culture, Glo...
AntoniaOwensDetwiler
 
Using Online job postings and survey data to understand labour market trends
Using Online job postings and survey data to understand labour market trendsUsing Online job postings and survey data to understand labour market trends
Using Online job postings and survey data to understand labour market trends
Labour Market Information Council | Conseil de l’information sur le marché du travail
 
Tdasx: In-Depth Analysis of Cryptocurrency Giveaway Scams and Security Strate...
Tdasx: In-Depth Analysis of Cryptocurrency Giveaway Scams and Security Strate...Tdasx: In-Depth Analysis of Cryptocurrency Giveaway Scams and Security Strate...
Tdasx: In-Depth Analysis of Cryptocurrency Giveaway Scams and Security Strate...
nimaruinazawa258
 
快速办理(SMU毕业证书)南卫理公会大学毕业证毕业完成信一模一样
快速办理(SMU毕业证书)南卫理公会大学毕业证毕业完成信一模一样快速办理(SMU毕业证书)南卫理公会大学毕业证毕业完成信一模一样
快速办理(SMU毕业证书)南卫理公会大学毕业证毕业完成信一模一样
5spllj1l
 
在线办理(TAMU毕业证书)美国德州农工大学毕业证PDF成绩单一模一样
在线办理(TAMU毕业证书)美国德州农工大学毕业证PDF成绩单一模一样在线办理(TAMU毕业证书)美国德州农工大学毕业证PDF成绩单一模一样
在线办理(TAMU毕业证书)美国德州农工大学毕业证PDF成绩单一模一样
5spllj1l
 
Money20/20 and EU Networking Event of 20/24!
Money20/20 and EU Networking Event of 20/24!Money20/20 and EU Networking Event of 20/24!
Money20/20 and EU Networking Event of 20/24!
FinTech Belgium
 

Recently uploaded (20)

^%$Zone1:+971)581248768’][* Legit & Safe #Abortion #Pills #For #Sale In #Duba...
^%$Zone1:+971)581248768’][* Legit & Safe #Abortion #Pills #For #Sale In #Duba...^%$Zone1:+971)581248768’][* Legit & Safe #Abortion #Pills #For #Sale In #Duba...
^%$Zone1:+971)581248768’][* Legit & Safe #Abortion #Pills #For #Sale In #Duba...
 
Does teamwork really matter? Looking beyond the job posting to understand lab...
Does teamwork really matter? Looking beyond the job posting to understand lab...Does teamwork really matter? Looking beyond the job posting to understand lab...
Does teamwork really matter? Looking beyond the job posting to understand lab...
 
快速制作美国迈阿密大学牛津分校毕业证文凭证书英文原版一模一样
快速制作美国迈阿密大学牛津分校毕业证文凭证书英文原版一模一样快速制作美国迈阿密大学牛津分校毕业证文凭证书英文原版一模一样
快速制作美国迈阿密大学牛津分校毕业证文凭证书英文原版一模一样
 
Ending stagnation: How to boost prosperity across Scotland
Ending stagnation: How to boost prosperity across ScotlandEnding stagnation: How to boost prosperity across Scotland
Ending stagnation: How to boost prosperity across Scotland
 
Earn a passive income with prosocial investing
Earn a passive income with prosocial investingEarn a passive income with prosocial investing
Earn a passive income with prosocial investing
 
Unlock-the-Power-of-UAN-Your-Key-to-Secure-Retirement.pptx
Unlock-the-Power-of-UAN-Your-Key-to-Secure-Retirement.pptxUnlock-the-Power-of-UAN-Your-Key-to-Secure-Retirement.pptx
Unlock-the-Power-of-UAN-Your-Key-to-Secure-Retirement.pptx
 
Applying the Global Internal Audit Standards_AIS.pdf
Applying the Global Internal Audit Standards_AIS.pdfApplying the Global Internal Audit Standards_AIS.pdf
Applying the Global Internal Audit Standards_AIS.pdf
 
falcon-invoice-discounting-a-strategic-approach-to-optimize-investments
falcon-invoice-discounting-a-strategic-approach-to-optimize-investmentsfalcon-invoice-discounting-a-strategic-approach-to-optimize-investments
falcon-invoice-discounting-a-strategic-approach-to-optimize-investments
 
一比一原版(RMIT毕业证)皇家墨尔本理工大学毕业证如何办理
一比一原版(RMIT毕业证)皇家墨尔本理工大学毕业证如何办理一比一原版(RMIT毕业证)皇家墨尔本理工大学毕业证如何办理
一比一原版(RMIT毕业证)皇家墨尔本理工大学毕业证如何办理
 
STREETONOMICS: Exploring the Uncharted Territories of Informal Markets throug...
STREETONOMICS: Exploring the Uncharted Territories of Informal Markets throug...STREETONOMICS: Exploring the Uncharted Territories of Informal Markets throug...
STREETONOMICS: Exploring the Uncharted Territories of Informal Markets throug...
 
The state of welfare Resolution Foundation Event
The state of welfare Resolution Foundation EventThe state of welfare Resolution Foundation Event
The state of welfare Resolution Foundation Event
 
在线办理(GU毕业证书)美国贡萨加大学毕业证学历证书一模一样
在线办理(GU毕业证书)美国贡萨加大学毕业证学历证书一模一样在线办理(GU毕业证书)美国贡萨加大学毕业证学历证书一模一样
在线办理(GU毕业证书)美国贡萨加大学毕业证学历证书一模一样
 
Solution Manual For Financial Accounting, 8th Canadian Edition 2024, by Libby...
Solution Manual For Financial Accounting, 8th Canadian Edition 2024, by Libby...Solution Manual For Financial Accounting, 8th Canadian Edition 2024, by Libby...
Solution Manual For Financial Accounting, 8th Canadian Edition 2024, by Libby...
 
1. Elemental Economics - Introduction to mining.pdf
1. Elemental Economics - Introduction to mining.pdf1. Elemental Economics - Introduction to mining.pdf
1. Elemental Economics - Introduction to mining.pdf
 
Independent Study - College of Wooster Research (2023-2024) FDI, Culture, Glo...
Independent Study - College of Wooster Research (2023-2024) FDI, Culture, Glo...Independent Study - College of Wooster Research (2023-2024) FDI, Culture, Glo...
Independent Study - College of Wooster Research (2023-2024) FDI, Culture, Glo...
 
Using Online job postings and survey data to understand labour market trends
Using Online job postings and survey data to understand labour market trendsUsing Online job postings and survey data to understand labour market trends
Using Online job postings and survey data to understand labour market trends
 
Tdasx: In-Depth Analysis of Cryptocurrency Giveaway Scams and Security Strate...
Tdasx: In-Depth Analysis of Cryptocurrency Giveaway Scams and Security Strate...Tdasx: In-Depth Analysis of Cryptocurrency Giveaway Scams and Security Strate...
Tdasx: In-Depth Analysis of Cryptocurrency Giveaway Scams and Security Strate...
 
快速办理(SMU毕业证书)南卫理公会大学毕业证毕业完成信一模一样
快速办理(SMU毕业证书)南卫理公会大学毕业证毕业完成信一模一样快速办理(SMU毕业证书)南卫理公会大学毕业证毕业完成信一模一样
快速办理(SMU毕业证书)南卫理公会大学毕业证毕业完成信一模一样
 
在线办理(TAMU毕业证书)美国德州农工大学毕业证PDF成绩单一模一样
在线办理(TAMU毕业证书)美国德州农工大学毕业证PDF成绩单一模一样在线办理(TAMU毕业证书)美国德州农工大学毕业证PDF成绩单一模一样
在线办理(TAMU毕业证书)美国德州农工大学毕业证PDF成绩单一模一样
 
Money20/20 and EU Networking Event of 20/24!
Money20/20 and EU Networking Event of 20/24!Money20/20 and EU Networking Event of 20/24!
Money20/20 and EU Networking Event of 20/24!
 

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