Erinevus lehekülje "Ruby on rails" redaktsioonide vahel
(→Rails arenduskeskond) |
(→Rails arenduskeskond) |
||
41. rida: | 41. rida: | ||
rails 2.0 puhul ,et vältida mysqli tuleb kirjutada | rails 2.0 puhul ,et vältida mysqli tuleb kirjutada | ||
− | rails -d mysql | + | rails -d mysql test |
− | Genereerib kausta | + | Genereerib kausta test |
seejärel stardime arenduseks vajaliku webrick serveri | seejärel stardime arenduseks vajaliku webrick serveri | ||
− | cd | + | cd test |
script/server -d -p 3000 | script/server -d -p 3000 | ||
=> Booting WEBrick... | => Booting WEBrick... | ||
59. rida: | 59. rida: | ||
nüüd peaksime enda projekti nägema aadressil http://localhost:3000 | nüüd peaksime enda projekti nägema aadressil http://localhost:3000 | ||
+ | |||
+ | Railsis on mudelid (model) ja controllerid (controller ) | ||
+ | See kõik asub siis stiilis aadress/kontroller. Näiteks www.domeen.ee ja | ||
+ | loome sinna kontrolleri, mis on siis nimega test | ||
+ | seega on kohe www.domeen.ee/test kättesaadav. Models on kasutusel kui sql andmete hoidjad | ||
+ | controlleri failis defineeritakse asju, mida sinna www.domeen.ee/test/? kohta panna | ||
+ | äsjaloodud kontrolleril on seal näiteks index see on avaleht. | ||
+ | Index peab olema defineeritud ka controlleri faili sees | ||
+ | muidu ei saa ta midagi kuvada seepärast näiteks lisame sellise: | ||
+ | |||
+ | def index | ||
+ | render :text => "tekst index lehele" | ||
+ | end | ||
===Rails ja Apache mitme projektiga server=== | ===Rails ja Apache mitme projektiga server=== |
Redaktsioon: 9. jaanuar 2008, kell 01:46
Sissejuhatus
Ruby on Rails on veebiarenduse raamistik, mis kasutab programmeerimiskeelt Ruby. Kui Rails on alles paariaastane noor raamistik, siis ruby on juba aastast 1993, mil Jaapanis Yukihiro Matsumoto sai tööle esimese "Hello World!".
Rails arenduskeskond
Installime vajalikud päkitsad railsile
install FreeBSDs
Esimesena mysql server
cd /usr/ports/databases/mysql50-server make install clean
Seejärel ruby
cd /usr/ports/lang/ruby18 make install clean
Portupgrade install
pkg_add -r portupgrade
Ning seejärel võime railsi ennast installima asuda
portinstall -PR rubygem-rails
Viimane käsk installib railsi koos kõigi sõltuvustega võti P käseb kasutada binaarseid installereid kui võimalik ja R upgradeb juba installitud sõltuvusi. Samuti küsitakse kasutajalt mingihetk mis tüüpi andmebaasi ta soovib kasutada.
Uue projekti start
Uue projekti loome käsuga
rails ideenimi
rails 2.0 puhul ,et vältida mysqli tuleb kirjutada
rails -d mysql test
Genereerib kausta test
seejärel stardime arenduseks vajaliku webrick serveri
cd test 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
Nb! kui muudate database.yml faili tuleb veebiserverit taaskäivitada
nüüd peaksime enda projekti nägema aadressil http://localhost:3000
Railsis on mudelid (model) ja controllerid (controller ) See kõik asub siis stiilis aadress/kontroller. Näiteks www.domeen.ee ja loome sinna kontrolleri, mis on siis nimega test seega on kohe www.domeen.ee/test kättesaadav. Models on kasutusel kui sql andmete hoidjad controlleri failis defineeritakse asju, mida sinna www.domeen.ee/test/? kohta panna äsjaloodud kontrolleril on seal näiteks index see on avaleht. Index peab olema defineeritud ka controlleri faili sees muidu ei saa ta midagi kuvada seepärast näiteks lisame sellise:
def index
render :text => "tekst index lehele"
end
Rails ja Apache mitme projektiga server
Süsteem toimib nii, et Apache suunab vhostide info mongrel serverile, mis siis railsi skripte esile manab.
cd /usr/ports/apache22 make install with_proxy_modules=yes gem install mongrel gem install mongrel-cluster
Loome vajalikud skriptid
pane rcrails /etc/init.d vms kausta ja start_mongrel iga railsi script kausta. start_mongreli sees määra USER ja GROUP, kellena see server jooksma peaks.
Meil on kaks eraldi railsis loodud programmi, mis asuvad
/home/rails/progeadmin/ /home/rails/veebiadmin/
/usr/local/etc/rails.conf või muusse faili (muuda vastavalt rcrails skripti) kirjuta näiteks:
RAILS_SERVERS=" /home/rails/progeadmin/ /home/rails/veebiadmin/
Mongrel Cluster seadistus
mongrel_rails cluster::configure -e production \ -p 8000 -N 3 -c /var/www/apps/testapp -a 127.0.0.1 \ --user mongrel --group mongrel
mongrel_rails cluster::configure -e production \ -p 8100 -N 3 -c /var/www/apps/testapp -a 127.0.0.1 \ --user mongrel --group mongrel
See käsk kirjutab konfiguratsiooni faili config/mongrel_cluster.yml.
cat home/progeadmin/rails/config/mongrel_cluster.yml
user: programm cwd: /home/progeadmin/rails/ port: "8000" environment: production group: konkurss address: 127.0.0.1 pid_file: log/mongrel.pid servers: 3
Nende käskude peale käivituvad kummagi railsi kohta kolm mongrel protsessi Esimesel portidele 8001 8002 8003 ja teisel 8101 8102 8103
Mongrel clustri startimiseks tuleb anda käsk
mongrel_rails cluster::start
httpd.conf
Kontrollime, et read oleksid
LoadModule proxy_module libexec/apache22/mod_proxy.so LoadModule proxy_connect_module libexec/apache22/mod_proxy_connect.so LoadModule proxy_ftp_module libexec/apache22/mod_proxy_ftp.so LoadModule proxy_http_module libexec/apache22/mod_proxy_http.so LoadModule proxy_ajp_module libexec/apache22/mod_proxy_ajp.so LoadModule proxy_balancer_module libexec/apache22/mod_proxy_balancer.so
Nüüd loome mõlemale progele nende vhostid
<VirtualHost 193.40.0.10:80> ServerName progeadmin.katse.ee DocumentRoot /home/rails/progeadmin/ <Directory "/home/rails/progeadmin/"> Options FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> RewriteEngine On # Redirect all non-static requests to cluster #RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RewriteRule ^/(.*)$ balancer://mongrel_cluster%{REQUEST_URI} [P,QSA,L] </VirtualHost>
<VirtualHost 193.40.0.10:80> ServerName veebiadmin DocumentRoot /home/rails/veebiadmin/ <Directory "/home/rails/veebiadmin/"> Options FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> RewriteEngine On # Rewrite to trailing slash RewriteRule ^/admin$ /admin/ [R,L] # test if this is /admin request RewriteCond %{REQUEST_URI} ^/admin(/.*) # strip off /admin and put result in ENV RewriteRule ^/admin(.*) /admin$1 [E=AdminReq:$1] RewriteCond /home/rails/admin/public/%{ENV:AdminReq} -f # serve static files RewriteRule ^/admin/(.*) /home/rails/admin/public/$1 [L] # If request is not static, proxy to rails RewriteRule ^/(admin/.*)$ balancer://mongrel_cluster2/$1 [P,QSA,L] </VirtualHost>
Ehitame proxyd
<Proxy balancer://mongrel_cluster2> BalancerMember http://127.0.0.1:8001 BalancerMember http://127.0.0.1:8002 BalancerMember http://127.0.0.1:8003 </Proxy>
<Proxy balancer://mongrel_cluster> BalancerMember http://127.0.0.1:8101 BalancerMember http://127.0.0.1:8102 BalancerMember http://127.0.0.1:8103 </Proxy>
ja balaceri
Listen 8000 <VirtualHost 193.40.0.10:8000> <Location /> SetHandler balancer-manager Deny from all Allow from localhost </Location> </VirtualHost>