corner imagecorner image
FeaturesPluginsDocs & SupportCommunityPartners

Создание блога на Ruby за 10 минут

Составитель Брайан Леонард (Brian Leonard), редактор Гэйл Чаппелл (Gail Chappell)
Декабрь 2007 г.
[номер версии: V6.0-6]

В данном руководстве рассматривается создание и выполнение простого веб-приложения с поддержкой Ruby в среде IDE NetBeans. В примере показано создание блога на Ruby с использованием инфраструктуры Rails 1.2. Описана основная последовательность выполняемых действий для создания модели, добавления контроллера и формирования представления.

Содержание

Содержимое на этой странице относится к среде IDE NetBeans 6.0

Для работы с этим руководством требуется следующее программное обеспечение и ресурсы.

Программное обеспечение или ресурс Требуемая версия
Среда IDE NetBeans 6.0 с поддержкой Ruby Версия 6.0*
Сервер базы данных MySQL Версия 5.0
Инфраструктура Rails 1.2.5**

* Если используется среда IDE NetBeans 6.1, см. Создание блога на Ruby за 10 минут – руководство по IDE NetBeans 6.1.

** Настоящее руководство, написанное для Rails 1.2.5, основано на методе создания базового интерфейса. Поскольку использование этого метода в Rails 2.0 не рекомендуется, это руководство не совместимо с Rails 2.0; если установлена версия Ruby 2.0, см. Создание блога на Ruby с Rails 2.0 за 10 минут.

Создание демонстрационной базы данных

Примечание: В настоящем руководстве используется сервер базы данных MySQL. Сведения об использовании сервера базы данных MySQL в приложении на Ruby приведены в статье Установка и настройка поддержки Ruby. В этой статье также описывается использование сервера базы данных Java DB вместо MySQL.

Перед созданием проекта Ruby on Rails необходимо создать базу данных "rubyweblog_development", как описано ниже.

  1. Откройте окно ввода команд.
  2. Запустите сервер базы данных MySQL, если он еще не запущен.
  3. Введите следующую команду для создания базы данных разработки и нажмите клавишу Enter.
    mysqladmin -u root -p create rubyweblog_development

    Примечание: Если пароль для пользователя root не установлен, опустите аргумент -p.

Создание проекта Ruby on Rails

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

  1. Выберите в среде IDE NetBeans "File > New Project".
  2. Выберите "Ruby" в поле "Categories" и "Ruby on Rails Application" в поле "Projects". Нажмите кнопку "Next".

    Примечание: При первом создании проекта Ruby выполняется проверка на наличие других установленных версий Ruby в дополнение к пакету JRuby, входящему в комплект поставки. Если такие версии установлены, на экран выводится диалоговое окно для выбора программного обеспечения, которое будет использоваться. Если требуется использовать встроенный интерпретатор JRuby, выберите "JRuby"; при необходимости использования собственной установленной версии Ruby выберите эту версию. Дополнительные сведения приведены в разделе Настройка среды IDE для использования собственной установленной версии Ruby в руководстве "Установка и настройка Ruby".

  3. Введите rubyweblog в поле "Project Name". В остальных полях подтвердите значения по умолчанию.
  4. Нажмите кнопку "Finish" для создания нового проекта.

    В результате создается каталог проекта с тем же именем, что и проект. На экране отображается следующее:

    • Основные категории приложения в окне "Projects". Особый интерес представляют узлы "Controllers", "Models" и "Views". В данном руководстве описана последовательность выполняемых действий для создания модели, добавления контроллера и формирования представления.
    • Список файлов, которые являются частью приложения, в окне "Output". Для открытия файла в области изменения следует щелкнуть ссылку в окне "Output".
    • Файл database.yml в области изменения.

Настройка среды базы данных

Следующим действием является изменение файла database.yml, который уже настроен для использования адаптера MySQL и базы данных разработки. Если пароль для пользователя root не установлен, выполнять какие-либо настройки не требуется.

  1. В области изменения измените файл database.yml путем ввода пароля в настройки разработки.
  2. Сохраните и закройте файл database.yml.

    Примечание: Если файл узлов операционной системы не содержит запись localhost, вместо нее следует использовать адрес 127.0.0.1.

Создание модели

Для создания модели для приложения будет использоваться Rails Generator. Приложению "rubyweblog" требуется модель "Post" для сохранения сообщений блога.

  1. В окне "Projects" щелкните правой кнопкой мыши узел "Models" и выберите "Generate".
  2. В диалоговом окне "Rails Generator" введите Post title:string в поле "Arguments" и нажмите кнопку "OK".

    Rails Generator создает модель с именем "Post". В окне "Output" перечисляются файлы, которые создаются вместе с моделью:

    • app/models/post.rb. Файл, содержащий методы для модели "Post". Этот файл также открывается в области изменения.
    • test/unit/post_test.rb. Модульный тест для проверки модели "Post".
    • test/fixtures/posts.yml. Тестовый элемент для заполнения модели.
    • db/migrate/migrate/001_create_posts.rb. Файл переноса для определения начальной структуры базы данных.

Перенос базы данных

Следующий требующий обработки файл – это файл переноса 001_create_posts.rb.

  1. В окне "Output" щелкните ссылку на файл 001_create_posts.rb.

    В открывшемся файле содержится метод self.up, создающий таблицу "posts", и метод self.down, уничтожающий таблицу "posts", как показано в следующем примере кода:

    class CreatePosts < ActiveRecord::Migration
      def self.up
        create_table :posts do |t|
          t.column :title, :string
        end
      end
    
      def self.down
        drop_table :posts
      end
    end
  2. В окне "Projects" щелкните правой кнопкой мыши узел "rubyweblog" и выберите "Migrate Database > To Current Version".

    В результате этого действия в базу данных добавляется таблица "posts". Ход процесса переноса отображается в окне "Output".

Создание контроллера

Теперь воспользуемся Rails Generator для создания контроллера с целью взаимодействия с моделью "Post". В данном руководстве добавляется код создания базового интерфейса, обеспечивающий простой интерфейс CRUD для создания, чтения, обновления и удаления сообщений в блоге.

  1. В окне "Projects" щелкните правой кнопкой мыши узел "Controllers" и выберите "Generate".

  2. В диалоговом окне "Rails Generator" введите Blog в поле "Name". Оставьте поле "Views" пустым. Нажмите кнопку "OK".

    Это действие приводит к созданию файла blog_controller.rb и его открытию в области изменения. Узел blog_controller.rb добавляется в узел "Controllers" в окне "Projects".
  3. Измените файл blog_controller.rb путем добавления следующего кода создания базового интерфейса, который обеспечивает простое приложение типа CRUD для модели "Post":

    class BlogController < ApplicationController
      scaffold :post
    end

Выполнение приложения

Теперь протестируйте приложение.

  1. В узле "Configuration" откройте routes.rb. Перейдите к строке:

    # map.connect '', :controller => "welcome"
  2. Удалите в строке знак комментария (#) и измените welcome на blog.
  3. Разверните узел "Public", щелкните правой кнопкой мыши файл index.html и выберите "Delete".

    index.html по умолчанию выводит на экран страницу приветствия, которая сейчас не требуется. После удаления index.html в Rails обращается к routes.rb для выбора выводимой на экран страницы; для блога такая страница была определена на предыдущем этапе.

  4. Выберите "File > Save All".
  5. Нажмите кнопку "Run Main Project" на панели инструментов.

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

    Рис. 1: Домашняя страница блога Ruby
  6. Щелкните ссылку "New post" для просмотра второй страницы приложения, показанной ниже.

    Рис. 2: Страница создания нового сообщения
  7. Введите название и нажмите кнопку "Create".

    Ниже показан пример сообщения блога.

    Рис. 3: Успешное создание сообщения блога

Дополнительно: Добавление еще одного поля

Здесь добавляется еще одно поле, чтобы в дополнение к полю "Title" таблица сообщений имела столбец "Body" с текстом блога. Для создания поля следует повторить уже знакомые читателю действия.

  1. Щелкните правой кнопкой мыши узел "Database Migrations" и выберите "Generate". В диалоговом окне "Rails Generator" введите AddBody в поле "Arguments" и нажмите кнопку "OK".

    Среда IDE создает сценарий переноса 002_add_body.rb с указанием версии и открывает этот файл в области изменения.

  2. Вставьте строку под def self.up, введите mcol и нажмите клавишу Tab.

    Триггер mcol заменяется на следующий шаблон кода с 3 параметрами:

    add_column :table, :column, :string
  3. Введите posts для замены первого параметра, затем нажмите клавишу Tab. Введите body и еще раз нажмите клавишу Tab. Затем введите text для замены третьего параметра. Строка должна выглядеть следующим образом:

    add_column :posts, :body, :text
    В результате переноса к таблице "posts" добавляется столбец "Body".
  4. Выберите "File > Save All".
  5. Щелкните правой кнопкой мыши узел "rubyweblog" и выберите "Migrate Database > To Current Version".

    Либо щелкните правой кнопкой мыши исходный файл и выберите "Run" в появившемся меню.
  6. Вернитесь в обозреватель и щелкните ссылку "New Post" для проверки того, распознается ли новое поле "Body" в Ruby (см. следующий рисунок).

    Рис. 4: Новое сообщение с полем "Body"
  7. Создайте еще несколько сообщений блога. Например:

    Рис. 5: Добавленные сообщения блога

Дополнительно: Проверка достоверности вводимых данных

В этом разделе к классу "Post" добавляется код, обеспечивающий ввод пользователем данных в полях заголовка и тела сообщения.

  1. В окне "Projects" разверните узел "Models" и дважды щелкните файл post.rb для его открытия в редакторе.
  2. Вставьте строку в определении класса, введите vp и нажмите клавишу Tab.

    Триггер vp заменяется следующим шаблоном кода:
    validates_presence_of :attribute
  3. Введите title, :body. Код должен выглядеть следующим образом:
    validates_presence_of :title, :body
  4. Запустите приложение, выберите "New Post" и нажмите кнопку "Create".

    Теперь выводится сообщение о том, что поля заголовка и тела сообщения не могут оставаться пустыми.

Дополнительно: Как сделать список более похожим на блог

До настоящего момента методом создания базового интерфейса, используемым в BlogController, создавалось базовое приложение типа CRUD, которое позволяло без труда тестировать модель "Post". Теперь создадим аналогичные представления, которые позволят настроить пользовательский интерфейс.

  1. В окне "Projects" щелкните правой кнопкой мыши узел "Views" и выберите "Generate".
  2. В диалоговом окне "Rails Generator" выберите "scaffold" в раскрывающемся списке "Generate".
  3. Введите Post в поле "Model Name" и Blog в поле "Controller Name". Оставьте поле "Actions" пустым. Выберите "Overwrite" для повторного создания "BlogController", затем нажмите кнопку "OK".

    Среда IDE создает представление для модели "Post" и выводит ее содержимое в окне "Output".
  4. Выберите "Views > blog" и откройте list.rhtml, который используется для отображения списка сообщений блога. Удалите теги <h1> и <table> и замените их следующим кодом:

    <h1>The Ruby Blog</h1>
    
    <% @posts.each do |post| %>
      <h2><%= post.title %></h2>
      <p><%= post.body %></p>
      <small> <%= link_to 'Permalink', :action => 'show', :id => post %></small>
      <hr>
    <% end %>

    Для каждого экземпляра действия post этот код обеспечивает заголовок, тело сообщения и ссылку Permalink, как показано на следующем рисунке.

    liai (ссылка с действием и индексом) инициирует следующий шаблон кода: <%= link_to "link text...", :action => "edit", :id => @item %>

  5. Запустите приложение для просмотра нового интерфейса модели "Post".

    Рис. 6: Новый и усовершенствованный интерфейс модели
  6. Для просмотра блога, начиная с последних сообщений, измените порядок сортировки, добавив ".reverse" в конец "@posts" в list.rhtml:

    <% @posts.reverse.each do |post| %>

    После сохранения файла и обновления страницы в обозревателе блог выглядит так, как показано на следующем рисунке.

    Рис. 7: Сообщения блога в обратном порядке

Что дальше?

>> Дополнительная документация по Ruby в среде NetBeans


Bookmark this page

del.icio.us furl simpy slashdot technorati digg
Companion
Projects:
MySQL Database Server   GlassFish Community: an Open Source Application Server   Open Solaris  Open JDK: an Open SourceJDK   Mobile & Embedded Community     Sponsored by 
Sponsored by Sun Microsystems