IT-Expert
  IT-Expert / Веблог / Ключевые слова / Ruby
Авторизация
Логин:
Пароль:


 
Поиск по записям:

Ключевые слова:
Записей в блоге
 за 2015 год
 за 2014 год
 за 2013 год
 за 2012 год
 за 2011 год

     за 2010 год

       за 2009 год
       за 2008 год
       за 2007 год
       за 2006 год
       за 2005 год
      RSS лента Лента новостей IT-Expert 
      Лента подкастов IT-Expert IT-Expert audiopodcasts

      Ruby

      включает:
      Rails

      Snow Leopard incompatibilities

      11:43, 31 августа 2009 ( )

      Не секрет, что после установки Snow Leopard много чего перестало работать корректно, в т.ч. и mysql gem.

      Рецепт излечения предлагаю познать из нижеследующей ссылки: http://www.icoretech.org/2009/08/install-mysql-and-mysql-ruby-gem-on-snow-leopard-64-bit/ 

       

      Scrum, Rails BDD и Cucumber приправленный Selenium

      20:28, 23 января 2009 ( )

      Попробую пояснить термины приведенные выше.

      Scrum - методология разработки основанная на agile. Если в двух словах вся разработка делится на Истории (Функционал), созданные совместно командой разработчиков и заказчиком. Заказчик излагает требования по функционалу, например, хочу редактировать статьи. Разработчики пишут три сценария для такого функционала: добавление, изменение и удаление статьи.

      Каждая история получает очки по скорости разработки, например, добавление и изменение по 10 очков, а удаление статьи 5 очков. Добавляем параметр важности. Например, важность добавления - 5, важность изменения 10 и важность удаления 15.

      Производительность команды измеряется в очках/период разработки. Например, принимаем производительность команды за период 3 недели (эти три недели будут называться Спринт) в 15 очков. Отсюда видно, что заказчик может или потребовать реализацию удаления и изменения за один Спринт, или реализацию удаления и добавления повысив важность фичи добавления.

      А в следующий Спринт будет добавлен недостающий функционал, например, добавления статьи. 

      Обязательным моментом в описании Сценариев является описание методики тестирования, например, нажми туда, смотри здесь и получишь это. 

      После каждого спринта производится этап тестирования и принятия результатов, после чего происходит очередная итерация с заказчиком - собираемся, обсуждаем, оцениваем и формализуем требования в функционал.

      Свежепоявившийся Cucumber позволяет в почти такой же манере scrum описывать функционал со сценариями и ... проводить тестирование rails приложения иногда называемое интеграционными тестами.

      Для тестирования в Cucumber может использоваться как библиотека Webrat, по сути рендерит выдачу HTML эмулируя браузер, и позволяет такие вещи, как заполнить поле формы, нажать на кнопку,открыть ссылку прямо в коде ruby и получить результат, который будет  сравнен с ожидаемым. Типично - заполнить пароль и логин в форме, и сравнить, есть ли в выдаче сообщение "добро пожаловать _пользователь_". При еще более глубоком погружении есть возможность использовать Selenium - фреймворк для тестирования прямо через вызовы браузера и использования его DOM, т.е. натурально, запускается фаерфокс, и через его DOM производится тестирование вывода страницы. Что вообще говоря позволяет вовсю тестировать Ajax плагины, работу Prototype и jQuery, что, если не ошибаюсь, Webrat  делать не умеет.

      Следует заметить, что Cucumber  это верхний уровень абстракции тестирования который заменяет традиционные интеграционные тесты, для тестов на нижнем уровне все равно прийдется использовать Test::Unit или RSpec, выбор за вами.

      Очень подробно тематика освещена здесь.

       

      Наверное не стоит говорить разработчикам, что означает в переводе на русский название Mocha

      19:28, 23 января 2009 ( )

      Между тем Mocha - прекрасный фреймворк - замена c более красивым названием mocking and stubbing для RoR.

       Выглядит примерно так:

        def test_mocking_a_class_method
      product = Product.new
      Product.expects(:find).with(1).returns(product)
      assert_equal product, Product.find(1)
      end

      def test_mocking_an_instance_method_on_a_real_object
      product = Product.new
      product.expects(:save).returns(true)
      assert product.save
      end
       

      Активно постигая BDD, Cucumber и RSpec

      20:34, 22 января 2009 ( )

      Features. Это прекрасно!

      Продолжая тему BDD следует отметить, что story runner выпочковался в отдельный фреймворк под названием Cucumber (огурец).

      Теперь истории выглядят так:

      мой реальный пример из features/admin_artices.feature

      Функционал: Админ может добавлять, удалять и изменять статьи
        Что бы админ мог управлять статьями
        Как администратор сайта
        Я должен иметь возможность удалять, добавлять и изменять статьи
        Как пользователь
        Я должен видеть отредактированные статьи

      Сценарий: добавление новой статьи
        Сначала admin is logged in as nexus
        И can view article list in admin zone
        Если I create new article title bbb
        То user should see it in the articles list /articles/my-new-article

      Сценарий: редактирование существующей статьи
        Сначала admin is logged in as nexus
        Если admin edit article foo and save content blabla
        То user should see blabla at url /articles/foo

      Сценарий: удалить существующую статью foo
        Сначала admin is logged in as nexus
        И статья с url foo доступна пользователю
        Если админ удаляет статью с урл foo
        То юзер в списке статей не видит ссылку на статью foo

        читать далее >>

      Слегка доработанный capistrano recipe для получения дампа рабочей базы локально

      13:04, 28 июля 2008 ( )

      Довольно часто данные изменяются на продакшн-сервере, и обычно хочется экспериментировать над свежей копией данных в своем rails приложении.

      Тем, кто пользуется для разворачивания приложений capistrano есть хорошая новость: сделать такую вещь весьма несложно.

      Итак, у нас в production FreeBSD 7.0, для разработки пользуемся рабочей станцией с ubuntu 8.04.

      Рецепт capistrano слегка модифицированный взят отсюда: http://programmingishard.com/code/495

      добавляем в config/deploy.rrb

       desc "Load production data into development database"
      task :load_production_data, :roles => :db, :only => { :primary => true } do
        require 'yaml'
       
        database = YAML::load_file('config/database.yml')
       
        filename = "dump.#{Time.now.strftime '%Y-%m-%d_%H:%M:%S'}.sql"
        on_rollback { delete "/tmp/#{filename}" }
       
        run "mysqldump -u #{database['production']['username']} --password=#{database['production']['password']} #{database['production']['database']} > /tmp/#{filename}" do |channel, stream, data|
          puts data
        end
        get "/tmp/#{filename}", filename
      #  exec "/tmp/#{filename}"
        exec "mysql -u #{database['development']['username']} --password=#{database['development']['password']} #{database['development']['database']} < #{filename}; rm -f #{filename}"
      end

      после чего пользуемся:

      cap load_production_data

      и вуаля, свежая копия базы с production у нас в development!

       

      +1 в сайты на ROR

      11:09, 3 ферваля 2008 ( )

      Тихо и незаметно вызрел еще один сайт на Ruby on Rails. 

      Сей сайт находится по адресу http://nxt.com.ua

      Rails 2.0, пользует плагины acts_as_tree, in_place_editing, restful_authentication, tiny_mce 

       

       

      Relative urls в tiny_mce

      17:04, 21 января 2008 ( )

      От читателя поступил вопрос, как сделать так, что бы в браузере изображений url были бы не вида ../../images, а /images ?

      Очень просто, достаточно добавить в вызов tiny_mce  в контроллере такие параметры:

      :relative_urls=>false,
      :convert_urls=>true
      и ваши url будут вида /images  и т.д.
      хотя, при правильной разработке, этого не требуется. 

      Rails: ActiveSearch plugin

      11:32, 27 декабря 2007 ( )

      Плагин ActiveSearch просто чудо какое-то, большое человеческое спасибо julik.nl за его разработку.

      Штука сия облегчает и без того легкую жизнь ;-) rails-девелопера при разработке простейшего поиска по записям базы.

      Идея сего плагина такова: используя разнообразные инексаторы исходя из планируемого объема данных вырабатываем оптимальный подход к поиску по записям базы.

      Например, мой сайт содержит весьма небольшой объем данных, и, как рекомендует Julik, при объеме до 500 записей целесообразно использовать простейший индексатор ActiveSearch::LikeIndexer.

      Для того чтобы поиск заработал необходимо:

      1. Установить плагин:

      cd project

      ruby script/plugin install http://julik.textdriven.com/svn/tools/rails_plugins/simple_search/ 

      2. Добавить поле searchable к таблицам, по которым вы собираетесь искать. Целессобразно сделать это через миграцию:

        def self.up
          add_column("products","searchable", :text)
          add_column("categories","searchable", :text)
         
       end 

      def self.down   
          remove_column("products","searchable")
          remove_column("categories","searchable")
        end

      3. В моделях Product и Category добавляем указание к индексированию:

         indexes_columns :title, :short_description, :long_description

      4.  запустить начальное индексирование:

      консоль rais:

      ruby script/console

      в консоли

      Products.indexers[0].rebuild!

      Category.indexers[0].rebuild!

      Все, теперь мы можем достаточно быстро искать по записям:


      @found_categories = Category.indexers[0].query(@query)
      @found_products = Product.indexers[0].query(@query)

       Можно искать и по Category.find_using_term("query"), как в документации указано, но, видимо такое использование предполагает использование сразу нескольких индексаторов.

       

      Таким образом плагин может быть использован с:

      1. индексом в поле searchable в каждой модели, по которой будет производиться поиск.

      2. индексом в отдельной таблице

      3. индексом через плагин ferret 

      способы индексации расположены в порядке увеличения количества данных для поиска.

      Удобно, Julik, u made my day. 

       

      Аяксовое дерево с drag-n-drop на Ruby on Rails

      10:58, 17 декабря 2007 ( )
      А вот, собственно, и ссылка на субж. http://ajaxonrails.wordpress.com/category/ajax-tree/
       
      страницы:
       1 
      2 3 4 5 6 ... >|
      © Максим Прокопов 2005-2016 О сервере