Thor Marius Henrichsen Frode Nerbråten Outline
Total Page:16
File Type:pdf, Size:1020Kb
Ruby on Rails Thor Marius Henrichsen Frode Nerbråten Outline • Ruby • Ruby on Rails • JRuby • BEKK on Ruby on Rails What is Ruby? A dynamic object oriented programming language with: • elegant and natural syntax • focus on productivity • roots from Lisp, Perl and SmallTalk Written by Yukihiro Matsumoto, or just “Matz” Elegant syntax Ruby on Rails • Open source MVC-based web framework • Well suited for database-backed applications • Rails gives you a pure-Ruby development environment Rails highlights • Convention over configuration • Flexibility • Clean and DRY code • High productivity Blog with comments • Existing blog application without comments • We will add • a new table • a new model and controller • view markup JRuby The old Java platform Java JVM Libraries The new Java platform Java DSL Jython JVM JRuby Javascript Libraries Ruby Limitations • Green Threading - No scaling across processors/cores • Unicode support - Partial and inconsistent • Memory management - Simple design - Stop the world GC Ruby Limitations • C Language extensions - C is difficult - Often needs recompilation • Politics - You want me to run what? Why JRuby • Scalability through native threading • Better memory and GC management • Native unicode support - A must for web applications • Enterprise acceptable - It’s just a Java library Why JRuby • Faster than MRI on most benchmarks • Java can call Ruby • Ruby can call Java • Open java classes and add - Methods - Fields JRuby on Rails • Deployment on most Java servers - A simple servlet container will do • Java is a proven web application platform - Addresses a bunch of difficult issues • WAR deployment - Transparent for sysadmins - Easy distribution • Utilizing server features - Scaling, Connection pooling JRuby Limitations • Native libraries - But decent ports exists • Startup - Use MRI for development • Missing File operations - Limited to what’s provided by the JVM • Maturity - Version 1.0 released June 2007 Ruby @ BEKK Ruby @ BEKK • Completed 2 Ruby on Rails projects • Dedicated competency group • Contributers to Ruby open source projects • Rails, JRuby, Rspec, Cucumber, +++ • Represented on Ruby/Rails conferences worldwide Why Ruby • Ruby on Rails is over the hype • JRuby makes Rails an eligble alternative for some of our customers • Growing interest among employees • Happy developers write better code! • Ruby lends it self to practices of agile development • Testing at all levels is easy and fun! Project Experience - Background • Rewrite project for long term customer • Java based legacy solution • Huge code base • Duplicate code • Modified over 10 years • No automated test suite • Frequent change requests • Regressions Project Experience - Technology • MRI Ruby in test/development environments • JRuby on Glassfish Application Server in production environment • Rails 2.1 • Legacy database with a view layer to support Rails conventions • Rspec, RubyFIT, Watir Project Experience - Outcome Result Language: Java Norway: 50 000 LOC Language: Ruby Denmark : 50 000 LOC Total: 3 835 LOC Automated tests: 0 LOC Total : 100 000 LOC Automated tests: 10 418 LOC Total: 14 253 LOC Originally 4 developers approx. 6 months Ruby on Rails makes developers happy and happy developers write better code Where can I learn more? http://ruby-lang.org http://jruby.org http://rubyonrails.org.