Метка «ruby» - 14

В прошедшие выходные (13 и 14 октября) мы с aishek и еще двумя нашими коллегами участвовали в хакатоне Rails Rumble 2012. По условиям конкурса за 48 часов нужно задеплоить готовое Rails-приложение.

Надо сказать, что кроме выпитого ящика пива и прочего фана мы получили действительно хороший опыт.
Читать полностью »

GitFM – рекомендации Github репозиториев

Gitfm.com – сервис персональных рекомендаций Github репозиториев на основе коллаборативной фильтрации starred репозиториев пользователя.

Под катом описание архитектуры и двухдневная хроника, т.к. проект был создан с нуля за 48 часов в рамках конкурса RailsRumble2012.
Читать полностью »

Есть интересная задача: есть массив целых чисел. Числа идут подряд от 1 до k. Но в
массиве пропущены два числа. Как найти эти числа?

Решил поделиться своим решением и реализацией (на Ruby) самого простого из них (еще два приведу в виде алгоритмов).

Способ 1.
Читать полностью »

Добрый вечер, уважаемые посетители конференций RailsClub.

В сентябре мы провели нашу очередную конференцию. Хотим искренне поблагодарить всех участников, пришедших на наше мероприятие.

В этот раз нас собралось действительно много. Я рад, что увидел много новых лиц. По моим ощущениям, процентов 80 из пришедших ребят — мне не знакомы. Это значит, что наше сообщество стремительно растет. И я очень рад тому, что railsclub вносит свой вклад в развитие сообщества и способствует данному росту.

Наши мероприятия продолжаются. Впереди нас ждет секция railslub'а на highload'е и конференция RailsClub'Ульяновск.

Друзья, простите, пожалуйста, за некоторые задержки в публикации материалов конференции. Наконец, нам удалось собрать все вместе.

Фотографии:

Конференция — www.facebook.com/media/set/?set=a.282688708508940.59084.115204928590653
AfterParty — www.facebook.com/media/set/?set=a.283311401780004.59279.115204928590653

Видео — railsclub.ru/materials/video_2

Презентации — railsclub.ru/files/presentations/railsclub_moscow_2012.zip

Еще раз благодарим наших спонсоров и всех, кто помогал нам.

Читать полностью »

В четверг 4 октября в Бизнес Инкубаторе «Ингрия» прошла первая встреча Saint Petersburg Ruby User Group. Хотелось бы провести некую ретроспективу мероприятия, подвести итоги, собрать мнения и рассказать о дальнейших планах.
Читать полностью »

image

О чём это я?

Помните Presto?

Очень удачный фреймворк в плане скорости и простоты но менее удачный в плане архитектуры и маркетинга.

Так вот, Espresso это возрождение Presto.

Но обо всём по порядку.

Читать полностью »

Сайт сервиса довольно функционален и позволяет проводить автоматические
тесты/сборки легко и непринуждённо.

Но он больше подходит для ситуаций когда под рукой нет любимого терминала.

А вот когда мы в своём амплуа, хочеться работать по полной!

Для этого и создан консольный клиент который стирает границы
между CI сервисом и вашей средой обитания созидания.

Читать полностью »

Большинство Paste сервисов(pastebin, pastie, github gists) справляются с задачей на ура.

Только вот задача у них довольно таки тривиальная — расшарить тривиальный кусок кода.

А исполнять этот код нужно в голове или копировать/вставить, с условием того что ваша голова или рабочее окружение поддерживают язык на котором расшаренный код написан.

JSFiddle пошёл дальше разрешив исполнять javascript код не в голове а в браузере.

CIBox пошёл ещё дальше разрешив исполнять серверные языки и получать результат в браузере в реальном времени.

На сегодня есть поддержка Ruby, Python и Node.js

Continuous Integration?

Естественно! Код можно исполнять на всех мажорных версиях поддерживаемых языков/фреймворков.

А также можно загружать код из GitHub репозиториев или с помощью rsync

Получается виртуальное окружение с довольно мощным потенциалом. Можно например с мобильного исправить код приложения, протестировать «до дыр» и загрузить на production сервер.

Читать полностью »

Недавняя статья про WebDriver напомнила мне немного рассказать об используемом нами комплексе для автоматизации тестирования Web-приложений.

Итак, в основе тестов лежит лежит связка RSpec + Watir WebDriver (для Rails-приложений более уместно будет взглянуть в сторону Capybara). При поддержке Bundler и локальных WebDrivers осуществляется лёгкая инсталляция на рабочем месте тестировщика (установить Ruby 1.9, Rubygems, Bundler, и выполнить bundle install). Исходник Gemfile:

source :rubygems

gem "watir-webdriver", "~>0.6.1"
gem "rspec-core", "~> 2.0"
gem "rspec-expectations", "~> 2.0"
gem "rr", "~> 1.0"
gem "ci_reporter", "~> 1.7"

За счет гема ci_reporter осуществляется интеграция с Jenkins CI, а за счёт гема parallel_tests и Selenium Grid распараллеливание тестов (на сегодня parallel tests пока не используются в production).

Вот пример теста:

describe "FirstSite" do
  before(:all) do
    site! "first"
  end

  # returns true on success; otherwise false.
  def login_as(data)
    browser.rel_goto "/"
    browser.title.should include 'example.com'
    browser.text_field(:id => 'login').set data[:login]
    browser.text_field(:id => 'password').set data[:password]
    submit_button = browser.button(:id => 'submit')
    submit_button.click
    browser.url =~ %r{/welcome$}
  end

  def logout
    browser.rel_goto "/"
    browser.button(:id => 'logout').click
  end

  describe :login do
    auth = fixture :auth

    describe :successful do
      after(:each) do
        logout
      end

      auth.keys.select { |key| key.kind_of?(Symbol) }.each do |key|
        next  if key == :wrong

        it "Logging in as #{key} should be OK" do
          login_as(auth[key]).should be_true
        end
      end
    end

    describe :wrong do
      it "Logging in with wrong credentials should fail" do
        login_as(auth[:wrong]).should_not be_true
      end
    end
  end
end

Тестируемые сайты и способ тестирования определяются в настройках.Читать полностью »

в 10:14, , рубрики: ror 3, ruby, ruby on rails, STI, метки: , , ,

Перед тем как начать повествование, вспомним что же такое STI.

STI (Single Table Inheritance) — паттерн проектирования, который позволяет перенести объектно-ориентированное наследование на таблицу реляционной базы данных. В таблице БД должно присутствовать поле идентифицирующее название класса в иерархии. Зачастую, в том числе в RoR, поле называют type.

С помощью данного паттерна можно создавать объекты, которые содержат идентичный набор полей, но имеют разное поведение. Например, таблица пользователей, содержащая имя, логин и пароль, но использовалось два класс пользователей Admin, Visitor. Каждый класс, содержит как унаследованны так и индивидуальный набор методов. Определение того, какой класс будет создан и используется поле type, имя поля может быть переопределено.

Таким образом, если рассматривать канонический случай: имена классов хранятся в одной таблице с данными.
Неканоническое STI
Но может случится иная ситуация…
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js