Vydumschik - библиотека для генерации случайных данных

April 3, 2011 gem Ruby rubygems vydumschik

В RailsWare я познакомился с подходом, который мне понравился – делать Rake-команду для наполнения базы случайными, ничего не значащими значениями, для того чтобы сайт не был “пустым”. Речь идет, разумеется, о тестовом сайте.

При написании такой команды требуется создавать много “рыбного” текста, да и не только текста, а названий, имен и прочего.

Есть хороший гем ffaker, создающий случайные английские имена, адреса, и тексты. А для русского языка ничего такого не было. Вот я и написал Выдумщика.

Что умеет Выдумщик?

Случайные имена

Случайные имена, фамилии и отчества, мужского, женского или случайного пола. Набор имен огромный – я намеренно не выбрасывал всякую экзотику.

> Vydumschik::Name.first_name
"Филипп"

> Vydumschik::Name.middle_name(:female)
"Артёмовна"

> Vydumschik::Name.surname
"Шарапов"

> Vydumschik::Name.full_name
"Королёва Устиния Панкратиевна"

Случайные адреса

Случайные названия улиц. Случайные уличные адреса. Использована тысяча наиболее популярных названий улиц бывшего СССР.

> Vydumschik::Address.street
"ул. Парниковая"

> Vydumschik::Address.street_address
"ул. Линейная, д. 50, кв. 9"

> Vydumschik::Address.street_address
"ул. Нефтяников, 36-а/14"

> Vydumschik::Address.street_address
"ул. Войкова, д. 1"

Лорем ипсум

Алгоритм моего “лорема” дает не такие красивые результаты, как классический Lorem Ipsum, который использует фиксированный текст и хорошо работает за счет отсутствия в английском языке окончаний.

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

> Vydumschik::Lorem.word
"жиганир"

> Vydumschik::Lorem.sentence
"Инекуле тято авитудаз еде агар."

> Vydumschik::Lorem.paragraph
"Орэнет емех рахетик копорун хетег динава. Оте балале утир лелунака азуло 
илувап. Татиройы отедечу ыжа омотокях мизота. Исяр одокыдика оненен итотип 
осякелоза ув онежорес ресовинон. Уто ате обю иро авушытяса енесета ран 
конекесуг омат. Хованово диномиг лодер ивен косе еламалип са тин. Ойон 
анаро совизоцюч деке есе дажочи. Екечовено лета рак оня онал."

(Да, мне очень хотелось сделать гем с буквой sch в названии.)

Есть предложения по расширению возможностей Выдумщика? Буду рад узнать.

Buy Me a Coffee at ko-fi.com