FeaturesPluginsDocs & SupportCommunityPartners

Перевод Flickr на Rails

Это руководство посвящено созданию приложения на Ruby on Rails для поиска по базе данных Flickr.

Примечание: Для работы с этим руководством требуется прямое подключение к Интернету; работа через прокси невозможна.

Содержание

Содержимое на этой странице относится к среде IDE NetBeans 6.0
Требования для работы с руководством
Получение ключа интерфейса API Flickr
Установка библиотеки Flickr
Создание проекта Ruby on Rails
Добавление стиля к проекту
Создание контроллера
Определение метода поиска
Выполнение приложения
Повышение удобства для пользователей

Требования для работы с руководством

Для работы с руководством требуются следующие технологии:

Получение ключа интерфейса API Flickr

Для использования интерфейса API Flickr необходимо получить ключ API.
  1. Перейдите в веб-обозревателе по адресу http://www.flickr.com/services/api/misc.api_keys.html.
  2. Щелкните ссылку "Apply for your key online now".
  3. Выполните процедуру получения ключа Flickr.
  4. Скопируйте ключ API, автоматически созданный Flickr, и сохраните его в текстовом файле или другом удобном местоположении.

Установка библиотеки Flickr

  1. Выберите "Ruby Gems" в меню "Tools".
  2. В диалоговом окне "Ruby Gems" щелкните вкладку "New Gems".
  3. Введите flickr в поле "Search" и нажмите клавишу Enter.
  4. Выберите "flickr" и нажмите кнопку "Install". Нажмите кнопку "OK" в диалоговом окне "Gem Installation Settings".
  5. Убедитесь в наличии сообщения об успешном выполнении и закройте диалоговые окна.

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

  1. Выберите "File > New Project".
  2. Выберите "Ruby" в поле "Categories" и "Ruby on Rails Application" в поле "Projects", затем нажмите кнопку "Next".
  3. Введите flickr в поле "Project Name" и нажмите кнопку "Finish".

    При работе с библиотекой Flickr предполагается, что ключ API Flickr добавляется непосредственно в сценарий. Можно так и поступить, однако методика, описанная ниже, позволяет использовать библиотеку Flickr, не внося в нее каких-либо изменений.
  4. В окне "Projects" разверните узел "Configuration", затем откройте environment.rb.
  5. Добавьте следующий код в конце файла environment.rb. Убедитесь в том, что ключ API Flickr введен в переменную MY_KEY. Этот ключ требуется для доступа к интерфейсу API Flickr.

    Пример кода 1: добавление ключа API Flickr
    require 'rubygems'
    require 'flickr'
    MY_KEY='Enter your Flicker API Key'
    class Flickr
      alias old_initialize initialize
      def initialize(api_key=MY_KEY, email=nil, password=nil)
        puts "new_initialize " + MY_KEY
        old_initialize(api_key, email, password)
        @host="http://api.flickr.com"
        @activity_file='flickr_activity_cache.xml'
      end
    end

  6. Выберите в главном меню "File > Save All".

Добавление стиля к проекту

  1. В окне "Project" разверните узел "Views", щелкните правой кнопкой мыши узел "Layouts" и выберите "New -> RHTML file". Назовите файл application и нажмите кнопку "Finish".
  2. Замените существующий код application.rhtml на следующий:

    Пример кода 2: код для application.rhtml
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
    <html>
        <head>
        <title>Flickr</title>
          <%= javascript_include_tag :defaults %>
          <%= stylesheet_link_tag 'flickr' %>
        </head>
    <body>
          <%= yield %>
    </body>
    </html>

  3. Разверните узел "Public", щелкните правой кнопкой мыши таблицу стилей и выберите "New > Other".
  4. В диалоговом окне "New File" установите в поле "Category" значение Other, а в поле "File Type" – Cascading Style Sheet. Нажмите кнопку "Next".
  5. Назовите файл flickr и нажмите кнопку "Finish".

    Файл flickr.css откроется в области изменения.
  6. Добавьте следующие стили к flickr.css:

    Пример кода 3: код стилей
    body {
        background-color: #888;
        font-family: Lucida Grande;
        font-size: 11px;
        margin: 25px;
    }

    form { margin: 0; margin-bottom: 10px; background-color: rgb(222,231,236); border: 5px solid #333; padding: 25px; }
    fieldset { border: none; } #spinner {
    float: right;
    margin: 10px;
    }

    #photos img { border: 1px solid #000; width: 75px; height: 75px; margin: 5px; }

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

  1. Щелкните правой кнопкой мыши узел "Controllers" и выберите "Generate".
  2. В диалоговом окне "Rails Generator" введите flickr в поле "Name" и index в поле "Views", затем нажмите кнопку "OK".

    Это действие приводит к созданию файла flickr_controller.rb и его открытию в области изменения.
  3. Выберите "Views > flickr" и откройте index.rhtml.
  4. Замените существующий код index.rhtml на следующий:

    Пример кода 4: код для index.rhtml
    <% form_remote_tag :url => {:action => 'search'}, :update => 'photos' do %>
        <fieldset>
            <label for="tags">Tags:</label>
    
            <%= text_field_tag 'tags' %>
            <%= submit_tag 'Find' %>
        </fieldset>
    <div id="photos"></div> <% end %>

Определение метода поиска

  1. Откройте flickr_controller.rb.
  2. Измените код путем удаления метода index с заменой на метод search, выделенный полужирным шрифтом:

    Пример кода 5: код класса FlickrController
    class FlickrController < ApplicationController
      def search
        flickr = Flickr.new
    
        if params[:tags].empty?
          render :text => '<h2>Please enter a search string&lt/h2>'
        else
          begin
            photos = flickr.photos(:tags => params[:tags], :per_page => '24')
            render :partial => 'photo', :collection => photos
          rescue NoMethodError
            render :text => '<h2>No matching photos found</h2>'
          end
        end
      end
    end

  3. Под узлом "Views" щелкните правой кнопкой мыши узел "flickr" и выберите "New -> RHTML file". Назовите файл _photo и нажмите кнопку "Finish".

  4. Замените содержимое файла на следующую единственную строку.

    <img class='photo' src="<%= photo.sizes[0]['source'] %>">
                

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

На этом этапе выполняется настройка среды для запуска приложения при выполнении проекта.
  1. Удалите index.html в узле "Public".
  2. В узле "Configuration" откройте routes.rb. Перейдите к строке:

    # map.connect '', :controller => "welcome"
                
  3. Удалите в строке знак комментария (#) и измените welcome на flickr.
  4. Для запуска сервера WEBrick и обозревателя нажмите кнопку "Run Main Project" на панели инструментов, как показано на следующем рисунке.

    Рис. 1: Приложение "flickr"

    Рис. 1: Приложение "Flickr"
  5. Введите строку поиска, например NetBeans, и нажмите кнопку "Find". Изображения загружаются через несколько секунд.

    Рис. 2: Загрузка изображений

    Рис. 2: Загрузка изображений

Повышение удобства для пользователей

При нажатии кнопки "Find" какая-либо обратная связь относительно происходящего за кадром отсутствует. На данном этапе выполняется добавление простого анимированного изображения в формате GIF, позволяющего справиться с этой проблемой, а также изменение вида изображений по мере их загрузки.
  1. Сохраните этот анимированный файл GIF из обозревателя в файл на рабочем столе. Затем перетащите файл в узел "Public > images" в окне "Project" в среде IDE NetBeans.
  2. Выберите "Views > flickr > index.rhtml". Удалите существующий код и замените его кодом, показанным в следующем примере:

    Пример кода 6: код для index.rhtml
    <% form_remote_tag :url => {:action => 'search'}, :update => 'photos',
        :complete => visual_effect(:blind_down, 'photos'),
        :before   => %(Element.show('spinner')),
        :success  => %(Element.hide('spinner')) do %>
    
        <%= image_tag 'spinner.gif', :id => 'spinner', :style => 'display: none' %>
        <fieldset>
            <label for="tags">Tags:</label>
            <%= text_field_tag 'tags' %>
    
            <%= submit_tag 'Find' %>
        </fieldset>
    
        <div id="photos" style="display: none"></div>
    
    <% end %>

  3. Выберите в главном меню "File > Save All". Обновите страницу в обозревателе и введите другую строку поиска, например JRuby.

    Рис. 3: Добавление анимации

    Рис. 3: Добавление анимации

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

Что дальше?



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


Bookmark this page

del.icio.us furl simpy slashdot technorati digg
Companion
Projects:
MySQL Database Server   Open JDK: an Open SourceJDK   GlassFish Community: an Open Source Application Server    Mobile & Embedded Community    Open Solaris   java.net - The Source for Java Technology Collaboration   Virtual Box - full virtualizer  Open ESB - The Open Enterprise Service Bus Powered by