1. Mirosław Wołoszyn Przemysław Kowalczyk Jarorcon Sp. z o.o. ul. Wałbrzyska 12 52-314 Wrocław email: info@jarorcon.pl
2. www.susuh.de Użyte technologie: Ruby on Rails, Ajax, JavaScrip, XML, MySql, Apache, Mongrel, Memcache, Ferret, GetText, RCov, Test Driven Development Serwisy zintegrowane z portalem: Jajah, Twistage, Sevenload, HiClip, Google Maps Api, Ad Sense, Octazen Invite Sender & Contact Importer Runek usług Susuh.
3. www.define-finance.com Użyte technologie: Ruby on Rails, Behaviour Driven Development (RSpec), Ajax, Javascript, XML, MySql, Apache, Mongrel, Memcache, Ferret, GetText, BackgrounDRb Serwisy zintegrowane z portalem: Sevenload Portal dla osób działających na europejskim rynku finansów i ubezpieczeń.
4. www.absolventa.de Portal pracy przeznaczony dla absolwentów. Użyte technologie: Ruby on Rails, Behaviour Driven Development (RSpec), Ajax, Javascript, XML, MySql, Apache, Mongrel, Memcache, BackgrounDRb Serwisy zintegrowane z portalem: Amazon S3
5.
6. Ruby i Rails Przemysław Kowalczyk Jarorcon sp. z o.o.
24. Ruby on Rails – model class Campaign < ActiveRecord::Base has_many :codes, :dependent => :destroy has_many :free_codes, :class_name => "Code", :conditions => "user_id is null" belongs_to :creator, :class_name => "User" validates_presence_of :name, :valid_from, :valid_to, :invitations_no validates_uniqueness_of :name def initialize *args super if @new_record valid_from ||= Time.now.tomorrow.midnight valid_to ||= 2.weeks.since(valid_from) invitations_no ||= 5 end end def active? Time.now >= valid_from && Time.now <= valid_to end end Operacje na czasie i datach Nazwa klasy na podstawie nazwy relacji
25. Ruby on Rails – controller class AdminCampaignsController < ApplicationController before_filter :admin_required caches_page :index, :show cache_sweeper :campaign_sweeper, :only => [:create, :update, :destroy] def index @campaigns = Campaign.paginate :all, :page=>params[:page], :per_page=>25 end def edit @campaign = Campaign.find(params[:id]) end def update @campaign = Campaign.find(params[:id]) if @campaign.update_attributes(params[:campaign]) flash[:notice] = _('Campaign was successfully updated.') redirect_to admin_campaign_url(@campaign) else render :action => "edit" end end ... Cache'owanie!
27. Ruby on Rails – test class AdminCampaignsControllerTest < Test::Unit::TestCase fixtures :campaigns, :campaign_codes def test_should_get_index get :index assert_response :success assert assigns(:campaigns) end def test_should_create_campaign assert_difference Campaign, :count, 1 do post :create, :campaign => { :name => 'test campaign' } end assert_redirected_to admin_campaign_path(assigns(:campaign)) end def test_shouldnt_create_campaign_without_name assert_difference Campaign, :count, 0 do post :create, :campaign => { :name => '' } end assert_not_nil assigns(:campaign).errors.on(:name) end Fixtures – predefiniowane dane w bazie testowej Wykonanie żądania HTTP: GET index Blok kodu powinien zwiększyć Campaign.count o 1 Wykonanie żądania HTTP: POST create z parametrami
28.
29. ActiveRecord find(:first, :conditions => [ "user_name = ? AND password = ?", user_name, password ]) find(:first, :conditions => { :user_name => user_name, :password => password }) find(:first, :conditions => params[:user]) find_by_user_name_and_password(user_name, password) Tag.find_or_create_by_name("Summer") user.manager.projects.find(project_id) manager.projects.create(:name => 'new project') Dynamic finder Znajdź lub stwórz User belongs_to :manager Manager has_many :projects Znajduje projekt, ale tylko wtedy, gdy ma go manager danego użytkownika