2011-01-31 23 views
6

estoy usando Catalyst y DBIx::Class::Schema::Loader para crear mi modelo en el catalizador de esta manera:¿Cómo evito que DBIx :: Class :: Schema :: Loader agregue automáticamente InflateColumn :: DateTime en Catalyst?

script/myapp_create.pl model DB DBIC::Schema MyApp::Schema create=static overwrite_modifications=1 components=EncodedColumn dbi:mysql:mydb mydb pass 

Desafortunadamente el cargador ajusta automáticamente InflateColumn::DateTime como un componente por defecto, que no quiero. Quiero el valor bruto de la base de datos.

__PACKAGE__->load_components("InflateColumn::DateTime", "EncodedColumn"); 

¿Alguien me puede decir cómo prevenir esto?

Respuesta

6

Hombre, eso es molesto. Parece que no es posible obtener lo que quieres como es.

_build_loader_components en Catalyst::Helper::Model::DBIC::Schema lo agrega a menos que no tenga espacios de nombres ni espacio de nombres de conjunto de resultados. Empuja su lista adicional component= a eso.

my @components = $self->old_schema && (not $use_namespaces) ?() 
    : ('InflateColumn::DateTime');         

Así, Opciones-

  1. File a bug.
  2. Hazlo con dbicdump.

Esto debe ser lo que quería,

dbicdump -o dump_directory=./lib \ 
    -o components='["EncodedColumn"]' \ 
    -o use_namespaces=1 \ 
    -o overwrite_modifications=1 \ 
    MyApp::Schema dbi:mysql:foo user pass 

Y a continuación, sólo el modelo sencillo para envolver IT

script/myapp_create.pl model DB DBIC::Schema MyApp::Schema 

Actualización: llevó a cabo preserve_case como su ejemplo no lo utilizó y me gustaría mencionar, en aras de las mejores prácticas, que la contraseña no debe estar en el modelo o las clases de esquema. Debe estar en config y si está usando algo que lo permite, como mysql, debe estar configurado para leerse desde un archivo de configuración específico de DB con privilegios restringidos.

+1

Hola Ashley, eso es a lo que le tenía miedo, encontré ese código de ayuda pero no estaba seguro de si había alguna forma de evitarlo. Iré por el camino de dbicdump. Acabo de escribir un pequeño perl helper que vacia manualmente el esquema. No está mal. Gracias por mirar en esto. –

Cuestiones relacionadas