MT触ることが多いので、
オブジェクトながめてます。
http://www.sixapart.jp/movabletype/manual/object_reference/archives/mt_blog.html
サンプルコピペでは動かない。
MT/objtest/MT_Blog.pl
#!/usr/bin/perl use warnings; use strict; use utf8; binmode STDERR, ":raw :encoding(euc-jp)"; binmode STDOUT, ":raw :encoding(euc-jp)"; use lib qw(../lib); use MT::Blog; my $blog = MT::Blog->load($blog_id); $blog->name('Some new name'); $blog->save or die $blog->errstr;
同じエラーが出てる人がいました。
MovableType4でのエラー > mitzの津田ブログ
use lib qw(../lib);
書き換えた
use lib qw(../lib ../extlib);
先ほどのエラーは消えましたが。
違うエラー出た。
$ perl MT_Blog.pl Can't locate object method "instance" via package "MT::ObjectDriverFactory" at ../lib/MT/Object.pm line 862.
MT/lib/MT/Object.pm
MT::ObjectDriverFactory でgrepしたら3箇所ある
139 $props->{get_driver} ||= sub { 140 require MT::ObjectDriverFactory; 141 my $coderef = MT::ObjectDriverFactory->driver_for_class($class); 142 $class->get_driver($coderef); 143 return $coderef->(@_); 144 };
860 sub driver { 861 my $class = shift; 862 return $DRIVER ||= MT::ObjectDriverFactory->instance 863 if UNIVERSAL::isa($class, 'MT::Object'); 864 my $driver = $class->SUPER::driver(@_); 865 return $driver; 866 }
1290 $props->{get_driver} ||= sub { 1291 require MT::ObjectDriverFactory; 1292 my $coderef = MT::ObjectDriverFactory->driver_for_class($class); 1293 $class->get_driver($coderef); 1294 return $coderef->(@_); 1295 };
エラーの出てるところだけrequireしてない
追加したらエラー消えた。
860 sub driver { 861 my $class = shift; +++ require MT::ObjectDriverFactory; 862 return $DRIVER ||= MT::ObjectDriverFactory->instance 863 if UNIVERSAL::isa($class, 'MT::Object'); 864 my $driver = $class->SUPER::driver(@_); 865 return $driver; 866 }
本体書き換えたけど、影響ないか心配。
誰か分かる人いたら教えてください。