Вы новичок в веб-разработке и хотите создать веб-приложение. Вы можете начать с Ruby on Rails, который представляет собой устоявшуюся основу для создания веб-сайтов. Технически, это программная библиотека, содержащая ОЧЕНЬ МНОГО кода Ruby, написанного другими, что делает ее жемчужиной! См. Мой пост о драгоценных камнях, чтобы узнать больше о аккуратно упакованном коде Ruby.

Я думаю, что когда вы хорошо понимаете, как работает Rails, это помогает понять основы общей картины, поэтому давайте вернемся на уровень выше и поговорим о том, как работает Интернет. И я имею в виду Интернет, а не Интернет. Если вы думали, что это одно и то же, вы точно не одиноки. На самом базовом уровне разница в том, что Интернет - это физическое соединение компьютеров друг с другом (оборудование), а Интернет - это программное обеспечение. На диаграмме ниже вы можете видеть, что весь мир пересечен сетью оптоволоконных кабелей, которые на самом деле в основном находятся под водой. Заманчиво думать об «облаке» как об облаке где-то в небе, возможно, с использованием спутников, но почти все наше основное интернет-соединение находится на дне океана.

Интернет, с другой стороны, представляет собой набор правил того, как компьютеры взаимодействуют друг с другом. Сеть, вероятно, является наиболее часто используемой интернет-службой, и способ ее работы заключается в использовании протоколов. Существует множество различных протоколов, которые управляют работой Интернета, например IP (Интернет-протокол - у каждого компьютера есть «адрес»), TCP (протокол управления передачей - как устанавливается соединение и передаются данные) и тот, который мы Сегодня мы в основном говорим о HTTP (протокол передачи гипертекста).

Протокол передачи гипертекста

Серверы - это компьютеры, напрямую подключенные к Интернету (подумайте: кабели). У них есть уникальный IP-адрес, который позволяет пользователям получать к ним доступ для получения информации. Когда мы вводим «www.google.com» в URL-адрес браузера, мы используем доменное имя, псевдоним для IP-адреса сервера Google, который на самом деле представляет собой серию чисел.

Компьютер, который вы используете для чтения этой статьи, также имеет IP-адрес, который серверы будут использовать для отправки вам информации. Если вас интересует ваш собственный IP-адрес, вы можете ввести «What’s my IP address» в google.com, и он вам скажет!

Ваш браузер (например, Chrome, Firefox, Safari и т. Д.) Известен как клиент. Ваш браузер загружает запрошенные веб-страницы через серию HTTP-запросов к серверам.

Когда сервер получает запрос (который, как ни странно, поступает в читаемой текстовой форме), он находит запрошенную веб-страницу и отправляет ее обратно клиенту. Если он не может найти конкретную запрошенную страницу, он отправит обратно сообщение об ошибке. Он всегда должен давать какой-то ответ.

Чтобы убрать слой тайны, вот как выглядит HTTP-запрос, если я наберу google.com в своем браузере.

Чтобы разбить это:

  • URL-адрес запроса: доменное имя / псевдоним адреса сервера Google.
  • Метод запроса: наиболее часто используются методы GET, PUT, PATCH, POST, DELETE. Все они относятся к операциям, которые будут выполнены. В этом случае я просто хотел, чтобы отображалась страница Google, поэтому ввод google.com инициировал запрос GET.
  • Код состояния: информация об успешном выполнении запроса. Если, например, вы получите код состояния 404, это будет означать, что страница не найдена. (Https://httpstatusdogs.com/ для милых собак и кодов статуса)
  • Удаленный адрес: IP-адрес сервера.
  • Политика реферера: мы не будем углубляться в это, но это информация, которая будет отправлена ​​вместе с запросом.

Теперь, когда мы знаем, как выглядит HTTP-запрос, мы можем поговорить о шаблоне MVC - Модель, Представление, Контроллер.

  • База данных - это место, где хранятся все ваши данные. Это таблицы, которые вы построили (обычно соответствующие вашим моделям), которые также хранят отношения между объектами. Доступ к нему осуществляется через запросы SQL.
  • Модели - это объекты, которые вы создали для своего приложения, а ActiveRecord позволяет моделям взаимодействовать с базой данных, сохраняя, удаляя и обновляя записи. (Дополнительный обзор см. В Руководстве по ActiveRecord моего товарища по когорте.) Модели также управляют проверками приложений и настраиваемой логикой для ваших объектов и приложений.
  • Раздел «Маршрутизация» - это маршал авиации вашего веб-приложения. Маршруты интерпретируют HTTP-запрос и направляют его соответствующим образом.
  • Контроллеры взаимодействуют со своей связанной моделью, а затем передают эту информацию в представление, которое отображается обратно в браузер, чтобы вы могли видеть на своем экране.

Вернемся к диаграмме. Вы начинаете в своем браузере, где вы вводите (например) icecreamflavors.com, который я создал с помощью Rails и размещен на веб-сервере. Это HTTP-запрос GET.

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

В этом конкретном случае, набрав icecreamflavors.com, вы перейдете на главную страницу со всеми вкусами мороженого. Маршрут направит вас к контроллеру вкусов мороженого, где действие для просмотра всех вкусов называется «индекс». Мой метод индекса вызовет модель IceCreamFlavor, которая получит все ароматы из базы данных и вернет их контроллеру.

Затем контроллер может передать эту информацию на страницу просмотра для просмотра всех вкусов мороженого, что вы и увидите в своем браузере.

Следует отметить еще одну вещь, которая делает Rails особенно удобным для пользователя. Rails твердо верит в концепцию «соглашения важнее конфигурации». Это означает, что Rails принимает за разработчика множество обыденных решений. Например, когда вы набираете rails new, для вас создается вся файловая структура приложения. Контроллеры всегда будут находиться в разделе контроллеров папки приложения. Действие index в контроллере будет отображать страницу просмотра индекса, даже если она явно не закодирована для этого разработчиком этого конкретного приложения.

Отказ от принятия множества индивидуальных решений по основам позволяет разработчикам легко переходить к другим проектам, не теряясь полностью. Документация для Ruby on Rails, как известно, очень хороша, и я настоятельно рекомендую этот раздел, если вы хотите больше узнать о соглашениях, а не о конфигурации и о способе разработки приложений омакасе.

Надеюсь, эта статья помогла вам лучше понять, как Rails работает в общей схеме Интернета, и теперь вы готовы создавать свои собственные веб-сайты :)

Удачного кодирования!