Добрый день, друзья. Не так давно мы с друзьями-коллегами решили поизучать Ruby on Rails – что это такое и с чем едят – для использования в будущем при разработке своих проектов. Так как знаний по данной теме не было вообще, то и двигаться решили постепенно. При начальной установке Ruby с Rails 3.0 мы столкнулись с некоторыми трудностями, о которых в мануалах так сходу никто не упоминал. Поэтому я решил написать это небольшое руководство (которое является обобщением собственного опыта и перевода мануала на guides.rubyonrails.org/getting_started.html) по изначальной установке и настройке Ruby on Rails 3.0 для того, чтобы помочь таким же начинающим как я найти полезную информацию в одном месте и сэкономить свое время.
Манипуляции проводились на системе Windows XP SP2. На Windows 7 все то же самое, а на Висте рельсы у меня не поставились, но об этом позже.
Итак, для начала надо скачать Ruby installer. Инсталляция там нетрудная и все ясно (только сразу обновите переменную PATH, как это предлагается сделать).
Потом запустить командную строку с поддержкой Ruby.
Теперь нам нужно установить рельсы. В командной строке пишем:
gem install rails
На Висте ничегошеньки не получилось – при запуске этой команды появлялось сообщение о том, что не удалось найти папку C:UsersВладелец. Наверняка, дело тут было в кириллице в названии папки, но особо в детали я вдаваться не стал.
Мы для своих начальных нужд будем использовать базу sqlite3. Чтобы все прошло корректно, нужно будет скачать 2 архива: тут и тут и распаковать их в папку с RoR 3.
Теперь в командной строке набираем:
gem install sqlite3-ruby
После завершении установки библиотек sqlite3 нам надо будет создать свое приложение, в нашем случае блог. В командной строке пишем:
rails new blog
Наш блог создан, теперь надо перейти в папку приложения:
cd blog
Приложения Rails для управления gem-зависимостями по умолчанию используют Bundler. Так как кроме тех gem’ов, что у нас уже есть, других не требуется, можно просто написать:
bundle install
Rails поставляется со встроенной поддержкой SQLite3. Эта база вполне годится для разработки и тестирования, но не для промышленной эксплуатации. По умолчанию при создании нового проекта Rails использует именно базу данных SQLite, однако вы легко можете поменять эти настройки.
Тут я приведу часть дефолтного файла конфигурации (config/database.yml) с информацией по соединению для среды разработки:
1. development:
2. adapter: sqlite3
3. database: db/development.sqlite3
4. pool: 5
5. timeout: 5000
Теперь, после конфигурации базы данных, самое время скомандовать рельсам создать пустую базу. Это можно сделать с помощью команды rake:
rake db:create
После этого в папке db/ будут созданы базы development и test.
Собственно, теперь у нас уже есть функционирующее Rails-приложение. Чтобы в этом убедиться, нужно запустить веб-сервер командой:
rails server
Увидеть свое приложение в действии можно если открыть браузер и набрать в адресной строке localhost:3000
Знакомство с Ruby on Rails 3.0
Страница «Welcome Aboard» — это тест для Rails-приложения, позволяющий убедиться, что вы сконфигурировали программное обеспечении верно. Посмотреть информации о среде вашего приложения можно кликнув на ссылку «About your application’s environment».
Чтобы заставить Rails сказать «Привет», нужны, как минимум, котроллер и представление (view). К счатью, для их создания понадобится всего лишь одна команда:
rails generate controller home index
Rails создаст несколько файлов, включая app/views/home/index.html.erb. Это образец, который будет использоваться для отображения результатов метода index в контроллере home. Откройте этот файл в текстовом редакторе и отредактируйте таким образом, чтобы он содержал лишь одну строчку кода:
1. <h1>Hello, Rails!</h1>
Теперь, после того как мы создали котроллер и представление, нам надо как-то сказать рельсам когда отображать страницу «Hello Rails». В нашем случае, мы хотим, чтобы эта страница отображалась по корневому URL нашего сайта localhost:3000, вместо тестовой страницы «Welcome Aboard». Первым делом надо удалить дефолтную страницу из нашего приложения:
cd public
del index.html
Теперь нам надо сообщить Rails, где находится наша нынешняя домашняя страница. Откройте файл config/routes.rb в текстовом редакторе. Это файл маршрутизации нашего приложения, который содержит точки входа, написанные на специальном языке DSL (domain-specific language). В этом файле содержится множество примеров путей (они закомментированы), и один из них как раз показывает как соединить свою корневую страницу с конкретным контроллером и выполнить действие. Найдите строчку, которая начинается с root :to, раскомментируйте её и поменяйте, чтобы она выглядела примерно вот так:
1. Blog::Application.routes.draw do
2.
3. #...
4. # You can have the root of your site routed with "root"
5. # just remember to delete public/index.html.
6. root :to => "home#index"
root :to => «home#index» скажет Rails отображать действие root на действие (метод) index контроллера home.
Теперь если вы зайдете на localhost:3000, то увидите надпись «Hello, Rails!»
Знакомство с Ruby on Rails 3.0
В Rails есть понятие строительных лесов (Scaffold) — это быстрый способ создания главных частей приложения. Если вы хотите создать модели, представления и контроллеры, то это именно тот инструмент, который следует использовать.
В нашем случае (приложение-блог) можно начать с создания при помощи Scaffolding ресурса Post, который будет представлять собой пост в блоге. Для этого нужно написать такую команду:
rails generate scaffold Post name:string title:string content:text
Один из файлов, создаваемых командой rails generate scaffold это миграция базы данных (database migration). Миграции – это классы Ruby, которые разработаны для того, чтобы упростить создания и изменение таблиц баз данных. Для запуска миграций Rails использует команды rake, и есть возможность отменить миграцию после того, как она была применена к базе данных. Название файла миграции включает в себя временную метку, для того, чтобы легко было убедиться в том, что миграции запускаются в порядке их создания.
Если вы откроете файл db/migrate/20100917061914_create_posts.rb (помните, что название вашего файла будет слегка отличаться), то увидите там следующее:
1. class CreatePosts < ActiveRecord::Migration
2. def self.up
3. create_table :posts do |t|
4. t.string :name
5. t.string :title
6. t.text :content
7. t.timestamps
8. end
9. end
10.
11. def self.down
12. drop_table :posts
13. end
14. end
Эта миграция создает два метода up, вызываемых при запуске миграции в базу данных, и down, который используется в случае, когда нужно откатить изменения, сделанные в базе данных этой миграцией. Команда up создает таблицу posts с двумя строковыми столбцами и одним текстовым столбцом. Также она генерирует два поля для временных меток, которые нужны для отслеживания создания записей и изменения данных.
Теперь можно запустить миграцию командой:
rake db:migrate
Rails выполнит эту миграцию и сообщит о создании таблицы Posts.
Чтобы подключить посты к домашней странице, которую мы создали ранее, можно добавить ссылку на неё. Откройте файл app/views/home/index.html.erb и измените его следующим образом:
1. <h1>Hello, Rails!</h1>
2. <%= link_to "My Blog", posts_path %>
Метод link_to — один из встроенных в Rails помощников (helper). Он создает гиперссылку, основанную на тексте, который надо отображать и на том пути, куда надо обращаться – в данном случае путь к постам.
Теперь всё готово для того, чтобы начать работу с постами. Чтобы это сделать, нужно открыть ссылку localhost:3000 и кликнуть на «My Blog» (я себе сделал именной блог — Alex’s блог):
Знакомство с Ruby on Rails 3.0
Вы увидите результат воспроизведения Rails представления index ваших постов. На данный момент в базе данных нет ни одной записи, но можно создать новый пост, если кликнуть на «New Post». После этого вы увидите, что можете редактировать посты, просматривать детали, относящиеся к ним, а также удалять их. Собственно, вот и всё для начала, мы встали на рельсы!
В следующей статье-переводе речь пойдет о том, как добавить вторую модель в приложение. Рад был, если помог кому-то сэкономить хотя бы час-другой времени на поиск информации. Всем удачи!