Если вы разрабатываете сайты, то наверняка слышали о Ruby on Rails (RoR). Но если вы дизайнер, разработчик интерфейсов или используете PHP без какого-либо фреймворка, то изучение Ruby on Rails может показаться вам трудным. В этой статье я расскажу вам о возможностях Ruby on Rails, постараюсь убедить вас, что нет ничего сложного в переходе на Рельсы, и вы с легкостью сможете освоить их без потери большого количества времени.
Конечно, понадобится время, чтобы узнать новые способы сделать то, что вы делали с помощью другого языка программирования, узнать некоторые новые методы и понятия. На короткое время, в связи с переходом на Rails, ваша производительность снизится. Тем не менее, я уверен, что многие веб-разработчики станут более продуктивными, будут создавать более совершенные сайты и получать больше удовольствия от программирования, используя Ruby on Rails.
Ruby on Rails – это «full-stack» фреймворк, который охватывает разработку интерфейса и программной части проекта. Это делает его исключительно мощным инструментом в руках веб-разработчиков. Даже если вы в первую очередь дизайнер интерфейсов или back-end разработчик, вы можете использовать Ruby on Rails достаточно эффективно. Первые для клиентской части (HTML, CSS, JavaScript), вторые – для серверной (Ruby, Rails, frameworks). Вам нет необходимости изучать обе части, вы можете сосредоточиться на какой-то одной.
Если вы дизайнер или разработчик интерфейсов, вы можете узнать, как использовать Ruby on Rails для создания шаблонов и написания Ajax кода. Это сделает вас более выгодным партнером для разработчиков, так как вы сможете предоставлять интегрированные в Ruby on Rails макеты, а не голый HTML и CSS код.
Поэтому, при приближении к изучению Ruby on Rails вы должны знать, какие проекты можно реализовать с помощью данного фреймворка и языка Ruby.
Ruby on Rails лежит в основе таких веб-приложений и сайтов, как Basecamp, Blinksale, Revolution Health, YellowPages.com и, конечно же, Twitter. Энтузиазм разработки на Rails распространяется во многих крупнейших интернет-компаниях. Yahoo, eBay, Amazon, AOL – все они имеют проекты на RoR, а компания ThoughtWorks занимается разработкой корпоративных приложений в среде Rails.
Одной из основных причин повышенной производительности Ruby on Rails является то, что он позволяет создавать новые приложения без написания большого количества кода и хаков. Проще говоря, сочетание языка (Ruby) с фреймворком (Rails) означает, что вы можете делать больше с меньшим количеством кода. Небольшое количество структурированного кода позволяет относительно безболезненно вносить изменения и экспериментировать.
Конечно, изучение нового инструмента разработки требует времени. Однако, если вам нужно создать всего один проект, это не оправдано. Но если вы планируете создание сайтов в течение некоторого времени и они будут не реализуемы стандартными средствами (CMS), то имеет смысл инвестировать свое время в изучение Ruby on Rails, так как это окупится в долгосрочной перспективе.
Чтобы понять, что можно сделать больше с меньшими усилиями с использованием Ruby on Rails, давайте начнем с беглого взгляда на Ruby.
Ruby – это современный, объектно-ориентированный язык. В любой программе на Ruby все является объектом. Ruby также является динамическим языком, что означает следующее:
Ruby является удивительно «чистым» языком. Его легко читать, на нем легко писать, но это не все его преимущества. Ruby можно легко расширить с помощью фреймворка Rails, который способен его превратить в, своего рода, специальный язык для создания веб-приложений.
Хотя Ruby (язык) и Rails (framework) – разные вещи, они во многом дополняют и зависят друг от друга. Все RoR приложения написаны на Ruby и характер Ruby имеет большое влияние на Rails-приложения. Есть фреймворки, такие, как CakePHP, которые многое заимствуют из Rails. Но мощь Ruby on Rails делает приложения более чистыми и гибкими, чем многие другие фреймворки. Если вы собираетесь изучать Ruby, что не является сложным, то получите значительный выигрыш в будущем.
Многие веб-сайты построены без каких-либо инфраструктур для написания приложений: просто написан код, который берется из различных мест и используется там, где нужен. Это нормально для небольших сайтов, но в масштабных проектах все может выйти из-под контроля, в результате чего будет куча грязного кода, который трудно будет разобрать и поддерживать.
При использовании фреймворков, таких, как Ruby on Rails, большинство вопросов о том, как структурировать код, решено за вас. Ттакже в вашем распоряжении имеется мощный набор библиотек.
Другой важной характеристикой Rails является то, что он организует вокруг каждого приложения структуру модель-вид-контроллер (MVC). MVC предоставляет весь код в виде структуры, которая очень помогает при работе над несколькими проектами или при привлечении кого-то другого для работы над сайтом. Он также предоставляет отдельные файлы с кодом интерфейса, которые могут быть разделены между front-end и back-end разработчиками.
Ruby on Rails предназначен для создания приложений, взаимодействующих с базами данных. Для этого в ядре Rails предусмотрена библиотека Active Record, которая реализует то, что называется объектно-реляционным отображением (ORM). С ORM вы можете работать с объектами, предоставляющими данные, а библиотека Active Record позаботится о взаимодействии с базой данных.
Это может показаться немного непонятным, поэтому давайте разберем на примерах. Даже не зная Ruby или другой объектно-ориентированный язык, уверен, вы сможете разобрать следующие примеры Ruby on Rails кода.
Предположим, у вас есть книжный интернет-магазин, и вы хотите добавить новую книгу. Вы могли бы написать:
Вы можете задать класс «книге», который также будет являться объектом, указав атрибут интуитивным способом «newbook.»:
На данный момент у вас есть объект в памяти. Все это занимает:
Ваша новая книга была записана в базу данных. Active Record генерирует SQL-запросы к базе данных для записи новой информации. Вы можете добавить проверку всех полей и генерировать сообщения об ошибке с помощью всего лишь нескольких строк кода.
Теперь вы хотите найти эту книгу из миллионов книг в базе данных. Просто напишите:
И у вас есть объект, который вы назвали «angle_of_repose». Он имеет всю информацию из соответствующей записи в базе данных.
В RoR есть богатый набор программных объектов, которые соответствуют таблицам базы данных. Эти объекты составляют «модель» в системе модель-вид-контроллер.
Код взаимодействует с модельными объектами, а Active Record создает SQL-запросы. Вам не нужно писать их самостоятельно. И, поскольку, ни один фрагмент кода не связывается напрямую с базой данных, вы можете переключаться между ними путем простого изменения параметров конфигурации.
Для создания веб-страниц, Rails предоставляет систему шаблонов, что делает его простым в использовании, позволяет вставлять общие компоненты без повторения их кода, информацию из базы данных, а также отображать и обрабатывать формы. Эти шаблоны представляют собой «вид» в системе модель-вид-контроллер.
Если вы разработчик интерфейсов, на этой части Rails вы должны сосредоточить свое внимание. Вы можете считать, что в ваши файлы будут переданы переменные, которые содержат все сведения, необходимые для отображения. Подобно тому, как PHP-файлы сочетают в себе PHP и HTML код, типичный вид Rails представляет собой смесь Ruby и HTML. Продолжим объяснение на примере нашего интернет-магазина. Например, вот фрагмент кода, который отображает название и автора книги:
Код Ruby отмечен <% = и %>; остальное HTML.
Rails имеет встроенную поддержку для Prototype и Scriptaculous JavaScript библиотек, а также объект, называемый Ruby JavaScript (RJS), для создания Ajax-интерфейсов. Вы можете написать почти все, что в Ruby, в том и числе код, который выполняется на стороне клиента, как JavaScript.
«Контроллер» является частью кода Ruby. Его основная работа заключается во взаимодействии с моделью для подготовки данных, необходимых виду». Любая информация собрана контроллером в набор переменных перед вызовом вида. Контроллер также отвечает на запросы Ajax после загрузки страницы. Контроллеры обеспечивают множество других функций – от аутентификации пользователей до обработки ошибок.
Rails имеет свои недостатки. Ruby работает медленнее, чем большинство других языков. Это, вероятно, изменится с выходом новых версий, но на данный момент этот недостаток критичен для тех приложений, которым важно время обработки. В действительности, это не проблема для большинства веб-сайтов.
Также есть проблема с размещением Rails-приложений. Из-за размера кода фреймворка Rails, он должен храниться в памяти все время и загружен в ответ на запрос. Вам необходимо 100-200 Мб встроенной памяти для размещения приложений даже с низким трафиком. Для сравнения, приложения на PHP вы можете разместить сколь угодно, потому что они не занимают память, когда недоступны.
Из-за этих требований к серверу, найти виртуальный хостинг для Rails-приложений, как правило, весьма проблематично. VPS (Virtual Private Server) – самый лучший выбор. Настройка сервера сложнее, чем для PHP. Но сейчас есть много Rails-ориентированных хостинг-компаний, которые предоставляют готовые решения.
Другим результатом этих требования к серверу является то, что хостинг для Rails, как правило, дороже, чем для других платформ и языков.
Изучение Rails может быть трудным для новичка и потребует несколько месяцев, чтобы разобраться в синтаксисе и ООП. Но уже с начала обучения вы сможете создать простой сайт. В процессе работы над ним вы получите новые навыки и знания, которые вам нужны.
Люди приходят в веб-разработку различными способами и из разных слоев общества, но большинство из них относится к одной из двух категорий:
Ruby on Rails был построен программистами для программистов. Так что если вы пришли к обучению имея за спиной опыт разработки программного обеспечения, вы будете чувствовать себя в Rails как рыба в воде.
Как только вы изучите Ruby on Rails, он станет вам верным другом. С помощью этого мощного набора инструментов в ваших руках вы будете работать более продуктивно, чем когда-либо.
Будучи в состоянии сделать больше с меньшими затратами, вы будете создавать лучшие проекты и получать больше удовольствия от процесса. Приятного обучения!
Конечно, понадобится время, чтобы узнать новые способы сделать то, что вы делали с помощью другого языка программирования, узнать некоторые новые методы и понятия. На короткое время, в связи с переходом на Rails, ваша производительность снизится. Тем не менее, я уверен, что многие веб-разработчики станут более продуктивными, будут создавать более совершенные сайты и получать больше удовольствия от программирования, используя Ruby on Rails.
Работа найдется для каждого
Ruby on Rails – это «full-stack» фреймворк, который охватывает разработку интерфейса и программной части проекта. Это делает его исключительно мощным инструментом в руках веб-разработчиков. Даже если вы в первую очередь дизайнер интерфейсов или back-end разработчик, вы можете использовать Ruby on Rails достаточно эффективно. Первые для клиентской части (HTML, CSS, JavaScript), вторые – для серверной (Ruby, Rails, frameworks). Вам нет необходимости изучать обе части, вы можете сосредоточиться на какой-то одной.
Если вы дизайнер или разработчик интерфейсов, вы можете узнать, как использовать Ruby on Rails для создания шаблонов и написания Ajax кода. Это сделает вас более выгодным партнером для разработчиков, так как вы сможете предоставлять интегрированные в Ruby on Rails макеты, а не голый HTML и CSS код.
Поэтому, при приближении к изучению Ruby on Rails вы должны знать, какие проекты можно реализовать с помощью данного фреймворка и языка Ruby.
Золотая середина
Ruby on Rails лежит в основе таких веб-приложений и сайтов, как Basecamp, Blinksale, Revolution Health, YellowPages.com и, конечно же, Twitter. Энтузиазм разработки на Rails распространяется во многих крупнейших интернет-компаниях. Yahoo, eBay, Amazon, AOL – все они имеют проекты на RoR, а компания ThoughtWorks занимается разработкой корпоративных приложений в среде Rails.
Повышенная производительность
Одной из основных причин повышенной производительности Ruby on Rails является то, что он позволяет создавать новые приложения без написания большого количества кода и хаков. Проще говоря, сочетание языка (Ruby) с фреймворком (Rails) означает, что вы можете делать больше с меньшим количеством кода. Небольшое количество структурированного кода позволяет относительно безболезненно вносить изменения и экспериментировать.
Конечно, изучение нового инструмента разработки требует времени. Однако, если вам нужно создать всего один проект, это не оправдано. Но если вы планируете создание сайтов в течение некоторого времени и они будут не реализуемы стандартными средствами (CMS), то имеет смысл инвестировать свое время в изучение Ruby on Rails, так как это окупится в долгосрочной перспективе.
Чтобы понять, что можно сделать больше с меньшими усилиями с использованием Ruby on Rails, давайте начнем с беглого взгляда на Ruby.
Знакомьтесь – Ruby
Ruby – это современный, объектно-ориентированный язык. В любой программе на Ruby все является объектом. Ruby также является динамическим языком, что означает следующее:
- Ruby интерпретируется динамически (например, как и PHP), поэтому нет никакой компиляции (как с C или Java). Это ускоряет разработку.
- В Ruby все переменные динамического типа, т.е. информация в них автоматически перезаписывается и вам нет необходимости определять и настраивать переменные, как во многих других языках.
- Программа на Ruby может генерировать код динамически, изменив себя во время выполнения.
Ruby является удивительно «чистым» языком. Его легко читать, на нем легко писать, но это не все его преимущества. Ruby можно легко расширить с помощью фреймворка Rails, который способен его превратить в, своего рода, специальный язык для создания веб-приложений.
Хотя Ruby (язык) и Rails (framework) – разные вещи, они во многом дополняют и зависят друг от друга. Все RoR приложения написаны на Ruby и характер Ruby имеет большое влияние на Rails-приложения. Есть фреймворки, такие, как CakePHP, которые многое заимствуют из Rails. Но мощь Ruby on Rails делает приложения более чистыми и гибкими, чем многие другие фреймворки. Если вы собираетесь изучать Ruby, что не является сложным, то получите значительный выигрыш в будущем.
Rails подход
Многие веб-сайты построены без каких-либо инфраструктур для написания приложений: просто написан код, который берется из различных мест и используется там, где нужен. Это нормально для небольших сайтов, но в масштабных проектах все может выйти из-под контроля, в результате чего будет куча грязного кода, который трудно будет разобрать и поддерживать.
При использовании фреймворков, таких, как Ruby on Rails, большинство вопросов о том, как структурировать код, решено за вас. Ттакже в вашем распоряжении имеется мощный набор библиотек.
Другой важной характеристикой Rails является то, что он организует вокруг каждого приложения структуру модель-вид-контроллер (MVC). MVC предоставляет весь код в виде структуры, которая очень помогает при работе над несколькими проектами или при привлечении кого-то другого для работы над сайтом. Он также предоставляет отдельные файлы с кодом интерфейса, которые могут быть разделены между front-end и back-end разработчиками.
Базы данных и объекты
Ruby on Rails предназначен для создания приложений, взаимодействующих с базами данных. Для этого в ядре Rails предусмотрена библиотека Active Record, которая реализует то, что называется объектно-реляционным отображением (ORM). С ORM вы можете работать с объектами, предоставляющими данные, а библиотека Active Record позаботится о взаимодействии с базой данных.
Это может показаться немного непонятным, поэтому давайте разберем на примерах. Даже не зная Ruby или другой объектно-ориентированный язык, уверен, вы сможете разобрать следующие примеры Ruby on Rails кода.
Предположим, у вас есть книжный интернет-магазин, и вы хотите добавить новую книгу. Вы могли бы написать:
newbook = Book.new
Вы можете задать класс «книге», который также будет являться объектом, указав атрибут интуитивным способом «newbook.»:
newbook.title = "Программирование на языке Ruby"
newbook.author = "Хэл Фултон"
На данный момент у вас есть объект в памяти. Все это занимает:
newbook.save
Ваша новая книга была записана в базу данных. Active Record генерирует SQL-запросы к базе данных для записи новой информации. Вы можете добавить проверку всех полей и генерировать сообщения об ошибке с помощью всего лишь нескольких строк кода.
Теперь вы хотите найти эту книгу из миллионов книг в базе данных. Просто напишите:
angle_of_repose = Book.find_by_title "Программирование на языке Ruby"
И у вас есть объект, который вы назвали «angle_of_repose». Он имеет всю информацию из соответствующей записи в базе данных.
В RoR есть богатый набор программных объектов, которые соответствуют таблицам базы данных. Эти объекты составляют «модель» в системе модель-вид-контроллер.
Код взаимодействует с модельными объектами, а Active Record создает SQL-запросы. Вам не нужно писать их самостоятельно. И, поскольку, ни один фрагмент кода не связывается напрямую с базой данных, вы можете переключаться между ними путем простого изменения параметров конфигурации.
Виды и контроллеры
Для создания веб-страниц, Rails предоставляет систему шаблонов, что делает его простым в использовании, позволяет вставлять общие компоненты без повторения их кода, информацию из базы данных, а также отображать и обрабатывать формы. Эти шаблоны представляют собой «вид» в системе модель-вид-контроллер.
Если вы разработчик интерфейсов, на этой части Rails вы должны сосредоточить свое внимание. Вы можете считать, что в ваши файлы будут переданы переменные, которые содержат все сведения, необходимые для отображения. Подобно тому, как PHP-файлы сочетают в себе PHP и HTML код, типичный вид Rails представляет собой смесь Ruby и HTML. Продолжим объяснение на примере нашего интернет-магазина. Например, вот фрагмент кода, который отображает название и автора книги:
<%= book.title %>
<%= book.author %>
Код Ruby отмечен <% = и %>; остальное HTML.
Rails имеет встроенную поддержку для Prototype и Scriptaculous JavaScript библиотек, а также объект, называемый Ruby JavaScript (RJS), для создания Ajax-интерфейсов. Вы можете написать почти все, что в Ruby, в том и числе код, который выполняется на стороне клиента, как JavaScript.
«Контроллер» является частью кода Ruby. Его основная работа заключается во взаимодействии с моделью для подготовки данных, необходимых виду». Любая информация собрана контроллером в набор переменных перед вызовом вида. Контроллер также отвечает на запросы Ajax после загрузки страницы. Контроллеры обеспечивают множество других функций – от аутентификации пользователей до обработки ошибок.
Ничто не идеально
Rails имеет свои недостатки. Ruby работает медленнее, чем большинство других языков. Это, вероятно, изменится с выходом новых версий, но на данный момент этот недостаток критичен для тех приложений, которым важно время обработки. В действительности, это не проблема для большинства веб-сайтов.
Также есть проблема с размещением Rails-приложений. Из-за размера кода фреймворка Rails, он должен храниться в памяти все время и загружен в ответ на запрос. Вам необходимо 100-200 Мб встроенной памяти для размещения приложений даже с низким трафиком. Для сравнения, приложения на PHP вы можете разместить сколь угодно, потому что они не занимают память, когда недоступны.
Из-за этих требований к серверу, найти виртуальный хостинг для Rails-приложений, как правило, весьма проблематично. VPS (Virtual Private Server) – самый лучший выбор. Настройка сервера сложнее, чем для PHP. Но сейчас есть много Rails-ориентированных хостинг-компаний, которые предоставляют готовые решения.
Другим результатом этих требования к серверу является то, что хостинг для Rails, как правило, дороже, чем для других платформ и языков.
Обучение
Изучение Rails может быть трудным для новичка и потребует несколько месяцев, чтобы разобраться в синтаксисе и ООП. Но уже с начала обучения вы сможете создать простой сайт. В процессе работы над ним вы получите новые навыки и знания, которые вам нужны.
Люди приходят в веб-разработку различными способами и из разных слоев общества, но большинство из них относится к одной из двух категорий:
- Люди, у которых есть идея для сайта, но не хватает знаний для ее реализации.
- Программисты, которые видят веб-сайты просто как еще один вид программы.
Ruby on Rails был построен программистами для программистов. Так что если вы пришли к обучению имея за спиной опыт разработки программного обеспечения, вы будете чувствовать себя в Rails как рыба в воде.
Заключение
Как только вы изучите Ruby on Rails, он станет вам верным другом. С помощью этого мощного набора инструментов в ваших руках вы будете работать более продуктивно, чем когда-либо.
Будучи в состоянии сделать больше с меньшими затратами, вы будете создавать лучшие проекты и получать больше удовольствия от процесса. Приятного обучения!