Rails под капотом. Введение - Что такое rails

Я уже несколько лет разрабатываю веб приложения, используя Ruby on Rails, но при этом не задавался вопросом, что там внутри. Я успешно использовал контроллеры и модели, представления и сериалайзеры, мейлеры, воркеры, консерны и модули, и никогда не задумывался над тем, как работают rails. В PHP все было просто - у вас либо файл соответствует URL, либо все запросы идут в index.php и уже оттуда можно проследить дальнейшее выполнение программы. С rails все обстоит немного сложнее и в этом я постараюсь разобраться в этом сам и поделиться с вами. Мой план статей примерно следующий:

  • Что такое rails?
  • Из каких основных компонентов состоит фреймворк?
  • Где у rails точка входа?
  • Какой путь проходит запрос, пока не начинает обрабатываться в индексе контроллера?
  • Почему рельсы такие медленные и как это можно исправить?

В этой вводной статье я начну с того, что же такое rails. Все мы знаем что Ruby on Rails это высокоуровневый MVC фреймворк, главным принципом которого является “Соглашение важнее Конфигурации (Convention over Configuration)”. Это и так все знаюn и об этом написано много других статей. Я бы хотел поговорить о том, что же такое “rails” (специально с маленькой буквы)

rails - это ruby gem. 25 Октября 2004 года был опубликован гем rails. Ruby gem - это практически то же самое, что и библиотека в любом другом языке. Разница в том, что если библиотеку большинства языков можно организовать абсолютно любым удобным образом и потом позаботиться только о том, чтобы методы этой библиотеки были доступны после ее подключения. Gem же имеет свой особенный формат, который определяет структуру файлов, подключение гема и управление его зависимостями. Это позволяет легко повторно использовать их из проекта в проект..

Итак, rails - это тоже гем. И у него также есть свои зависимости. Если после установки нового проекта посмотреть список гемов которые установлены, то мы увидим что установлено 54 гема.(Rails 4.2.1)


bundle
Using rake 10.4.2
Using i18n 0.7.0
Using json 1.8.3
Using minitest 5.7.0
Using thread_safe 0.3.5
Using tzinfo 1.2.2
Using activesupport 4.2.1
Using builder 3.2.2
Using erubis 2.7.0
Using mini_portile 0.6.2
Using nokogiri 1.6.6.2
Using rails-deprecated_sanitizer 1.0.3
Using rails-dom-testing 1.0.6
Using loofah 2.0.2
Using rails-html-sanitizer 1.0.2
Using actionview 4.2.1
Using rack 1.6.4
Using rack-test 0.6.3
Using actionpack 4.2.1
Using globalid 0.3.5
Using activejob 4.2.1
Using mime-types 2.6.1
Using mail 2.6.3
Using actionmailer 4.2.1
Using activemodel 4.2.1
Using arel 6.0.2
Using activerecord 4.2.1
Using debug_inspector 0.0.2
Using binding_of_caller 0.7.2
Using columnize 0.9.0
Using byebug 5.0.0
Using coffee-script-source 1.9.1.1
Using execjs 2.5.2
Using coffee-script 2.4.1
Using thor 0.19.1
Using railties 4.2.1
Using coffee-rails 4.1.0
Using multi_json 1.11.2
Using jbuilder 2.3.1
Using jquery-rails 4.0.4
Using bundler 1.10.3
Using sprockets 3.2.0
Using sprockets-rails 2.3.2
Using rails 4.2.1
Using rdoc 4.2.0
Using sass 3.4.16
Using tilt 1.4.1
Using sass-rails 5.0.3
Using sdoc 0.4.1
Using spring 1.3.6
Using sqlite3 1.3.10
Using turbolinks 2.5.3
Using uglifier 2.7.1
Using web-console 2.2.1
Bundle complete! 12 Gemfile dependencies, 54 gems now installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.

В следующих статьях я разберу все базовые гемы, которые устанавливаются вместе с rails и опишу в кратце, а если оно того стоит, то и подробно, все гемы которые устанавливаются вместе с rails.

До встречи

Комментарии