Ruby on Rails rakenduste kasutamine

Eeldused juhendi järgi tegutsemiseks

Vajalik on iseteeninduses lisatud SSH konto.

Asenda juhendis domeen.ee oma veebilehe domeeniga, näiteks minukoduleht.ee.

Kasuta vhost00000ssh asemel oma SSH konto kasutajanime, näiteks vhost7998ssh.

Ruby on Rails kohandatava ruby versiooniga

Proovime panna tööle viimase versiooni ruby'st ja rails'ist rubyonrails.org Guides -> Getting Started with Rails juhendi järgi.

Vajaliku ruby versiooni paigaldamine

Vaikimisi on testitava lehe serveris installitud ruby 2.1.9.

$ ruby -v

ruby 2.1.9p490 (2016-03-30 revision 54437) [amd64-freebsd10]

 

Juhend ütleb, et oleks vaja vähemalt versiooni 2.2.2, seega tuleb paigaldada vajalik versioon ruby'st ise.

Kasutame soovitud ruby versiooni paigaldamiseks rbenvi (https://github.com/rbenv/rbenv). rbenv võimaldab paigaldada ja kasutada täpselt sellist ruby versiooni, nagu projekti jaoks vaja. Vajadusel saab paigaldatud versioonide vahel ka ümber lülituda.

Viimane ruby versioon on juhendi kirjutamise ajal 2.3.1 ning viimane railsi versioon v5.0.0.1. Kasutame rbenvi, et sellega need installeerida.

rbenv on serveritesse eelpaigaldatud ja seda võib kohe kasutama hakata.

Juhul kui rbenvi mingil põhjusel ikkagi ei ole või Sul on vaja paigaldada mingi muu versioon rbenvist, siis vaata rbenvi paigaldamise juhendit: https://github.com/rbenv/rbenv. Meie juhendi kirjutamise hetkel käib rbenvi paigaldus järgnevalt:

$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv

Hetkel ei saa rbenvi veel kasutada, sest süsteem ei leia seda üles (eeldusel, et rbenvit ei ole eelpaigaldatud. Kui see oli varasemalt olemas, siis kuvab see vana versiooni infot):

$ type rbenv

-bash: type: rbenv: not found

 

Selleks, et süsteem uue rbenvi üles leiaks, tuleb selle binaari asukoht lisada PATHi. Selle jaoks on käsklus:

$ export PATH="$HOME/.rbenv/bin:$PATH"

$ type rbenv

rbenv is /www/apache/domains/www.domeen.ee/.rbenv/bin/rbenv

 

Uute ruby versioonide paigaldamiseks tuleb veel enne paigaldada ka ruby-build (https://github.com/rbenv/ruby-build). Meie juhendi kirjutamise hetkel käib ruby-buildi paigaldus järgnevalt:

$ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

 

rbenv versions käsklus kuvab hetkel paigaldatud versioone. Tärniga on tähistatud kasutuses olev versioon. Kuna ühtegi uut versiooni ei ole veel paigaldatud, siis kuvatakse listis vaid system – ehk eelpaigaldatud ruby.

$ rbenv versions

* system (set by /www/apache/domains/www.domeen.ee/.rbenv/version)

 

Paigaldame soovitud versiooni 2.3.1:

$ rbenv install 2.3.1

Downloading ruby-2.3.1.tar.bz2...

-> https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.bz2

Installing ruby-2.3.1...

Installed ruby-2.3.1 to /www/apache/domains/www.domeen.ee/.rbenv/versions/2.3.1

 

Versioonide all kuvatakse nüüd ka uut versiooni.

$ rbenv versions

* system (set by /www/apache/domains/www.domeen.ee/.rbenv/version)

  2.3.1

 

RoR rakenduse paigaldamiseks tuleb gem-e installida. gemi keskkond on hetkel seadistatud 2.1.9 ruby vastu:

$ gem env

RubyGems Environment:

  - RUBYGEMS VERSION: 2.6.4

  - RUBY VERSION: 2.1.9 (2016-03-30 patchlevel 490) [amd64-freebsd10]

  - INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/2.1

  - USER INSTALLATION DIRECTORY: /www/apache/domains/www.domeen.ee/.gem/ruby/2.1

  - RUBY EXECUTABLE: /usr/local/bin/ruby21

 ...

 

Käivitame veel ühe käskluse, mis registreerib mõned rbenvi võimalused, nagu näiteks rbenv shell'i:

eval "$(rbenv init -)"

 

Määrame ruby 2.3.1 kasutatavaks versiooniks rbenv shell käsklust kasutades:

$ rbenv shell 2.3.1

 

Kontrollime, mis versiooni nüüd kasutatakse:

$ rbenv versions

  system

* 2.3.1 (set by RBENV_VERSION environment variable)

 

$ ruby -v

ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-freebsd10.2]

 

 

$ gem env

RubyGems Environment:

  - RUBYGEMS VERSION: 2.5.1

  - RUBY VERSION: 2.3.1 (2016-04-26 patchlevel 112) [x86_64-freebsd10.2]

  - INSTALLATION DIRECTORY: /www/apache/domains/www.domeen.ee/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0

  - USER INSTALLATION DIRECTORY: /www/apache/domains/www.domeen.ee/.gem/ruby/2.3.0

  - RUBY EXECUTABLE: /www/apache/domains/www.domeen.ee/.rbenv/versions/2.3.1/bin/ruby

 ...

 

Kui soovid rbenvi kasutada iga kord peale SSH keskkonda sisse logimist, ilma et peaksid ise käivitama eelnevaid export PATH ja eval "$(rbenv init -)" käsklusi, siis tuleks need käsklused ~/.bash_profile faili lisada. Seda saab teha järgnevalt:

$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile

$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

 

Selleks, et järgmisel sisse logimisel viimati aktiveeritud 2.3.1 kohe aktiivne oleks, tuleks jooksutada käsklust:

$ rbenv global 2.3.1

 

Logime välja ja uuesti sisse.

$ ssh -p 1022 vhost00000ssh@domeen.ee

$ ruby -v

ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-freebsd10.2]

 

Nüüd on kõik valmis railsi paigaldamiseks:

$ gem install rails

$ rails -v

Rails 5.0.0.1

 

Uue railsi aplikatsiooni loomine

Loome railsiga uue aplikatsiooni (rails new -h kuvab erinevaid võimalusi).

Teeme aplikatsiooni nimega website:

$ rails new ~/website -O

 

Luuakse kataloog /www/apache/domains/www.domeen.ee/website/

 

Apache ja fcgi

Apache veebiserveri jaoks tuleb veel paigaldada fcgi gem (rubyt saab jooksutada läbi Apache fcgi, eraldi pordil ei ole lubatud serverit kuulama panna). Selleks kasuta käsklust:

gem install fcgi -- --with-fcgi-include=/usr/local/include --with-fcgi-lib=/usr/local/lib

 

Juhul kui eelneva käsklusega ei õnnestu fcgi gemi rbenvi keskkonnas paigaldada, toimib alternatiivse lahendusena ruby versiooni vahetamine eelpaigaldatud versioonile, fcgi gemi paigaldamine ruby 2.3.1 gemide kataloogi ning seejärel tagasi 2.3.1 versioonile lülitumine. Paigaldamise teekonnana kasuta 2.3.1 shellis gem env INSTALLATION DIRECTORY teekonda, meie testis on see /www/apache/domains/www.domeen.ee/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0

$ rbenv shell system

$ gem install fcgi --install-dir /www/apache/domains/www.domeen.ee/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0

$ rbenv shell 2.3.1

 

Lisa gem 'fcgi', '~> 0.9.2.1', :path => "/www/apache/domains/www.domeen.ee/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/fcgi-0.9.2.1" website/Gemfile lõppu.

$ echo "gem 'fcgi', '~> 0.9.2.1', :path => \"/www/apache/domains/www.domeen.ee/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/fcgi-0.9.2.1\"" >> ~/website/Gemfile

 

dispatch.fcgi

Nüüd on esmaseks testiks kõik vajalikud pakid paigaldatud. Järgmiseks tuleb Sul tekitada dispatch.fcgi fail kataloogi ~/htdocs/cgi-bin

Selle sisuks:

#!/www/apache/domains/www.domeen.ee/.rbenv/versions/2.3.1/bin/ruby

require_relative '../../website/config/environment'

class Rack::PathInfoRewriter

  def initialize(app)

    @app = app

  end

  def call(env)

    env.delete('SCRIPT_NAME')

    parts = env['REQUEST_URI'].split('?')

    env['PATH_INFO'] = parts[0]

    env['QUERY_STRING'] = parts[1].to_s

    @app.call(env)

  end

end

Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(Website::Application)

 

Siin pane tähele, et esimesel real oleks rbenvi soovitud ruby versiooni binaari teekond ehk gem envi RUBY EXECUTABLE väärtus (/www/apache/domains/www.domeen.ee/.rbenv/versions/2.3.1/bin/ruby).

require_relative '../../website/config/environment' – peab kasutama kataloogi, mida kasutati railsiga projekti loomisel (rails new website -O) – meie testis seega website.

Rack::PathInfoRewriter.new(Website::Application) – siin tuleb Website::Application kohal kasutada väärtust ~/website/config/application.rb failist "module" algusega realt. Meie testis on selleks module Website, seega kasutame Website::Application

Salvesta ~/htdocs/cgi-bin/dispatch.fcgi fail ja luba selle käivitamine.

$ chmod +x ~/htdocs/cgi-bin/dispatch.fcgi

 

.htaccess

Viimase sammuna tuleb tekitada ~/htdocs/.htaccess fail, mille abil kõik Apache veebipäringud suunata dispatch.fcgi faili pihta.

Sisuks:

AddHandler fcgid-script .fcgi

SetEnv RAILS_ENV production

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ cgi-bin/dispatch.fcgi/$1 [QSA,L]

 

Testimine

Avades lingi http://domeen.ee peaksid nägema "Yay! You’re on Rails!" tervituslehte.

Juhul kui näed Error 500 lehekülge, läks midagi valesti. Proovi käsitsi dispatch.fcgi faili käivitada ja vaata, mis veateadet kuvatakse. Näide:

$ ~/htdocs/cgi-bin/dispatch.fcgi 

/www/apache/domains/www.domeen.ee/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:293:in `require': cannot load such file -- fcgi (LoadError)

...

 

Juhul kui sealt midagi kasulikku ei paista, siis võta meiega ühendust ja proovime veebiserveri pealogist midagi asjalikumat leida.

Tekitame oma avalehe.

Kui veel pole kodukataloogis, siis mine kõigepealt sinna.

$ cd ~

 

Olles kodukataloogis:

$ bin/rails generate controller Welcome index

 

Lingilt http://domeen.ee/welcome/index avaneb nüüd railsi poolt vaikimisi tekitatud sisu ja viide failile, kus seda muuta saab. Selle jaoks, et leht avaneks otse http://domeen.ee/ pealt, tuleb muuta config/routes.rb faili ja lisada sinna peale get 'welcome/index' rida:

root 'welcome#index'

 

Nüüd kuvab http://domeen.ee/ sama vaadet.

Kui pärast koodi muutmist lehel ikka midagi ei muutu, on see ilmselt sellest, et dispatch.fcgi protsess jookseb. Selle protsessi peatamise järel käivitatakse uus protsess ja kajastuvad ka muudatused. Protsessi peatamiseks kasuta käsklust:

$ pkill -f dispatch.fcgi

 

rbenvi eemaldamine

rbenvi saab vajadusel eemaldada järgnevalt (eemaldab kõik rbenvi abil paigaldatud ruby versionid ja gemid).

$ rm -rf `rbenv root`

$ rm ~/.ruby-version

 

~/.bash_profile failist eemaldada:

export PATH="$HOME/.rbenv/bin:$PATH"

eval "$(rbenv init -)"

 

Logi SSH keskkonnast välja ja uuesti sisse.

 

RoR eelpaigaldatud rubyga

Viimast railsi ei saa eelpaigaldatud ruby versiooniga installeerida (kuna vajab uuemat), vanemaid versioone aga küll. Juhul kui eelpaigaldatud versioon Sulle sobib, siis pole otseselt vaja rbenvi kasutada ja võib rakenduse tööle panna ka ilma selleta.

Kasutame gem envist USER INSTALLATION DIRECTORYT, milleks meie testi puhul on /www/apache/domains/www.domeen.ee/.gem/ruby/2.1 ehk ~/.gem/ruby/2.1

$ gem install rails -v 4.2.7.1 --install-dir ~/.gem/ruby/2.1

 

Testime paigaldatud railsi:

$ ~/.gem/ruby/2.1/bin/rails -v

Rails 4.2.7.1

 

Selleks, et toimiks käsklus rails, tuleb täiendada ~/.bash_profile faili.

echo 'PATH=$PATH:~/.gem/ruby/2.1/bin' >> ~/.bash_profile

 

Logi SSH-st välja ja sisse või käivita:

$ source ~/.bash_profile

 

$ rails -v

Rails 4.2.7.1

 

Loome uue aplikatsiooni, kuid bundle installi veel ei käivita (-B võti).

$ rails new website -O -B

 

Läheme projekti peakataloogi:

$ cd ~/website/

 

Lisame fcgi gemi Gemfile'i:

$ echo "gem 'fcgi', '~> 0.9.2.1'" >> ~/website/Gemfile

 

Nüüd on kõik vajalikud gemid kirjas ja teeme bundle installi:

$ bundle install --path ~/.gem/ruby/2.1

 

Üleval rbenvi kasutamisega kirjeldatud näites välja toodud dispatch.fcgi faili alguses (vaata pealkirja dispatch.fcgi) tuleb eelpaigaldatud versiooni kasutades lisada mõned environment muutujate definitsioonid. Ülejäänud faili kood jääb samaks.

#!/usr/local/bin/ruby

ENV['HOME'] ||= '/www/apache/domains/www.domeen.ee'

ENV['GEM_HOME'] = File.expand_path('~/.gem/ruby/2.1/')

ENV['GEM_PATH'] = File.expand_path('~/.gem/ruby/2.1/')

 

Kasuta eelmisest näitest sama sisuga .htaccess faili (vaata pealkirja .htaccess) ja veebis peaks avanema Ruby on Railsi vaikimisi leht.

 

Seotud juhendid

Sinu tagasiside on oluline

Enim esitatud küsimused

Enim loetud juhendid

Juhendid alustajale

Klienditeenindus
Lisasime diili sinu ostukorvi, said ikka mega hea diili!

Vali paketi periood

1 kuu põhine arveldus

Kuus 12.08

Kokku 12.08

3 kuu põhine arveldus

Kuus 12.08

Kokku 36.24

6 kuu põhine arveldus

Kuus 12.08

Kokku 72.48

1 aasta põhine arveldus

Säästad 20% ehk -24.16

Kuus 10.07

Kokku 120.80

1 aasta
0.00
2 aastat
0.00
3 aastat
0.00
4 aastat
0.00
5 aastat
0.00
6 aastat
0.00
7 aastat
0.00
8 aastat
0.00
9 aastat
0.00
10 aastat
0.00