Что такое ruby on rails

Что такое ruby on rails

Rails —— это полноценный, многоуровневый фреймворк для построения веб-приложений, использующих базы данных , который основан на архитектуре Модель-Представление-Контроллер (Model-View-Controller, MVC).

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

Rails используют все — от стартапов и некоммерческих организаций до крупного бизнеса. Rails — это прежде всего инфраструктура, поэтому среда великолепно подходит для любого типа веб-приложений, будь это программы для организации совместной работы, поддержки сообществ, электронного бизнеса, управления содержанием, статистики, управления. Список можете продолжить сами. Примеры:

Basecamp: Управление проектами.
Rails начался с этого приложения 37signals.

Campfire: Групповой чат для бизнеса.
Pushing the limits of Ajax in Rails.

43things: Поставь себе цели в жизни и добейся их.

ODEO: Записывай и распространяй аудио.

Strongspace: Безопасное хранилище файлов.

Typo: Ваш блог на Rails.

Rails отлично работает со многими веб-серверами и СУБД. В качестве веб-сервера рекомендуется использовать Apache или nginx с модулем Phusion Passenger. Rails также можно разворачивать используя Unicorn, Thin, Mongrel или FastCGI. В качестве СУБД можно использовать MySQL, PostgreSQL, SQLite, Oracle, SQL Server, DB2 или Firebird. Использовать Rails можно на практически любой операционной системе, однако для развертывания мы рекомендуем системы семейства *nix.

Ruby on Rails был создан David Heinemeier Hansson в партнерстве с 37signals, расширен и усовершенствован усилиями команды разработчиков ядра Rails и сотнями open source разработчиков. Rails распространяется под лицензией MIT. Ruby распространяется под лицензией Ruby License.

«Rails», «Ruby on Rails» и логотип Rails являются зарегистрированными торговыми знаками David Heinemeier Hansson. Все права защищены.

Поддержка сайта — Evil Martians. Вопросы, предложения? Свяжитесь с нами.

Желая научиться создавать крутые сайты и веб-приложения и избрав в качестве инструмента для этого Ruby on Rails, начинающие программисты нередко оказываются настолько очарованы известной "магией" фреймворка, что даже не задумываются о том, что лежит в её основе. Наглядным примером подобного очарования являются случаи, когда новичок ожидает, что атрибут контроллера будет доступен в файле модели, не понимая, как эти компоненты взаимодействуют между собой.

Фреймворк Ruby on Rails написан на динамическом объектно-ориентированном языке Ruby. Каждая строчка кода, каждый элемент волшебства, который воспринимается новичком как нечто само собой разумеющееся, является результатом выполнения ранее написанного разработчиками фреймворка кода на Ruby.

Прежде чем продолжать чтение, убедитесь, что вы имеете хотя бы базовое представление о том, как работает Ruby: что такое методы, что такое аргументы методов, что такое объекты и классы. Если вы не уверены в том, что понимаете значение перечисленных терминов, рекомендую прочитать книгу Криса Пайна "Учись программировать"(она очень короткая и совсем не скучная), а так же ознакомиться со следующими материалами:

Конечно, не стоит обходить вниманием и интерактивные обучающие сервисы: чтобы попробовать собственными руками написать код на Ruby и увидеть, что получится, воспользуйтесь Try Ruby и Codecademy.

После того, как вы освоились с синтаксисом Ruby и оценили по достоинству его возможности, предлагаю рассмотреть простой пример, наглядно описывающий ситуацию, которая описана в начале статьи.

В контроллере у нас есть переменная экземпляра @translated_text , содержащая отправленный из формы текст. Начинающий программист предполагает, что магия Rails позволит ему использовать эту переменную в модели, но это не так. На самом деле, чтобы приведенный в качестве примера код модели работал, необходимо переписать его следующим образом:

Читайте также:  Родительский контроль на андроид телефон как включить

Почему же в модели нельзя использовать переменные экземпляра, которые принимают свои значения в контроллере и имеют символ @ в начале? Ответ прост: потому что переменные экземпляра контроллера не транслируются в модель. В контроллере задаются переменные, которые будут использованы во вьюхах этого контроллера, к модели они не имеют никакого отношения. Что нужно делать, чтобы не допускать подобных ошибок? Не полагаться на "магию" фреймворка и тщательно изучать документацию. В первую очередь необходимо понять, что Ruby on Rails — это не более, чем код, написанный на Ruby, и ведет он себя в соответствии с тем, что описано в его исходном коде. А исходный код Rails написан таким образом, что если в экшене show контроллера HomeController задать переменную @home , то она будет доступна для использования в файле app/views/show.html.erb .

Рассмотрим еще один пример, попроще.

Предположим, у нас есть модель Post :

Код из примера выглядит очень простым и понятным, написанным практически человеческим языком. Однако, это всего лишь строка кода на Ruby, а именно — метод has_many , который принимает несколько аргументов, в нашем примере он всего один, имя модели во множественном числе в виде символа.

Чтобы убедиться, что это действительно так, можно проследовать в официальную документацию API фреймворка: http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_many Здесь мы увидим, что помимо имени, метод has_many может принимать так же скоуп и опции, которые могут быть описаны в блоке.

Пример использования скоупа и дополнительных параметров(опций)

В приведенном примере мы видим скоуп -> < where(banned: false) >, и параметр class: ‘User’ которые указывают, что использоваться будут экземпляры модели User , имеющие значение false в атрибуте banned .

Если взглянуть в исходный код метода has_many , мы увидим, что это самый обыкновенный код на Ruby, который написан таким образом, чтобы воплощать необходимый нам функционал:

Таким же образом устроен весь Ruby on Rails и все гемы, написанные сообществом.

В Ruby-сообществе пользуется большой популярностью парадигма DRY, Don’t Repeat Yourself. Основываясь на ней, многие гемы используют другие гемы для того, чтобы осуществлять задуманный и воплощеный их авторами функционал, и Rails не является исключением. Введите в терминал команду:

В полученном ответе можно отыскать несколько строк:

Несложно понять, что команда позволяет увидеть, какие гемы использует в качестве опоры для реализации собственного функционала каждый гем, установленный в системе. Блок текста чуть выше показывает, что Rails основывается на 9 гемах, каждый из которых можно использовать отдельно от фреймворка. Каждый из этих гемов, в свою очередь, может использовать другие в своей основе, но все они написаны на обычном Ruby. Если в достаточной степени изучить этот язык, чтение исходного кода практически любого гема, фреймворка или скрипта не составит большого труда. А наилучшее понимание возможностей чужого кода приходит именно в процессе чтения и понимания этого самого кода.

Самым полезным и достоверным источником информации о том, как работает Ruby on Rails можно считать документацию фреймворка: http://apidock.com/rails/ Помимо полного описания всех возможностей конкретного элемента в комментариях так же можно найти множество полезной информации, в частности, примеры использования описываемого кода в различных вариациях.

Читайте также:  Лучшее зарядное устройство для акб автомобиля

Мы рассказываем, как стать более лучшим разработчиком, как поддерживать и эффективно применять свои навыки. Информация о вакансиях и акциях эксклюзивно для более чем 8000 подписчиков. Присоединяйся!

  • mkdev
  • Менторы
  • Специализации
  • Статьи
  • О проекте
  • Что такое менторство
  • Как проходит обучение
  • Цены
  • FAQ
  • Impressum
  • Аккаунт
  • Записаться
  • Войти
  • Соцсети

© Copyright 2014 — 2020 mkdev | Privacy Policy | Lang: Russian

Ruby on Rails
Тип фреймворк и каркас веб-приложений
Автор Ханссон, Давид Хейнемейер
Разработчик Ханссон, Давид Хейнемейер
Написана на Ruby [1]
Первый выпуск 13 декабря 2005
Последняя версия 6.0.2.1 (Декабрь 18, 2019)
Лицензия лицензия MIT [2]
Сайт rubyonrails.org​ (англ.)
Медиафайлы на Викискладе

Ruby on Rails (RoR) — фреймворк, написанный на языке программирования Ruby, реализует архитектурный шаблон Model-View-Controller для веб-приложений, а также обеспечивает их интеграцию с веб-сервером и сервером баз данных. Является открытым программным обеспечением и распространяется под лицензией MIT.

Создан Давидом Хейнемейером Ханссоном на основе его работы в компании 37signals над средством управления проектами Basecamp и выпущен в июле 2004 года. 23 декабря 2008 года команда проекта Merb объединилась с командой Rails с целью создания следующей версии Rails 3, которая объединит в себе лучшие черты обоих фреймворков.

Базируется на следующих принципах разработки приложений:

  • максимальное использование механизмов повторного использования, позволяющих минимизировать дублирование кода в приложениях (принцип Don’t repeat yourself);
  • по умолчанию используются соглашения по конфигурации, типичные для большинства приложений (принцип Convention over configuration) — явная спецификация конфигурации требуется только в нестандартных случаях.

Содержание

Архитектура [ править | править код ]

Основными компонентами приложений на Ruby on Rails являются модель (англ. model ), представление (англ. view ) и контроллер (англ. controller ). Ruby on Rails использует REST-стиль построения веб-приложений.

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

Для хранения объектов модели в реляционной СУБД по умолчанию в Rails 3 использована библиотека ActiveRecord. Конкурирующий аналог — DataMapper. Существуют плагины для работы с нереляционными базами данных, например Mongoid для работы с MongoDB.

Представление создаёт пользовательский интерфейс с использованием полученных от контроллера данных. Представление также передает запросы пользователя на манипуляцию данными в контроллер (как правило, представление не изменяет непосредственно модель).

В Ruby on Rails представление описывается при помощи шаблонов ERB — файлов HTML с дополнительными включениями фрагментов кода Ruby (Embedded Ruby, или ERb). Вывод, сгенерированный встроенным кодом Ruby, включается в текст шаблона, после чего получившаяся страница HTML возвращается пользователю. Кроме ERB возможно использовать ещё около 20 шаблонизаторов, в том числе Haml.

Контроллер в Rails — это набор логики, запускаемой после получения HTTP-запроса сервером. Контроллер отвечает за вызов методов модели и запускает формирование представления.

Соответствие интернет-адреса с действием контроллера (маршрут) задается в файле config/routes.rb .

Контроллером в Ruby on Rails является класс, наследованный от ActionController::Base для классических приложений и ActionController::API для API [3] . Открытые методы контроллера являются так называемыми действиями (англ. actions ). Действия часто соответствует отдельному представлению. Например, по запросу пользователя admin/index будет вызван метод index класса AdminController и затем использовано представление index.html.erb из каталога views/admin .

Читайте также:  1С обработка выбора в управляемой форме

Интеграция [ править | править код ]

Предпочтительным методом интеграции с веб-серверами является проксирование — использование веб-сервера в качестве прокси-сервера перед сервером приложения. Особняком стоят модули Phusion Passenger для интеграции с серверами Apache и nginx.

Ruby on Rails использует интерфейс Rack, что позволяет использовать менее распространённые механизмы (FCGI, CGI, SCGI). Ruby on Rails может работать с Apache, Lighttpd или любым другим веб-сервером, поддерживающим FastCGI. Для разработки и отладки используется веб-сервер Puma (ранее WEBrick, встроенный в Ruby, или Mongrel). В качестве сервера базы данных поддерживаются MySQL, PostgreSQL, Firebird, DB2, Oracle и Microsoft SQL Server. Также поддерживается встраиваемая база данных SQLite.

Для Windows существует дистрибутив Instant Rails с настроенной и готовой к работе сразу после установки рабочей средой для разработки Rails-приложений, которая включает в себя сервер Apache и СУБД MySQL, а также дистрибутив RubyInstaller, включающий последние версии Ruby и инструменты разработчика. Для платформ Windows, Linux, Mac OS X имеется комплексный установщик BitNami RubyStack [4] , включающий в себя все необходимое для разработки в среде Rails, включая Ruby, RubyGems, Ruby on Rails, MySQL, Apache, Mongrel и Subversion.

Помимо этого сайты BitNami.org и JumpBox.com [5] бесплатно предлагают образы VMware с готовой Linux-средой для развертывания RoR-приложений. Эти образы можно подключить к своему серверу виртуальных машин или развернуть в предлагаемой облачной среде.

Для разработки AJAX-приложений в RoR (до версии 5.1) по умолчанию использовался javascript-фреймворк jQuery, однако вместо него можно использовать и другие библиотеки. В ранних версиях Ruby on Rails (до 3.1), js-фреймворком по умолчанию был Prototype.

Подключаемые библиотеки [ править | править код ]

В качестве репозитория плагинов Ruby on Rails использует экосистему пакетов RubyGems, которые также называются «джемы» ( gem с англ. — «самоцвет»). Некоторые плагины со временем были включены в базовую поставку Rails, например Sass и CoffeeScript; другие же, хотя и не были включены в базовую поставку, являются стандартом де-факто для большинства разработчиков (например, средство модульного тестирования RSpec).

Начиная с 3-й версии Rails наблюдается тенденция вынесения части функциональных возможностей в отдельные «джемы», отчасти из-за их более быстрого развития, чем сам Rails, отчасти для облегчения фреймворка.

  • Devise (для аутентификации)
  • CanCanCan (для авторизации)
  • Kaminari, Will paginate, Pagy (для разделения записей, извлекаемых из базы данных, или элементов массива по страницам)
  • Faker (для случайной генерации тестовых наборов данных в веб-приложениях)
  • Friendly_id (позволяет создавать человекопонятные веб-адреса)
  • Active Admin (для создания панелей администрирования)
  • CommunityEngine[6] (для создания социальных сетей).

Средства разработки и тестирования [ править | править код ]

Для создания приложений на Ruby on Rails используются различные текстовые редакторы и IDE, в том числе:

  • JetBrainsRubyMine
  • Sublime Text
  • Visual Studio Code (с плагином для поддержки Ruby) [7]
  • Aptana Studio
  • CodeGear 3rdRail
  • Ruby in Steel (для Visual Studio) — версия 1.2 включает возможность визуального WYSIWYG-проектирования графического интерфейса, транслируя .erb-код в HTML и обратно.
  • Flux 1.2 для пользователей Mac OS имеет поддержку Rails.
  • Textmate
  • Emacs
  • Vim
  • Atom

Среди инструментов тестирования приложений, поддерживающих Ruby on Rails:

  • RSpec — DSL для написания юнит- и интеграционныхтестов;
  • Cucumber — инструмент для разработки с помощью BDD, позволяет писать тесты на обычном языке.
Ссылка на основную публикацию
Что можно достать из старого монитора
Ребята, мы вкладываем душу в AdMe.ru. Cпасибо за то,что открываете эту красоту. Спасибо за вдохновение и мурашки.Присоединяйтесь к нам в...
Что делать если экран компьютера уменьшился
В этом уроке я покажу, как уменьшить масштаб экрана на компьютере. Мы научимся изменять шрифт в Windows разными способами: через...
Что делать когда dns сервер не отвечает
Как настроить роутер, как настроить модем, как настроить оптический терминал. Настройка роутера по http://192.168.1.1 или http://192.168.0.1 DNS сервер не отвечает...
Что можно писать на javascript
Аспирант Нетологии Максим Пименов рассказывает про JavaScript — невероятно популярный язык программирования, который учит сайты реагировать на поведение посетителей. JavaScript...
Adblock detector