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

20240419-SMC-submission-Annual-Superannuation-Performance-Test-–-design-optio...
20240419-SMC-submission-Annual-Superannuation-Performance-Test-–-design-optio...20240419-SMC-submission-Annual-Superannuation-Performance-Test-–-design-optio...
20240419-SMC-submission-Annual-Superannuation-Performance-Test-–-design-optio...Henry Tapper
 
cost-volume-profit analysis.ppt(managerial accounting).pptx
cost-volume-profit analysis.ppt(managerial accounting).pptxcost-volume-profit analysis.ppt(managerial accounting).pptx
cost-volume-profit analysis.ppt(managerial accounting).pptxazadalisthp2020i
 
Best VIP Call Girls Morni Hills Just Click Me 6367492432
Best VIP Call Girls Morni Hills Just Click Me 6367492432Best VIP Call Girls Morni Hills Just Click Me 6367492432
Best VIP Call Girls Morni Hills Just Click Me 6367492432motiram463
 
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...dipikadinghjn ( Why You Choose Us? ) 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...
VIP Independent Call Girls in Andheri 🌹 9920725232 ( Call Me ) Mumbai Escorts...dipikadinghjn ( Why You Choose Us? ) Escorts
 
falcon-invoice-discounting-unlocking-prime-investment-opportunities
falcon-invoice-discounting-unlocking-prime-investment-opportunitiesfalcon-invoice-discounting-unlocking-prime-investment-opportunities
falcon-invoice-discounting-unlocking-prime-investment-opportunitiesFalcon Invoice Discounting
 
Vasai-Virar High Profile Model Call Girls📞9833754194-Nalasopara Satisfy Call ...
Vasai-Virar High Profile Model Call Girls📞9833754194-Nalasopara Satisfy Call ...Vasai-Virar High Profile Model Call Girls📞9833754194-Nalasopara Satisfy Call ...
Vasai-Virar High Profile Model Call Girls📞9833754194-Nalasopara Satisfy Call ...priyasharma62062
 
Vasai-Virar Fantastic Call Girls-9833754194-Call Girls MUmbai
Vasai-Virar Fantastic Call Girls-9833754194-Call Girls MUmbaiVasai-Virar Fantastic Call Girls-9833754194-Call Girls MUmbai
Vasai-Virar Fantastic Call Girls-9833754194-Call Girls MUmbaipriyasharma62062
 
Toronto dominion bank investor presentation.pdf
Toronto dominion bank investor presentation.pdfToronto dominion bank investor presentation.pdf
Toronto dominion bank investor presentation.pdfJinJiang6
 
call girls in Sant Nagar (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️
call girls in Sant Nagar (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️call girls in Sant Nagar (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️
call girls in Sant Nagar (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Kharghar Blowjob Housewife Call Girls NUmber-9833754194-CBD Belapur Internati...
Kharghar Blowjob Housewife Call Girls NUmber-9833754194-CBD Belapur Internati...Kharghar Blowjob Housewife Call Girls NUmber-9833754194-CBD Belapur Internati...
Kharghar Blowjob Housewife Call Girls NUmber-9833754194-CBD Belapur Internati...priyasharma62062
 
Navi Mumbai Cooperetive Housewife Call Girls-9833754194-Natural Panvel Enjoye...
Navi Mumbai Cooperetive Housewife Call Girls-9833754194-Natural Panvel Enjoye...Navi Mumbai Cooperetive Housewife Call Girls-9833754194-Natural Panvel Enjoye...
Navi Mumbai Cooperetive Housewife Call Girls-9833754194-Natural Panvel Enjoye...priyasharma62062
 
Kopar Khairane Russian Call Girls Number-9833754194-Navi Mumbai Fantastic Unl...
Kopar Khairane Russian Call Girls Number-9833754194-Navi Mumbai Fantastic Unl...Kopar Khairane Russian Call Girls Number-9833754194-Navi Mumbai Fantastic Unl...
Kopar Khairane Russian Call Girls Number-9833754194-Navi Mumbai Fantastic Unl...priyasharma62062
 
VIP Call Girl in Mira Road 💧 9920725232 ( Call Me ) Get A New Crush Everyday ...
VIP Call Girl in Mira Road 💧 9920725232 ( Call Me ) Get A New Crush Everyday ...VIP Call Girl in Mira Road 💧 9920725232 ( Call Me ) Get A New Crush Everyday ...
VIP Call Girl in Mira Road 💧 9920725232 ( Call Me ) Get A New Crush Everyday ...dipikadinghjn ( Why You Choose Us? ) Escorts
 
Webinar on E-Invoicing for Fintech Belgium
Webinar on E-Invoicing for Fintech BelgiumWebinar on E-Invoicing for Fintech Belgium
Webinar on E-Invoicing for Fintech BelgiumFinTech Belgium
 
7 tips trading Deriv Accumulator Options
7 tips trading Deriv Accumulator Options7 tips trading Deriv Accumulator Options
7 tips trading Deriv Accumulator OptionsVince Stanzione
 

Último (20)

20240419-SMC-submission-Annual-Superannuation-Performance-Test-–-design-optio...
20240419-SMC-submission-Annual-Superannuation-Performance-Test-–-design-optio...20240419-SMC-submission-Annual-Superannuation-Performance-Test-–-design-optio...
20240419-SMC-submission-Annual-Superannuation-Performance-Test-–-design-optio...
 
cost-volume-profit analysis.ppt(managerial accounting).pptx
cost-volume-profit analysis.ppt(managerial accounting).pptxcost-volume-profit analysis.ppt(managerial accounting).pptx
cost-volume-profit analysis.ppt(managerial accounting).pptx
 
Best VIP Call Girls Morni Hills Just Click Me 6367492432
Best VIP Call Girls Morni Hills Just Click Me 6367492432Best VIP Call Girls Morni Hills Just Click Me 6367492432
Best VIP Call Girls Morni Hills Just Click Me 6367492432
 
Call Girls in New Ashok Nagar, (delhi) call me [9953056974] escort service 24X7
Call Girls in New Ashok Nagar, (delhi) call me [9953056974] escort service 24X7Call Girls in New Ashok Nagar, (delhi) call me [9953056974] escort service 24X7
Call Girls in New Ashok Nagar, (delhi) call me [9953056974] escort service 24X7
 
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...
 
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...
 
falcon-invoice-discounting-unlocking-prime-investment-opportunities
falcon-invoice-discounting-unlocking-prime-investment-opportunitiesfalcon-invoice-discounting-unlocking-prime-investment-opportunities
falcon-invoice-discounting-unlocking-prime-investment-opportunities
 
Vasai-Virar High Profile Model Call Girls📞9833754194-Nalasopara Satisfy Call ...
Vasai-Virar High Profile Model Call Girls📞9833754194-Nalasopara Satisfy Call ...Vasai-Virar High Profile Model Call Girls📞9833754194-Nalasopara Satisfy Call ...
Vasai-Virar High Profile Model Call Girls📞9833754194-Nalasopara Satisfy Call ...
 
Vasai-Virar Fantastic Call Girls-9833754194-Call Girls MUmbai
Vasai-Virar Fantastic Call Girls-9833754194-Call Girls MUmbaiVasai-Virar Fantastic Call Girls-9833754194-Call Girls MUmbai
Vasai-Virar Fantastic Call Girls-9833754194-Call Girls MUmbai
 
Toronto dominion bank investor presentation.pdf
Toronto dominion bank investor presentation.pdfToronto dominion bank investor presentation.pdf
Toronto dominion bank investor presentation.pdf
 
call girls in Sant Nagar (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️
call girls in Sant Nagar (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️call girls in Sant Nagar (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️
call girls in Sant Nagar (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️
 
(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
 
Kharghar Blowjob Housewife Call Girls NUmber-9833754194-CBD Belapur Internati...
Kharghar Blowjob Housewife Call Girls NUmber-9833754194-CBD Belapur Internati...Kharghar Blowjob Housewife Call Girls NUmber-9833754194-CBD Belapur Internati...
Kharghar Blowjob Housewife Call Girls NUmber-9833754194-CBD Belapur Internati...
 
From Luxury Escort Service Kamathipura : 9352852248 Make on-demand Arrangemen...
From Luxury Escort Service Kamathipura : 9352852248 Make on-demand Arrangemen...From Luxury Escort Service Kamathipura : 9352852248 Make on-demand Arrangemen...
From Luxury Escort Service Kamathipura : 9352852248 Make on-demand Arrangemen...
 
Navi Mumbai Cooperetive Housewife Call Girls-9833754194-Natural Panvel Enjoye...
Navi Mumbai Cooperetive Housewife Call Girls-9833754194-Natural Panvel Enjoye...Navi Mumbai Cooperetive Housewife Call Girls-9833754194-Natural Panvel Enjoye...
Navi Mumbai Cooperetive Housewife Call Girls-9833754194-Natural Panvel Enjoye...
 
Kopar Khairane Russian Call Girls Number-9833754194-Navi Mumbai Fantastic Unl...
Kopar Khairane Russian Call Girls Number-9833754194-Navi Mumbai Fantastic Unl...Kopar Khairane Russian Call Girls Number-9833754194-Navi Mumbai Fantastic Unl...
Kopar Khairane Russian Call Girls Number-9833754194-Navi Mumbai Fantastic Unl...
 
VIP Call Girl in Mira Road 💧 9920725232 ( Call Me ) Get A New Crush Everyday ...
VIP Call Girl in Mira Road 💧 9920725232 ( Call Me ) Get A New Crush Everyday ...VIP Call Girl in Mira Road 💧 9920725232 ( Call Me ) Get A New Crush Everyday ...
VIP Call Girl in Mira Road 💧 9920725232 ( Call Me ) Get A New Crush Everyday ...
 
(Vedika) Low Rate Call Girls in Pune Call Now 8250077686 Pune Escorts 24x7
(Vedika) Low Rate Call Girls in Pune Call Now 8250077686 Pune Escorts 24x7(Vedika) Low Rate Call Girls in Pune Call Now 8250077686 Pune Escorts 24x7
(Vedika) Low Rate Call Girls in Pune Call Now 8250077686 Pune Escorts 24x7
 
Webinar on E-Invoicing for Fintech Belgium
Webinar on E-Invoicing for Fintech BelgiumWebinar on E-Invoicing for Fintech Belgium
Webinar on E-Invoicing for Fintech Belgium
 
7 tips trading Deriv Accumulator Options
7 tips trading Deriv Accumulator Options7 tips trading Deriv Accumulator Options
7 tips trading Deriv Accumulator Options
 

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