Чтение онлайн

на главную - закладки

Жанры

Первые 20 часов. Как быстро научиться… чему угодно
Шрифт:

require './application.rb'

run Sinatra:: Application

И наконец, Gemfile:

source 'http://rubygems.org'

gem 'sinatra'

Программа совсем короткая, и понять ее нетрудно.

Gemfile указывает серверу включить библиотеку Sinatra, которая требуется для работы приложения. Библиотека будет загружена с сайта RubyGems.org.

Файл config.ru указывает основное приложение, затем выполняет программу.

После запуска программа будет отображать на экране «Hello, World!», когда кто-либо нажмет «/», что указывает на возврат на

главную страницу сайта.

Неужели все так просто?

В руководстве говорится, что я должен сделать еще одну вещь: сохранить файлы в репозитории git (иногда его называют просто «репо»). Я не могу сказать, что означает этот термин, но знаю, что git уже установлен, а необходимые команды есть в руководстве:

$ git init.

$ git add — A

$ git commit — m "Initial Commit"

Первая команда создает новый репозиторий git в папке корневого каталога. Команда add — A добавляет все файлы в папку репозитория. Команда commit — m фиксирует файлы в репозитории вместе с сообщением программиста, что именно фиксируется. (Я пока не очень понимаю разницу между «добавлять» и «фиксировать» и беру этот вопрос на заметку, решив разобраться с ним позже.)

После ввода этих команд компьютер отвечает:

[master (root-commit) 8ed1099] Initial commit

3 files changed, 9 insertions (+), 0 deletions (-)

create mode 100644 Gemfile

create mode 100644 application.rb

create mode 100644 config.ru

Похоже, все получилось! Осталось одно действие: создать новый пустой сервер на Heroku, а затем «поместить» мою программу на этот сервер:

$ heroku create

Я получаю ответ:

Creating shielded-springs-2049… done, stack is stack

is bamboo-ree-1.8.7

http://shielded-springs-2049.heroku.com/ | git@heroku.

com: shielded-springs-2049.git

Git remote heroku added

Получилось! «Stack» указывает программное обеспечение, выполняемое на сервере, и в сообщении прописывается общедоступный URL сервера.

И последняя команда:

$ git push heroku master

Если все пройдет хорошо, то я официально помещу свое первое приложение для выполнения на Heroku.

Вот что я получаю в ответ:

Heroku receiving push

Ruby/Sinatra app detected

Gemfile detected, running Bundler version 1.0.7

Unresolved dependencies detected; Installing…

Using — without development: test

! Gemfile.lock will soon be required

! Check Gemfile.lock into git with `git add Gemfile.lock`

! See http://devcenter.heroku.com/articles/bundler

Fetching source index for http://rubygems.org/

Installing rack (1.4.1)

Installing rack-protection (1.2.0)

Installing tilt (1.3.3)

Installing sinatra (1.3.3)

Using bundler (1.0.7)

Your bundle is complete! It was installed into./.bundle/gems/

Compiled slug size: 500K

Launching… done, v4

http://shielded-springs-2049.heroku.com deployed to Heroku

И теперь. момент истины… Я открываю веб-браузер, перехожу наи вижу вот что:

«Hello, World!»

ПОБЕДА!

Внимание! Внимание!

Программа заработала, но я также получил предупреждение. Что такое Gemfile.lock?

В документации Heroku’s Ruby

указано, что для установки библиотек на Heroku система использует библиотеку под названием bundler [31]. Это библиотека, и поэтому я могу установить ее при помощи следующей команды:

$ gem install bundler

Библиотека bundler необходима потому, что Heroku по умолчанию не устанавливает библиотеки из вашего приложения. Из соображений безопасности Heroku не присваивает мне такой уровень доступа к серверу, какой есть у меня на моем компьютере, и я не могу выполнить команду gem install sinatra прямо в моей учетной записи.

Вместо того чтобы предоставить мне (и другим пользователям) небезопасный уровень доступа к системе, Heroku использует bundler для установки библиотек, указанных в Gemfile. Отметив, какие библиотеки вы хотите установить в своем приложении, вы набираете команду:

$ bundle install

Эта команда создает в вашей программе новый файл под названием Gemfile.lock. Когда вы загружаете свои файлы в Heroku, система просматривает Gemfile и Gemfile.lock, проверяет их идентичность, после чего загружает библиотеки, а затем устанавливает их для вас.

Если вы посмотрите на ответ системы, когда я размещал программу на Heroku, то увидите, что система устанавливала bundler автоматически, как средство поддержки зависимостей. Вместо того чтобы предусмотреть сообщение об ошибке, инженеры Heroku добавили в программу исключение — вместо аварийного завершения автоматически загрузить отсутствующую программу и отправить предупреждение.

На этот раз система сработала, но в будущем я должен добавить файл Gemfile.lock в репозиторий git, прежде чем размещать приложение. Полезная информация!

На сцену выходит Sinatra

Теперь, когда мое простейшее приложение создано и запущено, я могу наконец начать разбираться, как работает Sinatra. Документация среды программирования Sinatra [32] очень подробна и включает множество примеров, и поэтому я решил начать именно с нее.

Основа приложений Sinatra называется маршрут. Лучше всего объяснить это понятие на примере.

Наше простое приложение Sinatra имеет один маршрут, который содержит «корень» сайта. Пользователи интернета обычно указывают корень сайта как начальную страницу сайта.

Если вы заходите на google.com или на yahoo.com, то браузер посылает запрос на сервер Google или Yahoo. Этот запрос называется GET-запросом, и он просит сервер показать вам, что находится в корневом каталоге сайта. Протокол, или формат, который использует компьютер для отправки запроса, называется HTTP, что расшифровывается как «протокол передачи гипертекста». Именно с этой аббревиатуры начинаются адреса в интернете — «http://».

GET — это самый распространенный из запросов HTTP, но не единственный. Существуют три дополнительных «глагола» HTTP:

POST — отправить ресурс на сервер;

PUT — обновить ресурс на сервере;

DELETE — удалить ресурс с сервера.

Если вы оставляете на сайте комментарии, то ваше остроумное замечание отправляется на сервер командой POST. Если вы сделали ошибку и редактируете комментарий, то обновление выполняется с помощью команды PUT. А если вы решили, что комментарий неудачный и его нужно удалить, браузер посылает команду DELETE.

Поделиться:
Популярные книги

Черный маг императора 3

Герда Александр
3. Черный маг императора
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Черный маг императора 3

Повелитель механического легиона. Том VIII

Лисицин Евгений
8. Повелитель механического легиона
Фантастика:
технофэнтези
аниме
фэнтези
5.00
рейтинг книги
Повелитель механического легиона. Том VIII

Пипец Котенку! 3

Майерс Александр
3. РОС: Пипец Котенку!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Пипец Котенку! 3

Разбуди меня

Рам Янка
7. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
остросюжетные любовные романы
5.00
рейтинг книги
Разбуди меня

Боги, пиво и дурак. Том 6

Горина Юлия Николаевна
6. Боги, пиво и дурак
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Боги, пиво и дурак. Том 6

Болотник 2

Панченко Андрей Алексеевич
2. Болотник
Фантастика:
попаданцы
альтернативная история
6.25
рейтинг книги
Болотник 2

Ты всё ещё моя

Тодорова Елена
4. Под запретом
Любовные романы:
современные любовные романы
7.00
рейтинг книги
Ты всё ещё моя

S-T-I-K-S. Пройти через туман

Елисеев Алексей Станиславович
Вселенная S-T-I-K-S
Фантастика:
боевая фантастика
7.00
рейтинг книги
S-T-I-K-S. Пройти через туман

Имя нам Легион. Том 4

Дорничев Дмитрий
4. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 4

Сводный гад

Рам Янка
2. Самбисты
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Сводный гад

Я князь. Книга XVIII

Дрейк Сириус
18. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я князь. Книга XVIII

Королевская Академия Магии. Неестественный Отбор

Самсонова Наталья
Любовные романы:
любовно-фантастические романы
8.22
рейтинг книги
Королевская Академия Магии. Неестественный Отбор

Последняя Арена 6

Греков Сергей
6. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Последняя Арена 6

Жребий некроманта. Надежда рода

Решетов Евгений Валерьевич
1. Жребий некроманта
Фантастика:
фэнтези
попаданцы
6.50
рейтинг книги
Жребий некроманта. Надежда рода