Қызықты

Сөрені пайдалану

Сөрені пайдалану


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

Алдыңғы мақалада сіз Rack дегеннің не екенін білдіңіз. Енді Rack-ті қолданып, кейбір парақтарға қызмет көрсететін кез келді.

Сәлем Әлем

Алдымен «Сәлем әлемі» қосымшасынан бастайық. Бұл қосымшаның сұраныстың қандай түріне қарамастан, 200 күй кодымен («OK» үшін HTTP-сөйлесуімен) қайтарылады «Сәлем Әлем» дене ретінде.

Төмендегі кодты қарастырмас бұрын кез-келген Rack қосымшасы қандай талаптарға сай болуы керек екенін тағы бір рет қарастырыңыз.

Rack қосымшасы кез-келген Ruby нысаны болып табылады, ол қоңырау әдісіне жауап береді, бір хэш параметрін алады және жауап күйінің коды, HTTP жауап тақырыптары және жауаптар денесі жолдар жиыны ретінде берілген жиымды қайтарады.
класс HelloWorld
def қоңырау (kk)
return 200, {}, «Сәлем әлем!»
Соңы
Соңы

Көріп отырғаныңыздай, типтегі объект Сәлем Әлем осы талаптардың бәріне жауап береді. Бұл өте минималды және өте пайдалы емес, бірақ ол барлық талаптарға жауап береді.

WEBrick

Бұл өте қарапайым, енді оны WEBrick-ке (Ruby-мен бірге келетін HTTP-сервер) қосамыз. Ол үшін біз пайдаланамыз Rack :: Handler :: WEBrick.run әдісі, оны мысал келтіріңіз Сәлем Әлем және порт іске қосылады. Енді WEBrick сервері жұмыс істейді, ал Rack HTTP сервері мен сіздің қосымшаның арасында сұраныстарды жібереді.

Ескеріңіз, бұл Rack көмегімен заттарды іске қосудың тамаша тәсілі емес. Төменде көрсетілген «Rackup» деп аталатын Rack-тің басқа мүмкіндігіне сүңгу алдында бірдеңе істеп тұру үшін мұнда көрсетілген. Rack :: өңдегішті осылайша пайдалану бірнеше қиындықтарға ие. Біріншіден, бұл өте конфигурацияланбайды. Бәрі сценарийде қатаң жазылған. Екіншіден, сіз келесі сценарийді іске қосқаныңызды байқайсыз, бағдарламаны өлтіре алмайсыз. Бұл Ctrl-C жауап бермейді. Егер сіз осы пәрменді іске қоссаңыз, терминал терезесін жауып, жаңасын ашыңыз.

#! / usr / bin / env ruby
«тіректі» талап етеді
класс HelloWorld
def қоңырау (kk)
return 200, {}, «Сәлем әлем!»
Соңы
Соңы
Rack :: Handler :: WEBrick.run (
HelloWorld.new,
: Порт => 9000
)

Рэкетинг

Мұны жасау өте оңай, бірақ тіректі әдетте олай емес. Сөре әдетте аталатын құралмен қолданылады ракетка. Rackup жоғарыда аталған кодтың төменгі бөліміндегілерден көп немесе азын жасайды, бірақ қарапайым түрде. Rackup пәрмен жолынан іске қосылады және a беріледі .ру «Rackup файлы.» Бұл жай ғана Ruby сценарийі, ол басқалармен қатар Rackup-ке қосымшаны береді.

Жоғарыда аталған өте қарапайым Rackup файлы мынаған ұқсас болады.

класс HelloWorld
def қоңырау (kk)
қайтару
200,
{'Мазмұн түрі' => 'мәтін / html'},
«Сәлем Әлем!»

Соңы
Соңы
HelloWorld.new іске қосыңыз

Біріншіден, бізге кішкене өзгеріс енгізу керек болды Сәлем Әлем сынып. Rackup деп аталатын орта бағдарлама қосымшасы жұмыс істейді Сөре :: Сызғыш бұл дұрыс жауаптарды тексереді. Барлық HTTP жауаптарында a болуы керек Мазмұн түрі үстіңгі деректеме, осылайша қосылды. Содан кейін, соңғы жол тек қосымшаның данасын жасайды және оны оған өткізеді жүгіру әдісі. Ең дұрысы, сіздің қосымшаңыз толығымен Rackup файлында жазылмауы керек, бұл файл сіздің қосымшаңызды талап етуі керек және солай жасауы керек. Rackup файлы жай «желім», ешқандай нақты қолданбалық код болмауы керек.

Егер сіз пәрменді іске қоссаңыз ракетка helloworld.ru, ол 9292 портында серверді бастайды. Бұл әдепкі Rackup порты.

Rackup-тің бірнеше пайдалы функциялары бар. Біріншіден, порт сияқты заттарды командалық жолда немесе сценарийдегі арнайы жолда өзгертуге болады. Пәрмен жолында a пунктінен өтіңіз -p порты параметрі. Мысалға: ракетка -p 1337 helloworld.ru. Егер бірінші жол басталса, сценарийдің өзінен #, содан кейін ол пәрмен жолы сияқты талданады. Сонымен, опцияларды мұнда да анықтауға болады. Егер сіз 1337 портында жұмыс жасағыңыз келсе, Rackup файлының бірінші жолын оқи аласыз # -p 1337.



Пікірлер:

  1. Gataur

    Менің ойымша, сіз қате жібердіңіз. Оны талқылайық. Маған ПМ арқылы жазыңыз.

  2. Agneya

    Сізбен мүлдем келіседі. Бұл керемет идея. Мен оны ұстаймын.



Хабарлама жазыңыз