Ruby rails что такое
Первое знакомство с Ruby on Rails
Ruby on Rails (в дальнейшем просто рельсы) это веб фреймворк, написанный на языке Ruby.
На хабре есть несколько статей о языке, думаю их будет полезно почитать, если возникнут затруднения – читайте википедию, лучшую книгу о языке – Programming Ruby, лучшую книгу о рельсах – Agile Development with Rails, и задавайте вопросы.
Начнем знакомство с установки Ruby и Rails.
Пользователям Windows нужно скачать и установить One-click Ruby installer.
Пользователям Linux (Ubuntu) установить Ruby еще проще:
Убедимся что Ruby работает
Все что вам нужно для начала это текствый редактор с подсветкой синтаксиса Ruby и умение выполнять команды из консоли.
Для любителей IDE могу посоветовать Aptana, я пишу код в ней (мне просто нравится Eclipse :).
Все примеры я буду приводить для консоли, что делать в Aptana должно быть понятно, я могу написать об этом отдельно.
Теперь все готово чтобы начать новый проект.
Проект на рельсах начинается с создания скелета проекта:
будет создана папка example и скелет проекта в ней (не забудьте заменить путь на свой). Посмотрим что внутри.
Самое время запустить веб-сервер и убедиться что приложение работает. Идем в папку с приложением и запускаем веб-сервер, поставляемый с рельсами:
Открываем эту линку в своем любимом браузере и наблюдаем страничку «Welcome aboard» – значит все хорошо и пришло время написать простенькое приложение.
Какое приложение стоит написать?
Дело в том, что я умею писать текст с человеческой разметкой (Wiki, Markdown, Textile), но хабр поддерживает только html для разметки текста, а мне не удобно писать html когда я хочу просто написать текст.
Поэтому приложение будет форматировать текст в html!
Изначально оно будет очень простым, потребуется всего две странички: на первой можно будет ввести текст, а на второй посмотреть его в отформатированном виде и скопировать получившийся html (чтобы запостить на хабр :).
Начинаем писать код.
Для ленивых я выложил исходный код приложения, но все же писать код самому интереснее.
Думаю ни для кого не секрет что паттерн MVC стал де-факто стандартом архитектуры веб приложений. Рельсы не исключение, приложение состоит из моделей, вьюшек и контроллеров.
В результате рельсы сгенерировали несколько файлов из которых сейчас интересны следующие:
Как же увидеть сгенерированные страницы в браузере?
Почему такие урлы?
За внешний вид урлов в рельсах отвечает модуль Routing, настроить его можно в файле
Сейчас я не буду вдаваться в детали роутинга, об этом можно написать отдельную статью. Сейчас просто добавьте эти две строчки и я обьясню их назначение.
connect и preview это вызовы методов. Первый аргумент это путь, в нашем случае путь пустой, тоесть это правила для корня сайта. Второй аргумент это хеш, который содержит какой метод у какого контроллера нужно вызвать и при каких условиях. Тоесть если приходит HTTP GET для корня сайта, то будет вызван метод input, а если HTTP POST, то preview.
Чем вызов connect отличается от вызова preview?
Connect это метод, который добавляет правило для роутера, а вот метода preview не существует.
Это обычное дело для Ruby, в случае когда метода не существует вызывается method_missing в котором можно делать полезные вещи. В нашем случае происходит следующее:
Теперь нужно удалить или переименовать public/index.html чтобы вместо этой сранички вызывался метод input и проверить что он действительно вызывается.
Настала пора вьюшкам показать что-то более полезное.
Сначала нужно решить как форматировать введенный текст. Эту статью я форматирую как markdown, а для разнообразия решил добавить textile.
Для поддержки textile и markdown потребуется установить RedCloth и Maruku.
Теперь нужно написать код, который будет форматировать текст. К сожалению я не могу разместить код в статье, потому что хабр его режет, так что лучше открыть formatting_controller.rb в другом окне и переключаться по мере чтения. Что тут к чему.
Осталось добавить выбор типа форматирования в input.rhtml :
Страничка разбита на три блока:
Вот и всё на сегодня, первая часть закончена.
Не судите строго, я очень давно не писал на русском, все больше на Ruby 🙂
Желающие посмотреть как выглядит текст размеченный markdown могут взглянуть на исходник статьи.
Что может быть дальше?
Ruby on Rails шаг за шагом. #1 Теория
Ненадолго отставив серию статей о ЯП Ruby в сторону (1, 2, 3, 4, 5, 6, 7, 8, 9, 10), решил презентовать вам новый цикл о фрэймворке Rails. Набравшись некоторого опыта в «обучении» попробую вывести эту серию на уровень качества и продуманности несколько выше, чем прежде.
Целью первой части уроков по Ruby on Rails будет создание некоторого многопользовательского блога (аля Хабр). Также хочется отметить, что для этой первой части желательно иметь познание о Руби хотя бы на уровне трех-четырех капель. Хочется поскорей приступить к кодингу, но начинать все равно придется с теории.
RoR – базирующийся на Руби фрэймворк
ЯП Руби – простой и мощный, возможность мета-программинга, блоков, итераторов, а также обработки исключений делает язык замечательной основой для фрэймворка. Собственно так и посчитал Дэвид Хэйнемеер Ханссон, создатель RoR, и в июле 2004 года фрэймворк вышел на свет.
Увидеть, как помогает мета-программирование Руби, можно увидеть в ORM компоненте RoR Active Record. Основываясь на имени класса, RoR считывает схему (schema) и налету создает объекты класса на базе таблицы БД. Можно перейти к следующему аспекту.
RoR реализует MVC
Active Record
Action View
Action Controller
Три среды
Эпилог
Да, да, и тут эпилог — без него никуда 😉 Сегодня мы с вами узнали о том, что такое MVC, как его реализуют Rails, узнали роль компонентов фрэймворка, узнали, как они сообщаются между собой. Взглянули даже на разные среды, которые предоставляют нам Rails. Если все понятненько, то можно начинать обустраивать рабочее место! Комментарии страстно желаемы 😉
PS: Этот номер написан по мотивам книги Building Dynamic Web 2.0 Websites with Ruby on Rails. Однако с литературой по Rails стоит быть максимально осторожным, поскольку фрэймворк развивается неуловимыми темпами, и почти все книги (даже 2008 г. выпуска, в том числе и эта) основана на старых версиях Rails (1.2.x)
Что такое Ruby on Rails?
Russian (Pусский) translation by Anton L (you can also view the original English article)
Фреймворк веб-разработки для пуристов
В 1995 году, вышла версия Ruby 0.95 от Yukihiro Matsumoto, Ruby позиционирует себя, как чистый, объектно-ориентированный (OO), язык программирования общего назначения:
Я был фанатом языков и OO 15 лет, я всегда хотел работать с подлинным объектно-ориентированным, легким в использовании, скриптовым языком. Я долго искал, но так и не смог найти. Так что я решил создать свой собственный. — Y. Matsumoto
Затем в 2004, David Heinemeier Hansson выпустил первую версию Ruby on Rails фреймворка для создания веб-приложений, который он использовал, чтобы запустить приложение Basecamp, для организации работы своей команды. Затем, в 2005 году, было решено сделать Ruby on Rails доступным для всех желающих и распространять его, как фреймворк с открытым исходным кодом, после чего Apple выпустил его вместе с OS X Leopard в 2007.
Rails используется многими веб-приложениями, с которыми вы скорее всего уже знакомы: GitHub, Shopify, Airbnb, Twitch, SoundCloud, Hulu, Zendesk, Square и Highrise. Однако, фреймворк критикуют за ограниченную масштабируемость, особенно заметно в случае с Twitter, которому пришлось перенести большинство своих сервисов на другие платформы. Связанно это с тем, что Twitter обладает высоким потоком трафика и в следствии чего испытывает сложности с масштабируемостью.
В этом туториале я отвечу на вопрос «Что такое Ruby on Rails?» и познакомлю вас с основами программирования используя данный фреймворк, чтобы помочь вам начать экспериментировать на нём.
Прежде чем начать, пожалуйста помните, что я принимаю участие в общении в комментариях ниже. Если у вас возник вопрос или тема, которую вы хотели бы предложить, не стесняйтесь написать комментарий или можете связаться со мной на Twitter @reifman.
Что такое Ruby on Rails?
Ruby on Rails популярный, объектно-ориентированный, фреймворк для веб-разработки, с отрытым исходным кодом используемый множеством программистов для создания приложений. Также он основан на принципах модель-представление-контроллер (model view controller MVC).
Оптимизация для приятного программирования с соглашениями вместо конфигурации, так мы работаем.
Контроллер обрабатывает запросы в основном от сервера к пользователю, забирая данные из модели и возвращая их пользователю посредством файлов отвечающих за представление.
Представление по сути своей является программируемыми HTML файлами, которые отображают страницу используя динамичные данные.
Rails соглашение призывает разработчиков следовать принципам RESTful роутинга. Экшены контроллера как правило new, create, update, destroy, show, index и так далее. Позволяет пользователям и системе взаимодействовать с различным функционалом.
В соответствии, функции MVC Rails, называют Action Pack, то есть ActionController, ActionView и ActiveRecord предназначенные для взаимодействия с базой данных.
Создатель Rails, Hanson составил набор принципов на которых основывается фреймворк, под названием доктрина Ruby on Rails.
Доктрина Ruby on Rails
Доктрина Rails состоит из восьми постулатов:
Главным достижением Rails было объединение и взращивание сильного племени, также как и набор еретических мыслей о природе программирования и программистах. — David Heinemeier Hansson
Ниже основные участники внёсшие значительный вклад в Rails (основатель Hansson в верхнем левом углу):
И они являются представителями уютного, приветливого сообщества:
Вероятно вы хотите узнать больше, вот как вам стоит начать.
Начинаем изучение Ruby on Rails
Rails обладает набором потрясающей документации. Вот как выглядит глава с введением:
Этот туториал познакомит вас с общими сведениями, процессом установки и первыми шагами программирования с Rails фреймворком.
Устанавливаем Ruby on Rails
На Mac Ruby уже установлен. Пользователям Windows стоит ознакомиться с RailsInstaller. Для полноценной установки Rails на OS X, туториал рекомендует Tokaido. В качестве альтернативы, Daniel Kehoe предлагает избегать установщиков в один клик и предоставляет детальную инструкцию по установки для Mac OS X El Captain.
Опытные Rails разработчики также сообщают, что это делает разработку веб-приложений более интересной. — Rails туториал
Однако, я давно не запускал Rails, и повторная установка на моей последней модели Mac с El Captain оказалось довольно времязатратным занятием.
Проверяем установленный Ruby
На OS X, Ruby уже установлен:
Устанавливаем фреймворк Rails
Создание вашего приложения и экземпляра фреймворка
Затем я создал новое приложение под названием blog:
Вам стоит исследовать директорию веб-фреймворка Rails, чтобы ознакомиться со структурой приложения:
Вот изображение из вводной главы туториала, показывающие как Rails полагается на принципы соглашений вместо конфигураций:
Запускаем сервер
Наконец, вы можете запустить сервер с помощью командной строки:
Открываем наше приложение
В браузере перейдите по адресу http://localhost:3000 и вы должны увидеть стандартную главную страницу Rails приложения:
Должен признаться, хотелось бы, чтобы это было немного понятнее. Тем не менее, существуют отличные источники информации созданные участниками сообщества, призванные вам помочь.
Погружаемся глубже
Вот пример бесплатного GoRails скринкаста, освящающий основные моменты архитектуры приложения, директорию, которую мы упоминали ранее:
И Rails Guide ознакомит вас, шаг за шагом, с вопросами для новичков:
Помимо прочего, вы можете найти разнообразные текстовые туториалы и скринкасты, которые помогут вам разобраться.
В заключение
Если вас заинтриговало качество фреймворка Ruby on Rails и вовлечённое сообщество, надеюсь вы находите это вступление хорошей стартовой точкой. Возможно вы даже прошли процессы установки выше.
Я с радостью вспоминаю то время когда я работал с Rails, но также я испытывал некоторые турдности, особенно касательно хостинга и расширения базового функционала — хостинг для Rails приложений более дорогой. Мне нравится Yii, вы можете прочитать статью об этом Envato Tuts+ Yii2 Programming Series. И с появлением PHP 7, будущее PHP фреймворков кажется быстрым и ярким.
Если у вас есть вопросы, пожалуйста напишите их ниже. Или свяжитесь со мной на Twitter @reifman. Пожалуйста ознакомьтесь с моей страницей инструктора на Envato Tuts+, где вы найдёте другие туториалы, написанные мной, к примеру использование социальных сетей, чтобы найти свидетеля, посвященный API Instagram и Twitter.
Чем хорош Ruby on Rails и как он ускоряет разработку
Этот пост — перевод статьи программиста Кшиштофа Копидловски, посвященной разбору преимуществ Ruby on Rails. Материал будет интересен в первую очередь начинающим программистам и уж затем — профессионалам.
Ruby on Rails поможет сэкономить время, которое вы обычно тратите на разработку. Просто потому, что при использовании этого фреймворка кода будет меньше, а функциональность останется прежней.
Напоминаем: для всех читателей «Хабра» — скидка 10 000 рублей при записи на любой курс Skillbox по промокоду «Хабр».
От Java к Ruby
Для меня работа с Ruby — реальная экономия времени. Я могу сконцентрироваться на методах и логике, а не возиться с большим объемом кода строка за строкой. Раньше я думал, что Java — геймченджер, но после знакомства с Ruby on Rails я был впечатлен еще больше.
Но что, если я скажу вам, что можно обойтись и несколькими десятками строк?
Это Ruby — объектно-ориентированный, динамический, рефлективный, интерпретируемый высокоуровневый язык программирования. Он обладает независимой от операционной системы реализацией многопоточности, сильной динамической типизацией, сборщиком мусора и многими другими возможностями. На нем написано множество веб-приложений, среди которых GitHub и Twitter.
Ruby позволяет сократить объем кода
Наверное, вы спрашиваете себя, как вообще возможно уменьшить количество кода до нескольких десятков строк с сохранением логики, указанной выше. Это действительно возможно, причем мы пока не говорим о фреймворках, речь о чистом языке.
Например, если у вас есть массив и вы хотите увеличить все элементы на 2, а затем вернуть их в обратном порядке в Java, код будет похож на этот (с использованием интерфейса List):
То же самое на Ruby будет выглядеть так:
array = Array.new(5,2)
array.map < |x| x + 2 >.reverse
Разница налицо. И вам не нужно импортировать классы.
Динамическая типизация
После того как мы убедились в том, что строк кода может быть действительно не слишком много, можно задуматься о том, что в примере выше не задан тип переменной. Это действительно так — дело в том, что в Ruby все переменные динамически типизированы.
Если вы пишете метод, который принимает два параметра, вам не нужно указывать их типы, вместо этого можно просто сосредоточиться на логике. Результат: меньше кода, при этом более качественного и чистого.
В Ruby также есть множество собственных методов, которые позволяют ускорить кодинг. При написании программ я чаще всего использую преобразование Hash в Array, а затем в JSON. В Ruby я могу выполнить его всего одной строкой!
On Rails
Наиболее популярный фреймворк для Ruby — Rails. Он обеспечивает примерно такую же функциональность для языка, как Spring для Java. Я хотел бы поделиться некоторыми своими находками, которые могут вам пригодиться.
Все endpoints в одном месте
Кроме того, вы можете разделить ваши endpoints на группы. К примеру, когда у вас есть модель User, вы можете установить пути для всех ее членов таким образом, чтобы каждый endpoint автоматически получал свой идентификатор.
Вам не придется использовать разные параметры для тех же endpoints. В Rails, по умолчанию, вы можете передавать любые параметры в конечную точку и просто проводить валидацию для тех из них, которые вы хотели бы использовать в контроллере.
def user_params
params.require(:user).permit(:name, :surname, :birth_date, :avatar)
end
И нет, база данных, которую вы создали и перенесли на другое устройство, не будет пустой: в вашем Rails-приложении есть файл с именем seeds.rb, в котором вы можете указать все записи для разных моделей, необходимых для работы приложения. В итоге на модель нужно всего лишь несколько строк кода.
Во фреймворке Hibernate для Java необходимо прописывать все атрибуты с аннотациями, а затем еще и сеттеры для тех атрибутов, которые вам необходимо модифицировать. В этом случае вы получаете на выходе большое количество кода.
В Rails то же самое занимает одну строку. DB Schema сохраняется в файле schema.rb, который автоматически создается при запуске миграции. И в классе не нужны сеттеры или атрибуты. Когда потребуются последние, достаточно будет написать: Model.attribute — и это все.
Как уже говорилось выше, с Rails вы можете фокусироваться именно на логике и методах вашего проекта, а не на коде.
Заключение
Ruby on Rails дает вам мощные инструменты вроде динамической типизации или byebugging, которые неплохо ускоряют процесс программирования.
Если вы хотите взять курс на разработку веб-приложений, обязательно попробуйте написать небольшое приложение на Rails, чтобы понять, как это работает. Никогда не поздно узнать что-то новое — даже в том случае, если вы предпочитаете традиционные инструменты.
Ruby on Rails/Введение
Содержание
Знакомство с Rails [ править ]
Что входит в Rails? [ править ]
Rails — это полноценный, многоуровневый фреймворк для построения веб-приложений, использующих базы данных, который основан на архитектуре Модель-Представление-Контроллер (Model-View-Controller, MVC). Динамичный AJAX-интерфейс, обработка запросов и выдача данных в контроллерах, предметная область, отраженная в базе данных, — для всего этого Rails предоставляет однородную среду разработки на Ruby. Все, что необходимо для начала — база данных и веб-сервер.
Кто пользуется Rails? [ править ]
Rails используют все — от стартапов и некоммерческих организаций до крупного бизнеса. Rails — это прежде всего инфраструктура, поэтому среда великолепно подходит для любого типа веб-приложений, будь это программы для организации совместной работы, поддержки сообществ, электронного бизнеса, управления содержанием, статистики, управления… Список можете продолжить сами.
Что еще нужно? [ править ]
Rails отлично работает со многими веб-серверами и СУБД. В качестве веб-сервера рекомендуется использовать Apache или nginx с модулем Phusion Passenger. Rails также можно разворачивать используя Unicorn, Thin, Mongrel или FastCGI. В качестве СУБД можно использовать MySQL, PostgreSQL, SQLite, Oracle, SQL Server, DB2 или Firebird. Использовать Rails можно на практически любой операционной системе, однако для развертывания мы рекомендуем системы семейства *nix.
Начало работы [ править ]
Инструменты [ править ]
Наверно существует столько вариантов разработки Rails приложений, сколько и Rails программистов. Но все они сводятся к двум вариантам: текстовый редактор/командная строка и интегрированная среда разработки (IDE).
Интегрированная среда разработки [ править ]
Дефицита в Rails IDE нет. Основные это: RadRails, RubyMine, 3rd Rail и NetBeans. Все кросс-платформенные, и некоторые из них очень хорошие, но в этом учебнике мы будем использовать связку текстовый редактор/командная строка.
Текстовые редакторы и командная строка [ править ]
Что мы используем для разработки Rails приложений, если нет шикарной IDE? Большинство Rails разработчиков выбирают по следующим критериям: использовать текстовый редактор для редактирования текста, а командную строку для выполнения команд. Комбинация зависит от ваших предпочтений и платформы:
Linux: Ваш выбор редактора основывается на описанном выше для OS X, за исключением TextMate. Мы рекомендуем графический Vim (gVim), gedit (с плагином GMate) или Kate. Что касается командной строки: каждый дистрибутив Линукс имеет по крайней мере одно заявленное приложение терминала командной строки (часто несколько).
Браузеры [ править ]
Хотя существует множество веб-браузеров, подавляющее большинство Rails разрабочиков используют Firefox, Safari или Chrome. Скриншоты в этом учебнике, как правило, будут в браузере Chrome. Если вы используете Firefox, предлагаем использовать Firebug, он позволяет динамическую проверку (и даже редактирование) структуры HTML и CSS правил на любой странице. Для тех, кто не использует Firefox, Firebug Lite работает с большинством других браузеров, таких как Safari и Chrome, и имеет встроенную «Проверку элемента». Независимо от того, какой браузер вы используете, опыт показывает, что время, потраченное на обучения подобным инструментам будет щедро вознаграждено.
По поводу инструментов [ править ]
В процессе приобщения ваше рабочее окружение будет установлено и запущено, вы возможно найдете что тратить много времени на приобщение ко всему будет правильно. Процесс обучения текстовым редакторам и IDE особенно долог; вы можете потратить неделю только на чтение руководства TextMate или Vim. Если Вы плохо знакомы с этим делом, я хочу уверить Вас, что расход времени на изучение инструментов нормален. Все проходят это. Иногда это печально и вызывает легкое беспокойство, когда у вас в голове уже есть веб-приложение и вы хотите только изучить Rails, но тратите неделю изучая некоторый таинственный древний редактор Unix только чтобы начать. Но мастер должен знать свои инструменты — в конце награда окупит усилия.
Ruby, RubyGems, Rails, and Git [ править ]
Классический способ установки из исходных текстов со страницы загрузки Ruby on Rails. Я предположу, что Вы можете перейти туда теперь; часть этой книги могут быть прочитаны с пользой без Сети, но не эта часть. Я только вставлю некоторые собственные комментарии к процедуре установки.
Установка Git [ править ]
Многое в экосистеме Rails зависит так или иначе от системы контроля версий называемой Git (описана в деталях в Разделе 1.3). Поскольку она повсеместно используется вы должны установить Git на этой ранней стадии; я предлагаю следовать инструкциям по установке Git для вашей системы в разделе Installing Git из Pro Git.
Установка Ruby [ править ]
Следующий шаг — установка Ruby. Возможно что он уже стоит в вашей системе, попробуем запустить:
Видим номер версии. Rails 3 требует Ruby 1.8.7 и выше, и отлично работает с Ruby 1.9.2. Этот учебник предполагает, что вы используете последную версию Ruby 1.9.2, известную как Ruby 1.9.2-head, но и с Ruby 1.8.7 должно быть всё хорошо.
Ветка Ruby 1.9 находится в интенсивной разработке, поэтому, к сожалению установка последней версии может быть нетривиальной задачей. Вам придётся полагаться на самые современные инструкции. Ниже приводится ряд шагов, после которых я привёл всё в рабочее состояние на моей системе (Macintosh OS X), но вам, возможно, придётся повозиться.
Как часть процедуры установки Ruby, если вы используете OS X или Linux, я настоятельно рекомендую устанавливать Ruby используя Ruby Version Manager (RVM), который позволяет устанавливать и управлять различными версиями Ruby на одной машине. (Проект Pik позволяет подобное при использовании Windows.) Это особенно важно, если вы хотите запускать Rails 3 и Rails 2.3 на одной машине. Если вы решили пойти этим путем, я рекомендую использовать RVM для установки двух комбинаций Ruby/Rails: Ruby 1.8.7/Rails 2.3.8 и Ruby 1.9.2/Rails 3.1.0. Если Вы сталкнётесь с какими-нибудь проблемами при использовании RVM, вы всегда можете найти его автора, Wayne Seguin, на канале IRC RVM (#rvm on freenode.net).8
После установки RVM Вы можете установить Руби следующим образом:
Затем сделайте gemset для Rails 3, который позволит нам управлять отдельными пакетами gems если мы хотим (например) запускать Rails 2.3 на одной системе:
Вы можете сделать эту версию и gemset версией по умолчанию следующим образом:
Установка RubyGems [ править ]
RubyGems — это пакетный менеджер Ruby projects, и существуют тонны больших библиотек (включая Rails), доступных через пакеты Ruby или gems. Установка RubyGems должна быть лёгкой, так как Вы установили Ruby. Фактически, если Вы установили RVM, у Вас уже есть RubyGems, так как RVM включает его автоматически:
Если у Вас ещё нет этого, Вы должны загрузить RubyGems, распаковать его, и затем пойти в каталог rubygems и запустить программу установки:
Здесь sudo выполняет команду ruby setup.rb как администратор, который имеет доступ к файлам и каталогам, не доступным обычным пользователям; я поместил команду в скобках, чтобы указать, что использование sudo возможно не требуется для Вашей конкретной системы. Большинство Unix/Linux/OS X систем требуют sudo по умолчанию, если Вы не используете RVM как предложено в Разделе 1.2.2.2. Заметьте, что Вы не должны фактически печатать скобки; Вы должны запустить также
в зависимости от вашей системы.
Если вы уже установили RubyGems ранее, то возможно вы захотите обновить вашу систему на последную версию:
Установка Rails [ править ]
Установка Rails 3.0 может быть мудрёна, так как еще нет релиза и появляется много изменений. Вот команды, которые работали у меня:
Флаг «-pre» гарантирует, что вы получите пре-релиз версию Rails, которая на момент написания статьи стала релиз-кандидатом (rc)
Чтобы убедиться, в работе, запустите следующую команду:
Первое приложение [ править ]
Файл/Директория | Описание |
app/ | Основные приложения (app) кода, включая модели, представления, контроллеры и помощники |
config/ | Конфигурация приложения |
db/ | Файлы для управления базой данных: схема базы данных и миграции |
doc/ | Документация приложения |
lib/ | Модули библиотек |
log/ | log файлы приложения |
public/ | Общедоступные файлы (например для веб-браузера)- изображения и каскадные таблицы стилей (CSS) и т.д. |
script/rails/ | Скрипт Rails для генерации кода, открытия консоли сессий, или запуск локального веб-сервера |
test/ | Юнит-тесты и прочий аппарат тестирования |
tmp/ | Временные файлы |
vendor/ | Сторонний код, например плагины и гемы |
README/ | Краткое описание приложения |
Rakefile | Утилиты задач, доступных через команду rake |
Gemfile | Gem требования для приложения |
config.ru | Файл конфигурации для Rack middleware |
.gitignore | Шаблоны для файлов, которые должны быть проигнорированы Git |
Bundler [ править ]
После создания нового приложения Rails, следующий шаг заключается в использовании Bundler для установки и включения gems необходимых для приложения. Для этого откройте Gemfile с вашего любимого текстового редактора:
Должно выйти что-то похожее:
Большинство из этих строк закомментированы с хэш-символа #; они здесь, чтобы показать вам некоторые наиболее часто используемых gems и привести примеры синтаксиса Bundler. Сейчас нам не потребуется каких-либо других gems, кроме тех, что по умолчанию: Rails, и gems для Ruby интерфейса базы данных SQLite.
Если вы укажете номер версии для gem команды, Bundler автоматически установит последнюю версию. К сожалению, gem обновления может привести к путанице и поломке, так что в этом уроке мы обычно включаем номер рабочей версии. Например, последняя версия sqlite3-ruby gem не будет установлен на OS X Leopard, в то время как предыдущая версия работает отлично. Просто для безопасности сделайте следующие исключения:
Что заставит Bundler установить версию 1.2.5 от sqlite3-ruby gem. (Также мы удалили ненужные строки комментариев). Обратите внимание что если версия 1.2.5 от sqlite3-ruby gem у вас не работает, попробуйте версию 1.3.1.
Если вы работаете в Ubuntu Linux, вам может потребоваться установить несколько других пакетов на данный момент:
Как только вы собрали надлежащий Gemfile, установите gems используя Bundle
Это может занять несколько минут, но когда это будет сделано наше приложение будет готово к запуску.
rails server [ править ]
Благодаря запуску новых rails и установке bundle, у нас уже есть приложение, которое можно запустить, но как? К счастью, Rails поставляется с программной командной строкой или скриптом, который запускает локальный веб-сервер, видимый только на вашем компьютере.
Это говорит о том, что приложение работает на порту номер 3000 по адресу 0.0.0.0. Это специальный адрес означает, что с любого компьютера в локальной сети можно просматривать наше приложения, в частности, машина запускает сервер разработки, то есть локальную машину разработки — можете просматривать приложения, используя адрес localhost:3000. Мы можем увидеть результат посетив http://localhost:3000/
Чтобы просмотреть информацию о вашем приложении, нажмите на ссылку «About your application’s environment»
Конечно, нам не нужны страницы по умолчанию Rails в долгосрочной перспективе, но приятно видеть, что он работает. Мы удалим страницу по умолчанию (и заменим его на вашу домашнюю страницу) в последующем.
Модель-Представление-Контроллер (MVC) [ править ]
На ранней стадии, полезно получить общие знания о работе Rails приложений. Вы уже заметили, что по умолчанию структура Rails приложения имеет app/ каталог с тремя подкатегориями: models, views, и controllers. Это намек на то, что Rails следует шаблону модель-представление-контроллер (MVC), который разделяет «domain logic» (или «business logic») от входной и представленной логикой, связанной с графическим пользовательским интерфейсом (GUI). В случае веб-приложений «domain logic» обычно состоит из data models для пользователей, статей, и продуктов, и GUI это только веб-страница в браузере.
При взаимодействии с приложением Rails, браузер посылает запрос, который получает веб-сервер и передаёт на Rails контроллер, который отвечает за то, что делать дальше. В некоторых случаях контроллер будет сразу генерировать шаблон, который конвертируется в HTML и отправляется обратно браузеру. Чаще всего для динамических сайтов, контроллер взаимодействует с моделью, которая является объектом Ruby. Ruby в свою очередь представляет элемент сайта (например, пользователя) и отвечает за связь с базой данных. После вызова модели, контроллер генерирует шаблон и возвращает полную веб-страницу в браузер как HTML.
Если это кажется немного абстрактным для вас, не беспокойтесь, мы будем часто возвращаться к этому разделу. Кроме того в будущем вы получите более подробное представление о MVC в контексте демо приложения. Наконец на последующих стадиях мы будем использовать все аспекты MVC.
Управление версиями с помощью Git [ править ]
Теперь у нас есть рабочее Rails приложение и следующим шагом мы поместим исходный код нашего приложения под систему управления версиями. С помощью системы управления версиями вы сможете следить за изменениями в коде вашего проекта, легко сотрудничать с другими разработчиками, и откатить любые ошибки. Использование контроля версий является необходимым навыком для любого разработчика программного обеспечения.
Есть много вариантов для управления версиями, но Rails сообщество в значительной степени ориентировано на Git, систему управления версиями разработанной Линусом Торвальдсом для размещения ядра Linux.
Установка и настройка [ править ]
После установки Git, необходимо выполнить множество дополнительных шагов. Это системная установка, которая означает что вам необходимо сделать это на своем компьютере всего один раз:
Также используем более подробную команду проверки:
Последним этапом установки можно дополнительно задать текстовый редактор, который Git будет использовать для комментирования сообщений. При использовании графического редактора, например TextMate, gVim, или MacVim, вам необходимо убедиться в том что редактор прикреплен правильно:
Установка первого репозитория [ править ]
Теперь мы подошли к тому, что вам необходимо проделывать каждый раз, как вы создаете новый репозиторий (в этой книге это случается всего один раз, но может быть вам понадобится это в будущем) Сперва перейдите в корневую директорию первого приложения и инициализируйте новый репозиторий:
Следующим шагом является добавление файлов проекта в хранилище. Здесь есть несколько затруднений, например: по умолчанию Git записывает все изменения файлов, но есть некоторые файлы, которые мы не хотим отслеживать. Например, Rails создает файлы журнала для записи поведения приложения; эти файлы часто меняются, и нам не нужно, чтобы наша система управления версиями обновляла их постоянно. Git имеет простой механизм, чтобы игнорировать такие файлы: просто включите файл .gitignore в корневой каталог Rails с некоторыми правилами для Git — какие файлы нужно игнорировать.
Rails по умолчанию создает в корневой директорию .gitignore файл следующего содержания:
В этом листинге прописаны файлы которые Git будет игнорировать, это — log файлы, временные Rails (tmp) файлы и SQLite база данных. Большинство из этих файлов часто автоматически изменяются, поэтому их неудобно включать в систему управления версиями.
Данных игнорируемых файлов в .gitignore файле вполне достаточно для этого учебника, но в зависимости от вашей системы вы можете использовать следующий листинг. Он также игнорирует файлы документации Rails, Vim и Emacs файлы подкачки, и (для OS X пользователей) .DS_Store каталоги созданные mac Finder приложением. Если вы хотите использовать этот листинг, то просто откройте .gitignore файл в вашем любимом текстовом редакторе и заполните его следующим содержанием:
Добавление и фиксирование [ править ]
Наконец, мы добавим файлы в новый проект Rails на Git а затем зафиксируем результат. Вы можете добавить все файлы (кроме тех, которые соответствуют шаблонам игнорирования в gitignore.) Следующим образом:
Здесь точка ‘.’ представляется текущим каталогом, и Git достаточно умен, чтобы добавлять файлы рекурсивно, поэтому он автоматически включает все подкаталоги. Эта команда добавляет файлы проекта на промежуточный уровень, в котором они содержатся до изменения в вашем проекте, вы можете увидеть, какие файлы находятся на промежуточном уровне используя команду:
Результат на самом деле длинный, и здесь вертикальные точки это пропущенные строки.
Чтобы сообщить Git, что вы хотите сохранить изменения, используете следующую фиксирующую команду:
Где -m позволяет добавить комментарий для фиксирования, если вы опустите -m, то Git откроет редактор, который вы указали в качестве стандартного и даст вам ввести там комментарий.
Важно запомнить что Git фиксация локальна, записывается только на ваш компьютер. Это в отличие от другой системы управления, под названием Subversion, в которой обязательно вносятся изменения на удаленном хранилище. Git в отличие от стиля Subversion, делает это двумя логическими частями: локальная запись изменений (git commit), и отправка изменения на удаленное хранилище (git push). В дальнейшем мы увидим пример отправки.
Тем временем вы можете увидеть ваши зафиксированные записи используя log команду:
Для того, чтобы выйти из Git журнала нажмите q.
Так чем, все-таки, так хорош Git? [ править ]
Это наверно не совсем ясно, почему, включив в ваш проект систему управления версиями, вы получите выгоду. Так что давайте рассмотрим один пример. Предположим, вы сделали несколько случайных изменений, таких как (Ох!) удаление важного app/controllers/ каталога:
Посмотрим, что получилось:
Удаленные файлы и папки восстановлены!
GitHub [ править ]
Теперь, когда мы включили наш проект в систему контроля версиями Git, пришло время отправить ваш код до GitHub, специальный ресурс для кода, оптимизированный для размещения и обмена Git репозиториями. Копируя ваш репозиторий на GitHub мы преследуем две цели: полное резервное копирование кода (включая полную историю фиксаций), и упор на последующее более легкое сотрудничество. Этот шаг не является обязательным, но будучи членом GitHub вам открыты двери к участию разнообразных Ruby and Rails проектов. (GitHub очень хорошо принимает Ruby and Rails, в самом деле он написан на нём).
GitHub имеет целый список платных услуг, но на открытый исходный код их услуги бесплатны, поэтому создайте бесплатный GitHub аккаунт если у вас его еще нет. (Для начала прочитайте о SSH ключах) После регистрации щелкните по созданию хранилища и заполните его информацией. После заполнения формы, загрузите ваше первое приложение следующим образом:
Эти команды значат, что вы добавляете GitHub как зеркало для основного филиала, а затем загружаете ваше хранилище на GitHub. Просто замените на ваше имя пользователя. Например:
Результат должен незамедлительно отобразиться на вашей странице в GitHub.
Отделение, редактирование, фиксация, слияние [ править ]
Отделение [ править ]
Вы наверно заметили, что GitHub показывает содержимое файла README на главной странице хранилища. В нашем случае проект создан с помощью команды Rails, и поэтому файл README создался автоматически. Это не очень информативно, и поэтому мы первым делом изменим README, описав в нем наш проект. В процессе мы будем использовать такие функции как отделение, редактирование, фиксация, слияние.
Полную цену ветвления вы узнаете когда мы будем работать над проектом с несколькими разработчиками, но ветви полезны даже для одного разработчика. В частности, главная ветвь изолирована от любых изменений, которые мы делаем с ветвью темы, так что даже если мы сделаем что то не так, мы всегда сможем отказаться от изменений, проверив главную ветвь и удалив ветвь темы. Мы сделаем это в конце раздела.
Кстати, для таких малых изменений я обычно не вожусь с новой ветвью, но никогда не рано практиковать хорошие привычки.
Редактирование [ править ]
После создания ветви темы, мы отредактируем его, чтобы сделать немного более подробным. Мне нравиться использовать язык разметки Markdown для этой цели, и если вы используете расширение файла .markdown, то GitHub автоматически отформатирует его для вас. Итак для начала мы используем Git версию Unix команды mv («move») для изменении имени:
,а затем заполним его следующим содержанием:
# Ruby on Rails Tutorial: first application This is the first application for [*Ruby on Rails Tutorial*]
Фиксирование [ править ]
В связи с изменениями, мы можем взглянуть на состояние нашей ветви:
Слияние [ править ]
Теперь, когда мы закончили делать наши изменения, мы готовы объединить результаты обратно в нашей главной ветви:
Заметим, что Git вывод включает часто в себя такие вещи как 34f06b7, которые связаны с внутренним представлении о Git репозитории. Ваши результаты будут отличаться в подробностях, но в целом должны соответствовать примеру выше.
Этот шаг является необязательным, и на самом деле довольно часто можно оставить topic branch нетронутым. Таким образом вы сможете переключаться между topic и master branches до тех пор пока вам это нужно.
Push [ править ]
Теперь, когда мы обновили файл README, мы можем загрузить изменения на GitHub, чтобы увидеть результат:
Как и было обещано, GitHub красиво оформил формат нового файла используя Markdown.
Развертывание [ править ]
Даже на этой ранней стадии мы собираемся развернуть наше (по прежнему пустое) Rails приложение к производству. Этот шаг является необязательным, но раннее развертывание часто позволяет уловить любые проблемы на этапе разработки. Альтернатива — развертывание только после трудоемких усилий запечатанное далеко в среде разработки, часто приводит к страшной головной боли интеграции, когда наступает время обеда.
Средства развертывания Ruby кода появились в течение нескольких прошедших лет, и сейчас для этого есть несколько замечательных функций. Они включают приложения для хостов или виртуальных частных серверов Phusion Passenger (модуль для Apache и Nginx), полный комплекс услуг развертывания таких компаний, как Engine Yard и Rails Machine, и облако развертывания услуг, таких как Engine Yard Cloud и Heroku.
Мой любимый способ развертывания Rails — опция Heroku, платформа, построенная специально для развертывания Rails и других веб Ruby applications. Heroku делает развертывание Rails приложений до смешного простым, используя для получения исходного кода систему управления версиями Git. (Это еще одна причина для последующей установки Git шаги в разделе 1.3, если вы еще не сделали этого.) Оставшаяся часть этого раздела посвящена развертыванию нашего первого приложения для Heroku.
Установка Heroku [ править ]
После регистрации на Heroku, установите Heroku gem:
Как и с GitHub, при использовании Heroku вам необходимо создать SSH ключи, если вы до сих пор это не сделали, и затем указать Heroku ваш public key, чтобы вы смогли использовать Git для загрузки ваших приложений на их сервера:
Наконец, используем команду Heroku для того чтобы создать место на серверах Heroku, чтобы наше приложение ожило:
Да, и это все. Heroku команда создает новый поддомен только для нашего приложения доступный для немедленного просмотра. Там пока что ничего нет, так что давайте займемся развертыванием.
Развертывание. Шаг первый. [ править ]
Для развертывания на Heroku, первый шаг заключается в использовании Git для загрузки приложении на Heroku:
Развертывание. Шаг второй. [ править ]
Нет никакого второго шага! Мы уже все сделали! Чтобы увидеть готовое приложение, вы можете посетить адрес который вы видели когда вы запускали heroku create. Вы также можете использовать команду Heroku, которая автоматически сделает это:
После того как вы успешно запустили ваше приложение, heroku обеспечивает красивый интерфейс для администрирования и настройки приложения.
Команды Heroku [ править ]
Есть целая куча команд Heroku, и мы едва будем использовать их все в нашем учебнике. Давайте используем одну из них чтобы переименовать приложение:
Заключение [ править ]
Мы прошли долгий путь в этой главе: монтаж, установка среды разработки, управления версиями и развертывание.
Все, что осталось, это, знаете, на самом деле начать обучение Rails. Давайте начнем!