Ruby on rails
Sisukord
Sissejuhatus
Ruby on Rails on veebiarenduse raamistik ehk framework, mis kasutab programmeerimiskeelt Ruby. Kui Rails on alles noor raamistik (2004), siis Ruby on juba aastast 1993, mil Yukihiro Matsumoto sai Jaapanis tööle esimese "Hello World!"-i.
Rails on mõeldud lihtsustama ning kiirendama andmebaasidega seotud veebilehtide loomist. Rails on kirjutatud Ruby keeles ja tegemist on vabavaralise projektiga.
Rails arenduskeskond
Installime vajalikud päkitsad railsile
Paigaldada on vaja
- Mingi andmebaasi server näiteks MySQL, Postgresql
- Ruby programeerimiskeele vahendid
- rubygem-rails koos sltuvustega
Paigaldamine
RoR paigaldamiseks sobib öelda Debian operatsioonisüsteemis
# apt-get install rails
Railsi gemist paigaldamiseks tuleb esiteks installida arvutiss ruby gems pakett ning seejärel vaadata mis versioon railsist on hetkel kõige viimane. Selleks tuleb anda käsk
# gem search rails --remote
Mis tekitab nimekirja railsi aktiivsetest versioonidest mida annab paigadada. Viimane versioon selle teksti kirjutamise hetkel on 2.0.2 nii ,et installime selle andes käsu
# gem install rails --version 2.0.2
Paigaldamine Gentoos
Emergeda tuleb pakett www-apache/passenger ning jälgida edasise seadistuse osas selle paketi poolt jagatud juhiseid.
Rakenduse ehk projekti tekitamine
RoR rakenduse tekitamiseks tuleb
- tekitada rakendusele vastav kataloogistruktuur
Postgresql puhul
$ rails -D postgresql contactlist
- tekitada andmebaas, nt PostgreSQL
create table contacts ( id serial not null, first_name varchar(100) not null, last_name varchar(100) not null, address varchar(255) not null, city varchar(100) not null, state varchar(2) not null, country varchar(100) not null, phone varchar(15) not null, email varchar(100) , CONSTRAINT pk_id PRIMARY KEY (id) );
ning kohendada baasi ligipääs seadistusfailis
config/database.yml
Nt selliselt
development: adapter: postgresql encoding: unicode database: contactlist_development username: contactlist password: parool host: 192.168.1.247 port: 5432 ...
Mysql puhul
rails -d mysql test
Sissejuhatus mudelitesse ja kontrolleritesse
Railsis on mudelid (model) ja controllerid (controller) See kõik asub siis stiilis aadress/kontroller. Näiteks www.nimi.ee kuhu lõime hetk tagasi kontrolleri nimega katsetus. Kohe peale loomist oli www.nimi.ee/katsetus kättesaadav. Models on kasutusel kui sql andmete hoidjad, meil on kasutuses mudel nimega test. Raisi controlleri failis defineeritakse asju, mida sinna www.nimi.ee/test/? kohta panna äsjaloodud kontrolleril on seal näiteks index, aee on avaleht. Lisame näiteks indexile väikese teksti:
Mudeli tekitamine
$ ruby script/generate model Contact
- Veenduda, et mudelit saab Rails konsoolilt kasutada
$ ruby script/console Loading development environment (Rails 2.1.0) >> my_contact = Contact.new => #<Contact id: nil, first_name: nil, last_name: nil, \ address: nil, city: nil, state: nil, country: nil, phone: nil, email: nil>
>> my_contact.first_name = 'Priit' => "Priit" >> my_contact.last_name = 'Kask' => "Kask" >> my_contact.address = 'Loomaaia tee 1' => "Loomaaia tee 1" >> my_contact.city = 'Tartu' => "Tartu" >> my_contact.state = 'TR' => "Tartu" >> my_contact.country = 'Eesti' => "Eesti" >> my_contact.phone = '54331' => "54331" >> my_contact.email = 'priit@loomaaed.tartu.ee' => "priit@loomaaed.tartu.ee" >> my_contact.save => true >> result = Contact.find(:first) => #<Contact id: 3, first_name: "Priit", last_name: "Kask", address: "Loomaaia tee 1", \ city: "Tartu", state: "TR", country: "Eesti", phone: "54331", email: "priit@loomaaed.tartu.ee"> >> puts result.first_name Priit => nil
Lisaks annab kinnitust õnnestumisest, kui PostgreSQL andmebaasi vastavasse tabelisse on toimunud sissekanne.
Kontrolleri tekitamine
Seejärel anname käsu mis loob uue kontrolleri.
ruby script/generate controller katsetus
avame faili test/app/controllers/katsetus_controller kus asub class KatsetusControllerning tekitame sinna järgneva sisu
class KatsetusController < ApplicationController def index render :text => "tekst index lehele" end end
ja liikudes urlile http://www.nimi.ee:8000/katsetus
peaksime nägema kirja tekst index lehele
Rakenduse veebiliidese startimine
seejärel stardime arenduseks vajaliku webrick serveri
# cd contactlist # script/server -d -p 3000 => Booting WEBrick... => Rails application started on http://0.0.0.0:3000 [2008-01-08 18:27:50] INFO WEBrick 1.3.1 [2008-01-08 18:27:50] INFO ruby 1.8.6 (2007-09-24) [i386-freebsd7]
võti -p 3000 stardib veebiserveri pordile 3000 ning -d paneb tööle taustal, kasutades debumiseks on soovitatav see ärajätta
Nb! kui muudate database.yml faili tuleb veebiserverit taaskäivitada
nüüd peaksime enda projekti nägema aadressil http://www.nimi.ee:3000
Railsi logid
Logid võivad railsil kasvada päris suureks seetõttu oleks mõistlik need roteerima panna
näiteks sobiks logrotate jaoks selline blokk
/www/projekt/rails/log/production.log { daily rotate 14 size 5M compress create 640 missingok # vaja ka teha railsile restart, kui kasutuses moodulina siis näiteks selliselt touch /www/projekt/rails/tmp/restart.txt }
ja liikudes urlile http://www.nimi.ee:8000/katsetus
peaksime nägema kirja "Hello world"