Ruby on rails - TEI Peiraeus

754 views

Published on

Η πρώτη μας παρουσίαση για ruby on rails στο ΤΕΙ Πειραιά, στις 9/12/2011.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
754
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Ruby on rails - TEI Peiraeus

  1. 1. Ruby on Rails "Strong like Bruce Lee   efficient As Einstein"
  2. 2. Παρουσίαση Ruby on Rails <ul><li>Μιχάλης Ζαμπάρας </li></ul><ul><li>Γιάννης Δεληγιάννης </li></ul><ul><li>PreOpenfest Event </li></ul><ul><li>osLab </li></ul>
  3. 3. Τι είναι το openfest; <ul><ul><li>Προώθηση τεχνολογιών ανοιχτού / ελεύθερου λογισμικού </li></ul></ul><ul><ul><li>Δημιουργία ομάδων μεταξύ μας και συμμετοχή στην ανάπτυξη open source projects </li></ul></ul><ul><li>Μα πάνω από όλα... </li></ul>
  4. 4. Have Fun!
  5. 5. Τι είναι η ruby; <ul><li>«Καθαρό» συντακτικό, χωρίς περιττά στοιχεία </li></ul><ul><li>Αντικειμενοστραφής γλώσσα με πολλά functional χαρακτηριστικά </li></ul><ul><li>Interpreter, strong και dynamic typing </li></ul><ul><li>Ιδανική για δημιουργία DSL και dynamic metaprogramming </li></ul><ul><li>Ισχυρή και φιλική κοινότητα </li></ul>
  6. 6. Λίγη ιστορία... <ul><li>Yukihiro Matsumoto </li></ul><ul><li>1995 εμπνευσμένη </li></ul><ul><li>Από τη smalltalk </li></ul><ul><li>1999 Μεταφράστηκε σε </li></ul><ul><li>Αγγλικά το documentation </li></ul><ul><li>2004 ξεκινά να γίνεται γνωστή η ruby… ο λόγος;; </li></ul>
  7. 7. Ruby – Από εδώ και πέρα τι; <ul><li>Τωρινή έκδοση 1.9.3 </li></ul><ul><li>Οδεύουμε προς την έκδοση 2 </li></ul><ul><li>Πρόκειται να γίνει ISO </li></ul>
  8. 8. Τι είναι η Rails ; 1/2 <ul><li>Το πιο δημοφιλές web framework που υπάρχει αυτή τη στιγμή </li></ul><ul><li>Δημιουργήθηκε το 2004 από την 37 signals </li></ul><ul><li>Sites σε Rails: </li></ul><ul><li>Twitter </li></ul><ul><li>Github </li></ul><ul><li>Groupon </li></ul><ul><li>Diaspora </li></ul><ul><li>Basecamp </li></ul><ul><li>κλπ. </li></ul>
  9. 9. Τι είναι η Rails; 2/2 <ul><li>Από τα πρώτα MVC frameworks, ενέπνευσε πολλά άλλα </li></ul><ul><li>Αρκετά ώριμο (αναπτύσσεται 8 χρόνια) </li></ul><ul><li>Έμφαση στις σωστές πρακτικές της μηχανικής λογισμικού </li></ul><ul><li> « Testing is like a religion in ruby community » </li></ul>
  10. 10. Ξεκινώντας με τη Ruby (simple one liners) <ul><li>Επανάληψη στην ruby </li></ul><ul><li>10.times do puts “I love ruby!” end </li></ul><ul><li>(1..10).each do |i| print “I love rails version #{i}” end </li></ul><ul><li>3.upto(15) { |tmp| p “Number is #{tmp}” } </li></ul><ul><li>x = 1; x = x + 2 while x < 300 </li></ul><ul><li>%w{a e i o u}.each { |vowel| p vowel } </li></ul><ul><li>Δομές ελέγχου </li></ul><ul><li>x = 5; y = 10; p “x is smaller than y” if x < y </li></ul><ul><li>x = 5; y = 10; p “x is smaller than y” unless x > y </li></ul><ul><li>Switch / case (no example, sorry) </li></ul>
  11. 11. Περισσότερη μαγεία <ul><li>('A'..'Z').include?('R') # => επιστρέφει true </li></ul><ul><li>“ I am a happy string :D”.class # => String </li></ul><ul><li>String.methods.grep(/^an/) # => ancestors, anonymous </li></ul><ul><li>Ready to fly?? </li></ul><ul><li>(1..100).select{ |k| k % 2 == 0 } </li></ul><ul><li>tmp_random_name = File.read(“data.txt”) </li></ul><ul><li>[56, -34, 452, 5].min # => -34 </li></ul><ul><li>require ‘nokogiri’ </li></ul><ul><li>require ‘open-uri’ </li></ul><ul><li>doc = Nokogiri::HTML(open('http://www.google.com')) </li></ul>
  12. 12. Ξεκινώντας με την Rails <ul><li>MVC ( Model – View – Controller) </li></ul>
  13. 13. Ξεκινώντας με την Rails <ul><li>ORM ( Object Relational Mapping) </li></ul><ul><li>REST αντιστοίχιση με CRUD </li></ul><ul><li>Για κάθε action ενός resource, αντιστοιχίζεται το http verb </li></ul><ul><li>Actions: index (get), show(get), new(get), create(post), edit(get), update(put), destroy(delete) </li></ul><ul><li>Χρήση του get, post, put, delete ανάλογα το action </li></ul>
  14. 14. Ξεκινώντας με την Rails <ul><li>Migrations </li></ul><ul><li>TDD </li></ul><ul><li>Red-Green-Refactor </li></ul><ul><li>How we test? </li></ul><ul><li>From bottom to up or from up to bottom? </li></ul><ul><li>Unit tests / functional tests / integration tests </li></ul><ul><li>Fixtures / Factories </li></ul><ul><li>mock / stub </li></ul><ul><li>Πολλά test frameworks </li></ul><ul><li>Unit test, Rspec, capybara, cucumber </li></ul>
  15. 15. Απλά παραδείγματα tests <ul><li>Integration tests με το capybara: </li></ul><ul><li>describe &quot;Failed Login&quot; do </li></ul><ul><li>it &quot;Shows error message on empty email and empty password &quot; do </li></ul><ul><li>visit new_user_session_path </li></ul><ul><li>click_button “Login&quot; </li></ul><ul><li>current_path.should eq(new_user_session_path) </li></ul><ul><li>page.should have_content(&quot;Invalid email or password.&quot;) </li></ul><ul><li>end </li></ul><ul><li>it &quot;Shows error message on invalid username and password&quot; do </li></ul><ul><li>visit new_user_session_path </li></ul><ul><li>fill_in &quot;Email&quot;, :with => &quot;emaildoesn'texists@example.com&quot; </li></ul><ul><li>fill_in &quot;Password&quot;, :with => &quot;wrong password&quot; </li></ul><ul><li>click_button “Login&quot; </li></ul><ul><li>current_path.should eq(new_user_session_path) </li></ul><ul><li>page.should have_content(&quot;Invalid email or password.&quot;) </li></ul><ul><li>end </li></ul><ul><li>end </li></ul>
  16. 16. Απλά παραδείγματα tests <ul><li>Unit tests με το rspec: </li></ul><ul><li>Page model: </li></ul><ul><li>class Page < ActiveRecord::Base </li></ul><ul><li>validates :name, :presence => true </li></ul><ul><li>end </li></ul><ul><li>Test Page model: </li></ul><ul><li>it &quot;should have a name&quot; do </li></ul><ul><li>Page.new(name: nil).should have(1).error_on(:name) </li></ul><ul><li>end </li></ul>
  17. 17. Ώρα για λίγο εξάσκηση!

×