Часто встает задача заполнения баз данных «рыбой», т.е. случайно сгенерированными данными,
похожими на настоящие.
К таким данным относятся:
- ФИО.
- Почтовые адреса (индекс, город, улица, дом, квартира).
- Телефоны.
- 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.
Автор: Олег Дашевский, “#{%w(Oleg Dashevskii).join(’’).downcase}@gmail.com”