Efektivní vývoj webových aplikací v Ruby On Rails. Karel Minařík



Podobné dokumenty
Ruby on Rails. Bc. Tomáš Juřík Bc. Bára Huňková

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

KAPITOLA 3. Architektura aplikací na frameworku Rails. V této kapitole: modely, pohledy, řadiče.

Ruby on Rails: zapomeňte na Javu

Ruby on Rails. VŠE, Jiří Hradil

RESTful API TAMZ 1. Cvičení 11

Marek Osvald 2011

Komponentově orientované webové frameworky. Jiří Stránský twitter.com/jistr

KIV/PIA 2013 Jan Tichava

Stručný úvod pro programátory. Michal Kuchta

Implementace internetového informačního systému v Ruby on Rails

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Databázové a informační systémy

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Maven. Aplikační programování v Javě (BI-APJ) - 2 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Obsah. Rozdíly mezi systémy Joomla 1.0 a Systém Joomla coby jednička online komunity...16 Shrnutí...16

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Využití chemie v procesu testování webových aplikací vytvořených pomocí technologií PHP a Java

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz

Snadný vývoj webových aplikací s Nette. Lukáš Jelínek

Správa linuxového serveru: Zprovoznění Ruby aplikací s RVM, Thin a Nginx

Počítačová Podpora Studia. Přednáška 5 Úvod do html a některých souvisejících IT. Web jako platforma pro vývoj aplikací.

INFORMAČNÍ SYSTÉMY NA WEBU

Automatizace správy linuxové infrastruktury pomocí Katello a Puppet LinuxDays

Úvod do tvorby internetových aplikací

Prototyping konfigurace linuxových serverů. horizontální škálování Deltacloud API

SYSTÉM PRO KONFIGURACI KOMUNIKAČNÍCH TERMINÁLŮ A VIZUALIZACI STAVOVÝCH DAT Z KOLEJOVÝCH VOZIDEL

1 Webový server, instalace PHP a MySQL 13

SenseLab. z / from CeMaS. Otevřené sledování senzorů, ovládání zařízení, nahrávání a přehrávání ve Vaší laboratoři

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

DELTA - STŘEDNÍ ŠKOLA INFORMATIKY A EKONOMIE, s.r.o. Obor informační technologie AJAX ESHOP. Maturitní projekt. Třída:

Michal Augustýn Microsoft Most Valuable Professional

Servlety a JSP. Petr Adámek, petr.adamek@ibacz.eu

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links

IS pro podporu BOZP na FIT ČVUT

Webové služby. Martin Sochor

Kurz Databáze. Přechod na SQL server. Obsah. Vytvoření databáze. Lektor: Doc. Ing. Radim Farana, CSc.

Návrh a tvorba WWW stránek 1/14. PHP a databáze

IBM Connections pro firmy s Lotus Notes/Domino. Petr Kunc

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Michal Podzimek

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years

Stručný obsah. Část I Úvod. Část II Komponenty

WWW technologie. HTTP protokol

GUIDELINES FOR CONNECTION TO FTP SERVER TO TRANSFER PRINTING DATA

Čipové karty Lekařská informatika

Počítačová Podpora Studia. Přednáška 4. Nástroje pro vědecko-technické výpočty a zpracování dat. (v rámci PPS) PPS 2014

Web Services na SOAP

SYLABUS IT V. Jiří Kubica. Ostrava 2011

Testovací metoda. Testovací metoda. public class SimpleTest {

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

Postup. Úvodem. Hlavní myšlenka frameworku. application. system. assets. uploads

Úvod. Petr Aubrecht (CA) Martin Ptáček (Wincor Nixdorf) Je 10 typů lidí: ti, kteří znají binární kód, a ti, kteří ne.

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

PV207. Business Process Management

Použití databází na Webu

Ant aneb Ferda Mravenec, práce všeho druhu

SQL injection jak ji možná neznáte Roman Kümmel

Bakalářské. Vzdělání: Telefon: Ostrava. Bydliště: Ukázky práce: Správa a monitoring platformy provozované na AWS

Škola: Střední škola obchodní, České Budějovice, Husova 9. Inovace a zkvalitnění výuky prostřednictvím ICT

Integrace podnikových Open Source aplikací v praxi. RNDr. Petr Novák, Open Source Conference Praha, 19. duben 2011

Anabix API. Popis způsobu používání služby

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

Databáze EMS podacích lístků

Teorie a praxe SW inženýrství

Obecné informace o cvičeních

1. Webový server, instalace PHP a MySQL 13

Úvod do Web Services

Úvod do aplikací internetu a přehled možností při tvorbě webu

Ukládání a vyhledávání XML dat

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce


Databáze II. 1. přednáška. Helena Palovská

Bottle -- příklad. Databáze. Testovací data. id Jedinečný identifikátor řádku: Bude typu INT s AUTO_INCREMENT a nastavíme ho jako primární klíč

PHP Best Practices. Please try to fit your code to 80 columns. That's decimal 80. A. Morton

Jaku b Su ch ý 1

Softwarový proces Martin Hlavatý 4. říjen 2018

Novinky ve Visual Studio Tomáš Kroupa

Základní pojmy spojené s webovým publikováním ~ malý slovníček pojmů~ C3231 Základy WWW publikování Radka Svobodová, Stanislav Geidl

17. července :51 z moravec@yahoo.com

Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Klíčová slova: dynamické internetové stránky, HTML, CSS, PHP, SQL, MySQL,

cstore_fdw column store pro PostgreSQL Prague PostgreSQL Developer Day 2015 Jan Holčapek

Internet Information Services (IIS) 6.0

Principy fungování WWW serverů a browserů. Internetové publikování

JAVA Unit testing Java, zimní semestr

Vývoj Internetových Aplikací

CZ.1.07/1.5.00/

Tvorba informačních systémů

LINQ. (Language integrated query) Prezentace na 3IT353. Zpracovali: Martin Latiak, Michal Pěnka, Petr Spurný

Individuální projekt z předmětu webových stránek Anketa Jan Livora

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Jakub Čermák Microsoft Student Partner

Transkript:

Efektivní vývoj webových aplikací v Ruby On Rails Karel Minařík

Karel Minařík Absolvent FFUK, obor filosofie, diplomová práce o Adornově Estetické teorii Web designer a vývojář na volné noze od roku 2000 V minulosti Flash vývojář, art director, informační architekt v internetových agenturách Doktorand Studií nových médií na FFUK (Opuštěný) blog o Ruby on Rails na http://blog.karmi.cz KONTAKT: karmi@karmi.cz

http://data.karmi.cz/webexpo

1 Co je Ruby On Rails?

Webový framework

Proč používat webový framework?

Toto je sněhová vločka. Vaše aplikace není jedna z nich. Většina věcí, které většina lidí dělá, není nijak unikátní. Vaše potřeby nejsou nijak zvláštní. David Heinemeier Hansson, přednáška na konferenci Future Of Web Applications, únor 2006

SELECT * FROM people WHERE id = 1; SELECT * FROM people WHERE id = 1; SELECT * FROM people WHERE id = 1; SELECT * FROM people WHERE id = 1; SELECT * FROM people WHERE id = 1; SELECT * FROM people WHERE id = 1; SELECT * FROM people WHERE id = 1;

2004 2005 2006 Ruby On Rails Django Zend Framework CakePHP Merb ( lepší než Rails )

Open source, licence MIT

www.rubyonrails.org

Některé oblíbené nesmysly o Ruby a Rails Ruby je pomalé Nemužeme/nechceme se učit nový programovací jazyk Rails má špatnou podporu na web hostingu

Ruby On Rails je jedním z nejucelenějších popisů doporučených postupů pro moderní webový vývoj a inspirací pro ostatní technologie a frameworky

There s no silver bullet!

Basecamp

Basecamp

Scaling Twitter Silicon Valley Ruby Conference 2007, http://www.slideshare.net/blaine/scaling-twitter Surviving the Big Rewrite: Moving YELLOWPAGES.COM to Rails RailsConf 2008, http://en.oreilly.com/rails2008/public/schedule/detail/2082

Jukihiro Macumoto (Matz)

Přednáška Ruby Design Principles, 2006 (včetně MP3 záznamu) http://itc.conversationsnetwork.org/shows/detail1638.html

Ruby from Other Languages http://www.ruby-lang.org/en/documentation/ruby-from-other-languages/

Klíčové součásti Ruby On Rails

Přehled

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Přehled Rails pluginy a Ruby gemy Generátory kódu, Rake tasky, Capistrano, konzole aplikace, Jádro frameworku: 1) Objektově relační mapování ActiveRecord 2) Směrování HTTP požadavků na řídící prvky aplikace ActionController a View 3) Webové služby typu REST ActiveResource 4) Odesílání e-mailů ActionMailer 5) Rozšíření Ruby ActiveSupport Model View Controller Konvence má přednost před konfigurací

Model View Controller

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Model View Controller

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Model View Controller a konvence má přednost před konfigurací Adresářová struktura Rails aplikace controllers/articles_controller.rb models/article.rb views/articles/index, edit, new, atd views/layouts/articles.html.erb

Generátory kódu

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Generátory kódu The Pragmatic Programmer: From Journeyman to Master, Andrew Hunt and David Thomas Passive Code Generators Passive code generators save typing. They are basically parameterized templates, generating a given output from a set of inputs. Once the result is produced, it becomes a full-fledged source file in the project; it will be edited, compiled, and placed under source control just like any other file. Its origins will be forgotten. (str. 87)

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Generátory kódu $ script/generate scaffold Person last_name:string date_of_birth:date create app/models/person.rb create test/unit/person_test.rb create test/fixtures/people.yml create db/migrate/20081007091729_create_people.rb create app/views/people/index.html.erb create app/views/people/show.html.erb create app/views/people/new.html.erb create app/views/people/edit.html.erb create app/views/layouts/people.html.erb create app/controllers/people_controller.rb create test/functional/people_controller_test.rb create app/helpers/people_helper.rb route map.resources :people

ActiveRecord

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Objektově relační mapování ActiveRecord Martin Fowler, Patterns of Enterprise Application Architecture (2002)

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Objektově relační mapování ActiveRecord tabulka people ID Name Surname E-mail 1 John Smith smith@hotmail.com 2 Susanna Reddick susan@yahoo.com INSERT INTO people (name, surname, email) VALUES( 'John', 'Smith', 'smith@hotmail.com' ); SELECT * FROM people; SELECT * FROM people WHERE id = 1; SELECT * FROM people WHERE surname = 'Smith'; # ActiveRecord::Base.establish_connection... Person.create(:name => 'John', :surname => 'Smith', :email => 'smith@hotmail.com') Person.all Person.find(1) Person.find_by_surname('Smith')

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Objektově relační mapování ActiveRecord Person.all :order => 'last_name DESC' Person.all :conditions => "administrator = 1" Person.all(:conditions => [ "department = :department AND position = :position", {:department => params[:department], :position => params[:position]} ] ) Person.all :include => 'accounts' Person.all :group => 'country' Person.find_by_sql( "SELECT id AS complicated..." )

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Objektově relační mapování ActiveRecord p = Person.find 1 p.first_name = 'Robert' p.save p.destroy

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS ActiveRecord Validace class Account < ActiveRecord::Base validates_presence_of :account_number, owner_id validates_numericality_of :balance validates_length_of :password, :minimum=> 4 validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i validates_acceptance_of :terms_of_service, :on => 'create' end http://www.railsbrain.com/api/rails-2.1.0/doc/index.html?a=m001739&name=validates_presence_of

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS ActiveRecord Callbacks class Article < ActiveRecord::Base after_save :clean_up_html after_destroy :audit_log protected def clean_up_html self.body.gsub(... ) end def audit_log audit_logger.info("article #{self.title} has been removed by user #{current_user}") end end http://www.railsbrain.com/api/rails-2.1.0/doc/index.html?a=m001715&name=after_save

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS ActiveRecord Asociace $ railroad -a -i -o full_models.dot -M http://www.railsbrain.com/api/rails-2.1.0/doc/index.html?a=m001491&name=has_many

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS ActiveRecord Asociace class Project < ActiveRecord::Base end belongs_to :project_manager create_table :projects do t t.string :title t.text :description t.integer :project_manager_id t.timestamps end

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS ActiveRecord Asociace class Project < ActiveRecord::Base end belongs_to :project_manager, :class_name => "User" has_many :tasks class User < ActiveRecord::Base has_many has_many :projects :tasks, :foreign_key => 'assigned_to' end class Task < ActiveRecord::Base end belongs_to :project belongs_to :user, :foreign_key => "assigned_to" Convention over configuration

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS ActiveRecord dočasné řešení Objektové databáze

ActionController

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Routing ActionController Rails 1.1

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Routing ActionController I CAN HAS BETTA ROUTING! Rails 1.1

RESTful DHH, RailsConf 2007 Keynote, The World Of Resources

DHH, RailsConf 2007 Keynote, The World Of Resources

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Routing + Resources ActionController ActionController::Routing::Routes.draw do map map.resources :people end people_path person_path(1) GET http://www.example.com/people GET http://www.example.com/people/1 POST http://www.example.com/people PUT http://www.example.com/people/1 DELETE http://www.example.com/people/1 PeopleController#index() PeopleController#show() PeopleController#create() PeopleController#update() PeopleController#destroy() Rails 1.2.x RESTful!

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS REST Representional State Transfer REpresentational State Transfer Mnohem více než XML over HTTP Využití HTTP protokolu (GET, POST, PUT, DELETE) S resourcem (noun) je možné manipulovat (verb): CRUD: CREATE UPDATE DELETE Žádná informace o stavu resource není uchovávána na serveru Resource má různé reprezentace (HTML, XML, graf,...) Každá reprezentace resource má unikátní URI (staff.html, staff.xml, staff.png)

DHH, RailsConf 2007 Keynote, The World Of Resources

ActiveResource

DHH, RailsConf 2007 Keynote, The World Of Resources

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS ActiveResource ORM pro webové služby class Person < ActiveResource::Base self.site = "http://username:password@www.example.com:3000/" end # Expects a response of # # <person><id type="integer">1</id><attribute1>value1</attribute1><attribute2>..</attribute2></person> # # for GET http://api.people.com:3000/people/1.xml ryan = Person.find(1) ryan = Person.new(:first => 'Ryan', :last => 'Daigle') ryan.save # => true ryan.id # => 2

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS ActiveResource ORM pro webové služby class Person < ActiveResource::Base self.site = "http://username:password@www.example.com:3000/" end Služba A Služba B Klient D Mashup E Služba C

ActionView

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS ActionView people_controller.rb @person = Person.find params[:id] display.html.erb <h2>jméno: <%= @person.name %></h2> <p>e-mail: <%= mail_to @person.email %></p> <hr /> <%= link_to "Seznam lidí", people_path %>

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS ActionView Helpery pro formuláře, odkazy <% form_for @person do f %> <%= f.text_field :name %> <%=f.datetime_select :date_of_birth %? <% end %> <%= link_to @person.name, person_path(@person) %> <a href="/person/show/1"... /> Helpery pro Ajax, Scriptaculous, JavaScript <%= link_to_remote "Skrýt", "update" => 'list', :url => { :action => 'hide' } %> <a href... onclick="new Ajax.Updater... />

Automatizované testování

Proč psát testy? Proč nepsat testy víme není čas, nejsou peníze,

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Automatizované testování aplikace Testy jsou nejmocnějším pomocníkem agilního vývoje Testy jsou obrana proti sobě samému Testy jsou obrana proti příšerám (legacy code)

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Podpora pro automatizované testování aplikace v Rails Podpora pro testovací data (fixtures) testování controllerů a views testování modelů

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Automatizované testování aplikace: Testovací data test/fixtures/people.yml # Read about fixtures at http://ar.rubyonrails.org/classes/fixtures.html john: first_name: John last_name: Smith country: Great Britain department: Accounting position: Accountant administrator: true robert: first_name: Roberto last_name: Callon country: Span department: Marketing position: Graphic Designer administrator: false

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Automatizované testování aplikace: Unit Testing Test::Unit (standardní knihovna Ruby) require 'test/unit' class MyTest < Test::Unit::TestCase # def setup # end # def teardown # end def test_true_is_true assert_equal(true, true, 'Assertion was false.') end end

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Automatizované testování aplikace: Logika aplikace test/unit/person_test.rb class PersonTest < ActiveSupport::TestCase end # Replace this with your real tests. def test_truth assert true end

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Automatizované testování aplikace: Prezentační vrstva test/functional/projects_controller_test.rb class ProjectsControllerTest < ActionController::TestCase end def test_should_get_index get :index assert_response :success assert_not_nil assigns(:projects) end http://www.railsbrain.com/api/rails-2.1.0/doc/index.html?a=c00000170&name=assertions

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Automatizované testování aplikace: Příklady class ProjectsControllerTest < ActionController::TestCase end def test_should_get_index get :index # HTTP odpoved (tedy "200 OK", nikoliv 302, 404, 403, 500,...) assert_response :success # Naplnena promenna @projects assert_not_nil assigns(:projects) # Prave *dva* projekty assert_equal 2, assigns(:projects).size # Pouzita sablona assert_template "index" # <title> stranky assert_select "title", "Projekty" # Fragment HTML kodu assert_tag :tag => 'li', :attributes => { :id => "project_#{projects(:babylon).id}", :class => 'in_progress' } end http://www.railsbrain.com/api/rails-2.1.0/doc/index.html?a=c00000170&name=assertions

Co jsme vynechali?

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Co jsme vynechali? Databázové migrace Nástroj Rake Konzole aplikace (script/console) Benchmarking a profilování kódu Pluginy a rozšíření Rails Rozšíření jazyka Ruby (1.day.ago, "cat".pluralize,...) Cachování Internacionalizace (Lokalizace) Procesy běžící na pozadí

Deployment Rails aplikací

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Deployment Deployment Instalace a aktualizace kódu aplikace na serveru Model PHP Upload and forget Synchronizace přes FTP.BAK,.OLD,... Nástroj Capistrano: Verzovaný kód aplikace (Subversion, Git) Aktualizace kódu aplikace Návrat ke starší ( funkční ) verzi Spouštění příkazů na serveru Monitoring stavu aplikace a serveru Efektivita

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Deployment Bez efektivního procesu deploymentu nelze vyvíjet agilně

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Nástroj Capistrano pro efektivní deployment $ cap -T $ cap deploy:migrations $ cap invoke 'cd /home/deployer/app/curent; grep -in error log/production.log' www.capify.org

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Struktura Rails aplikace běžící v produkčním prostředí ( ) Load Balancer reverse proxy Webserver Apache, Nginx, Mongrel Zpracovává požadavky na Rails Statické soubory Čte web server rovnou z disku a obchází Mongrel i Rails Databáze Běží na stejném nebo jiném serveru

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Budoucnost? Phusion Passenger (mod_rails) $ gem install passenger $ passenger-install-apache2-module

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Rails hosting s mod_rails zdarma na zkoušku

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS http://free.railshosting.cz

Další zdroje a informace

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Editory a IDE pro Ruby a Rails TextMate Mac OS X Vim + rails.vim plugin NetBeans Aptana RadRails CodeGear 3rd Rail

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Zdroje a informace Dave Thomas, David Heinemeier Hansson, et al. Agile Web Development With Ruby On Rails, 2nd edition Pragmatic Bookshelf 2006 NEW říjen 2008 Peter Cooper, Beginning Ruby Apress 2007

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Zdroje a informace Mike Naberezny and Derek DeVries, Rails for PHP Developers Pragmatic Bookshelf, 2008 Why The Lucky Stiff, Poignant Guide to Ruby http://www.poignantguide.net/ruby/ David Flanagan and Yukihiro Matsumoto, The Ruby Programming Language Pragmatic Bookshelf 2007 Russ Olsen, Design Patterns in Ruby Pragmatic Bookshelf 2007

KLÍČOVÉ SOUČÁSTI RUBY ON RAILS Zdroje a informace http://weblog.rubyonrails.org www.rubyinside.com www.railsinside.com www.planetrubyonrails.com www.railscasts.com www.ruby-lang.org/en/documentation/quickstart http://forum.rubyonrails.cz #rubyonrails (IRC kanál na IRCNet) www.csrug.cz www.railsforphp.com http://www.ruby-lang.org/en/documentation/ruby-from-other-languages/to-ruby-from-php

2 Živá ukázka tvorby aplikace v Rails

www.tadalist.com od 37Signals

$ sudo gem install rails $ rails -v $ rails planner create app/controllers create app/helpers create app/models create app/views/layouts create config/environments create config/initializers create db create doc create lib Ukázka create lib/tasks create log create public/images create public/javascripts create public/stylesheets create script/performance create script/process create test/fixtures create test/functional create test/integration create test/mocks/development create test/mocks/test create test/unit create vendor create vendor/plugins create tmp/sessions create tmp/sockets create tmp/cache

Děkuji! www.karmi.cz