Ryba

Введение

Часто встает задача заполнения баз данных «рыбой», т.е. случайно сгенерированными данными, похожими на настоящие.

К таким данным относятся:

  • ФИО.
  • Почтовые адреса (индекс, город, улица, дом, квартира).
  • Телефоны.
  • E-mail адреса.
  • Названия.
  • «Просто текст» для больших текстовых полей.

Есть gemы, умеющие генерировать такие данные на английском: faker, random_data и другие.

Ryba — попытка создать аналогичный генератор для русского языка: русские имена, адреса и т.д.

Библиотека находится в активной разработке. На данный момент реализованы:

  • Генерация имен людей.
  • Генерация телефонов.
  • Генерация адресов.
  • Генерация имен компаний.

Ниже описан интерфейс для реализованных возможностей.

Генерация имен людей

Методы из Ryba::Name.

Ryba::Name.first_name(male = nil) — случайное имя.

Ryba::Name.middle_name(male = nil) — случайное отчество.

Ryba::Name.family_name(male = nil) — случайная фамилия.

Ryba::Name.full_name(male = nil) — случайное ФИО (например, “Щетинин Камилл Ростиславович”).

Параметр male указывает пол (true — мужской, false — женский). Если параметр не указывать, будет выбран случайный пол.

Чтобы получить имена для одного пола, можно воспользоваться методом Ryba::Name.gender, возвращающим случайный пол. Либо простым вызовом:


  gender = Ryba::Name.gender
  first_name = Ryba::Name.first_name(gender)
  family_name = Ryba::Name.family_name(gender)

…либо с помощью блока


  Ryba::Name.gender do |gender|
    first_name = Ryba::Name.first_name(gender)
    family_name = Ryba::Name.family_name(gender)
  end

Генерация телефонов

Метод Ryba::PhoneNumber.phone_number.


  >> Ryba::PhoneNumber.phone_number
  => "2-26-47"
  >> Ryba::PhoneNumber.phone_number
  => "431-15-94"
  >> Ryba::PhoneNumber.phone_number
  => "8 (87829) 9-45-53"
  >> Ryba::PhoneNumber.phone_number
  => "5515328"
  >> Ryba::PhoneNumber.phone_number
  => "(2397) 94 78 14"

Генерация адресов

Методы из Ryba::Address.

Ryba::Address.index — случайный почтовый индекс (просто случайное число между 100000 и 700000). Пример: 149544.

Ryba::Address.city – случайный город России. Пример: “Выкса”.

Ryba::Address.full_city – случайный город с указанием региона, если это необходимо (город не является областным центром). Примеры:

  • “Брянская обл., г. Унеча”;
  • “г. Ярославль”;
  • “г. Москва”.

Ryba::Address.street – случайное название улицы. Примеры:

  • “ул. Бородина”;
  • “Красный пер.”;
  • “1 линия”.

Ryba::Address.address – случайный адрес. Примеры:

  • “ул. Щербакова 130-279”;
  • “ул. Невская, д.167, оф. 32”;
  • “Пушкинский пер., д. 36, кв.234”;
  • “ул. Базарная, д. 182к2, 5-й эт.”.

Ryba::Address.postal – случайный полный почтовый адрес. Примеры:

  • “242733, Рязанская обл., г. Спас-Клепики, ул. Куйбышева, 42-22”;
  • “471408, Челябинская обл., г. Златоуст, ул. Квартальная, 174-282”;
  • “195730, Воронежская обл., г. Калач, ул. Волжская, д. 175, кв. 7”;
  • “342656, Краснодарский край, г. Лабинск, ул. Ворошилова, д.153, кв.225”;
  • “209218, Сахалинская обл., г. Корсаков, ул. Мусоргского д. 65 кв. 206”;
  • “485245, г. Курган, ул. Литвинова д.173 кв. 245”.

Обратите внимание, что индекс не является настоящим и что в городе может не быть такой улицы (а на улице — такого дома, а в доме — такой квартиры).

Генерация имен компаний

Ryba::Company.name – случайное имя компании. Примеры:

  • ПродуктАэро
  • ТрастСеть
  • СалоКондитер
  • РезервФабрика
  • ДжинсКредит

Опция :solidity позволяет управлять длиной имени. Например, Ryba::Company.name(:solidity => 3) генерирует более солидное имя для компании:

  • ТехВоенКомбинатАкадем Групп
  • ТеплоМаркетТоргСинтез
  • ПрофСайтВалютСвязь
  • ТрейдингКоммерцКомТелеком
  • ГосСервисСпецСтанция

Лицензия

Библиотека ryba распространяется по лицензии MIT, см. файл MIT-LICENSE.

Автор: Олег Дашевский, “#Dashevskii).join(’’)[email protected]