Skip to content
shootnix edited this page Jan 18, 2012 · 1 revision

НАЗВАНИЕ

Mojolicious::Plugin::AnyData

ВЕРСИЯ

версия 1.20

DESCRIPTION

Mojolicious::Plugin::AnyData позволяет использовать перл-структуры, такие, как массивы и хэши, подключаясь к ним так, как если бы это была база данных.

ЧЕРНОВИК

use Mojolicious::Plugin::AnyData

sub startup {
my $self = shift;

$self->plugin(any_data => {
    load_data => {
            cars => [
	    ['id', 'model'],
	    [ 1, 'Honda'], ],
	},
    },
    helper => 'db',
});

# ... или
$self->plugin(any_data => {
    func => ['cars', 'XML', 'cars.xml', 'ad_import'],
});

# ... или
$self->plugin(any_data => {
    load_data => 'my_test_data.conf'
});
}

НАСТРОЙКА

Обязательных параметров, которые нужно указывать в момент подключения плагина, нет. Все данные можно добавить в любой момент времени в любом месте кода. Если вы не укажете имя хелпера, через который будет осуществляться доступ к хендлеру базы данных, он будет назначен по-умолчанию - 'db'.

Чтобы сменить доступ к базе данных с тестовой структуры AnyData на вашу продакшен-модель, достаточно сменить режим вашего приложения на "продакшен".

app->mode('production');

ХЕЛПЕРЫ

Mojolicious::Plugin::AnyData дает доступ ко всем методам и атрибутам класса DBD::AnyData и DBI.

db (или как-то еще)

Этот хелпер создается с именем 'db' или как-то иначе, на ваше усмотрение, для доступа к хендлеру базы данных.

any_data

This helper gives access to a plugin instance and provides the following methods:

Этот хелпер осуществляет доступ к экземпляру плагина и позволяет выполнять ряд методов:

МЕТОДЫ

load_data

It loads data from perl struct (hashref) into the memory. Also, it can support several tables at the same time. You can use this method on startup, like a simple config option:

Загружает данные из perl-структуры (ссылка на хеш) в память. Поддерживает использование нескольких таблиц за раз. Вы можете использовать этот метод в момент подключения плагина:

$self->plugin(any_data => {
load_data => {
    artists => [
	['id_artist', 'artist_name'],
	[          1, 'Metallica'],
	[          2, 'Dire Staits'],
    ],
    releases => [
	['id_release', 'release_name',  'id_artist'],
	[           1, 'Death Magnetic',          1],
	[           2, 'Load',                    1],
    ],
},
});

Или в любом другом месте программы, через хелпер any_data

app->any_data->load_data({
artists => [
    ['id_artist', 'artist_name'],
    [          1, 'Metallica'],
    [          2, 'Dire Staits'],
],
releases => [
    ['id_release', 'release_name',  'id_artist'],
    [           1, 'Death Magnetic',          1],
    [           2, 'Load',                    1],
],
});

You can also load data stuctures from a separate config, using Mojolicious::Plugin::Config:

Можно даже использовать отдельный конфиг-файл (используется Mojolicious::Plugin::Config для парсинга):

$self->plugin(any_data => {
load_data => 'test_data.conf',
helper    => 'db'
});

# или:

app->any_data->load_data('test_data.conf');

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

func

It provides a wrapper for the common DBD::AnyData::func method with one change: before loading new data, it will remove the table with the same name from the memory if it already exists.

Осуществляет враппер к методу DBD::AnyData::func, но с одной разницей: перед тем, как загрузить данные, удаляются таблицы, имеющие то же имя, что и загружаемые в этот момент:

$self->plugin(any_data => {
func => ['cars', 'XML', 'cars.xml', 'ad_import'],
});

# или, конечно же

app->any_data->func('cars', 'XML', 'cars.xml', 'ad_import');

СМОТРИТЕ ТАКЖЕ

Mojolicious, DBI, DBD::AnyData

АВТОР

Александр Пономарев, C<< shootnix@cpan.org >>

БАГИ

Пожалуйста, используйте следующие интерфейсы для багрепортов и предложений: https://github.com/shootnix/Mojolicious-Plugin-AnyData/issues https://github.com/shootnix/Mojolicious-Plugin-AnyData/.