Markdown-Pod
view release on metacpan or search on metacpan
t/mkd/2011-12-17.mkd view on Meta::CPAN
#!perl
package MyApp::Schema::ResultBase;
use Moose;
use MooseX::NonMoose;
use namespace::autoclean;
extends 'DBIx::Class::Core';
sub my_method {};
__PACKAGE__->meta->make_immutable;
1;
ê·¸ë¦¬ê³ ê²°ê³¼ í´ëì¤ìì ì´ `ResultBase`를 ììí©ëë¤.
#!perl
package MyApp::Schema::Result::Access;
....
- extends 'DBIx::Class::Core';
+ extends 'MyApp::Schema::ResultBase';
....
ì´, ê·¸ë°ë° ëê° ê±¸ë¦½ëë¤.
#!perl
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:8E8XDlgZJWsPmqTw/xP34A
ë§ìì¬! `ResultBase`를 ììíë ê²ì¡°ì°¨ë ì´ ë¬¸êµ¬ìì ëì´ê² ëë ë§í¸í ê³ ì¹ ìë ìë¤ì!
ì¤í¤ë§ í´ëì¤ ë¤íì ì¤ì íì¼ì ì¬ì©
-----------------------------------
ììì ì¤í¤ë§ í´ëì¤ë¥¼ ë¤íí ë 기ë긴 ìµì
ì´ ë¶ì 커맨ëê° ìììµëë¤.
ë°ì´í°ë² ì´ì¤ 구ì±ì´ ë°ëì´ì§ ëë§ë¤ ê·¸ 긴 커맨ë를
ì¼ì¼ì´ ë¶ì¬ë£ê¸° ìì¼ë¡ ë£ì´ì¼íë, ì¢ì ë°©ë² ê°ì§ë ììµëë¤.
ì°ì *기존 ëª
ë ¹*ì ì¬ì©ì ê·¸ë§ëëë¡ í©ëë¤.
ì»´í¬ëí¸ ë±ë¡ì´ë, `ResultBase` í´ëì¤ ì¤ì ì´ë 컬ë¼ì ìì± ì¶ê° ë±ë±
ë§¤ë² ì¤í¤ë§ í´ëì¤ ë¤íí ëë§ë¤ ìì ì ìí©ì ë§ê²
ì´ê²ì ê² ê°ì¡°(customize)í íìê° ììµëë¤.
ìì½ê²ë *기존 ëª
ë ¹*ì¼ë¡ í¸ì¶ëë [Catalyst::Model::DBIC::Schema][cpan-cmds] 모ëì ìí´ìë
[Catalyst::Helper::Model::DBIC::Schema][cpan-chmds]ë¡ë íì¬ ìí©ì í¤ì³ ëê°ê¸° íëëë¤.
ê·¸ëì ì 모ë ììì 본ì§ì ì¼ë¡ ì¤í¤ë§ í´ëì¤ ë¤íì ì¬ì©ëë 모ëì¸
[DBIx::Class::Schema::Loader][cpan-dbic-schema-loader]를 ì¬ì©í©ëë¤.
[DBIx::Class::Schema::Loader][cpan-dbic-schema-loader]ê° ì¤ì¹ëì´ ìì¼ë©´
`dbicdump`ë¼ë ëª
ë ¹ì´ ì¡´ì¬í ê²ì
ëë¤.
ì´ `dbicdump` 커맨ëì ì´ì ë¶í° ì´ ìí©ì íê°í ì¤ì íì¼ì ë´ê² ìµëë¤.
ì¤ì íì¼ì [Config::Any][cpan-config-any] 모ëë¡ ì²ë¦¬ëë¯ë¡
íìì ì°ì´ë ì´ë¤ íìì´ë¼ë ë¤ë£° ì ììµëë¤.
ì¬ì§ì´ë *í ì½ë* ìì ë ì¤ì ì¼ë¡ ì¬ì©í ì ììµëë¤.
ìëë `dbicdump` ì¤ì íì¼ì ìì ì
ëë¤.
#!perl
{
schema_class => "MyApp::Schema",
connect_info => {
dsn => $ENV{DB_DSN} || "dbi:mysql:test_db:127.0.0.1",
user => $ENV{DB_USER} || "test_user",
pass => $ENV{DB_PASSWORD} || "test_password",
mysql_enable_utf8 => 1,
},
loader_options => {
dump_directory => 'lib',
naming => { ALL => 'v8' },
skip_load_external => 1,
relationships => 1,
use_moose => 1,
only_autoclean => 1,
col_collision_map => 'column_%s',
result_base_class => 'MyApp::Schema::ResultBase',
overwrite_modifications => 1,
datetime_undef_if_invalid => 1,
custom_column_info => sub {
my ($table, $col_name, $col_info) = @_;
if ($col_name eq 'created_on') {
return { %{ $col_info }, set_on_create => 1 };
}
},
},
}
í목ë¤ì´ ë§ì¼ë¯ë¡ ì ë¶ ì¤ëª
íë ëì , ììì ë´ì°©íë 문ì ì ëí´ ì¶ë ¤ë³¼ê¹ì?
ì°ì `ResultBase` í´ëì¤ ë¬¸ì ì
ëë¤. `result_base_class` ê°ì ì§ì í´ ì¤ì¼ë¡ì¨
모ë ê²°ê³¼í´ëì¤ë¤ì `DBIx::Class::Core`ê° ìëë¼ `MyApp::Schema::ResultBase`를
ììë°ê² ë©ëë¤. ë¬¼ë¡ `MyApp::Schema::ResultBase`ë ì¤ì¤ë¡ ì ìí´ì¤ì¼ í©ëë¤.
ë¤ìì 컬ë¼ì ì»´í¬ëí¸ë¥¼ ì´ì©í íì¥ ë¬¸ì ì
ëë¤.
MD5 ì²´í¬ì¬ ê° ìëì ì¤ë³µëë ì½ë를 ë§¤ë² ì ì´ì£¼ì´ì¼ íìµëë¤.
ì´ë ê² ì¬ì©í ì»´í¬ëí¸ë¤ì ê²°ê³¼í´ëì¤ ë³ë¡ ì§ì íë ëì `ResultBase` í´ëì¤ë¥¼ ì½ì´ë¤ì
ëë¤.
ì¬ì¤ ì´ì²ë¼ `ResultBase`를 ëê³ ì¬ê¸°ì ì»´í¬ëí¸ë¥¼ ì¼ê´í´ì ì½ì´ë¤ì´ë ë°©ìì
Cookbook 문ìììë [ì¤íí¸ì
ìë í¥ìì ìí´ ê¶ì¥][dbic-cookbook-speed]íê³ ììµëë¤.
#!perl
package MyApp::Schema::ResultBase;
use Moose;
use MooseX::NonMoose;
use namespace::autoclean;
extends 'DBIx::Class::Core';
__PACKAGE__->load_components(qw/
InflateColumn::DateTime
TimeStamp
...
/);
__PACKAGE__->meta->make_immutable;
1;
ê·¸ë¦¬ê³ ì»´í¬ëí¸ì ì¬ì©ì ìí 컬ë¼ì ìì±ì
`custom_column_info` ìì±ì ì½ë를 ë±ë¡í´ ì§ì í ì ììµëë¤.
ìì ì½ëì²ë¼ ë±ë¡íë©´ `created_on`ì `TimeStamp` ì»´í¬ëí¸ë¥¼ ì¬ì©í기 ìí
ìì± ê°ì¸ `set_on_create`ì´ ëª¨ë ê²°ê³¼í´ëì¤ì ì¶ê°ë©ëë¤.
ì¤ì íì¼ì ì´ì©í ì¤í¤ë§ ë¤í
( run in 1.982 second using v1.01-cache-2.11-cpan-39bf76dae61 )