[MTOS-dev] Command-line rebuilds for MT 4.1?
Dan Sanderson
contact at dansanderson.com
Wed May 7 00:11:01 PDT 2008
Right, you've omitted the code necessary to store the tool outside of the MT
directory. Since the arguments to MT->new() don't appear to do anything,
that bit can be omitted. :)
Thanks for noting that set_up_app() returns the app instance, that's nice.
(MT::Tool was a late addition to my script.)
-- Dan
On Tue, May 6, 2008 at 5:23 PM, Hirotaka Ogawa <hirotaka.ogawa at gmail.com>
wrote:
> Dan,
>
> I can rewrite your code much simpler as like:
>
> #!/usr/bin/perl
>
> use strict;
> use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/lib" : 'lib';
> use MT::Bootstrap;
>
> package TestBuilder;
> use base qw( MT::Tool );
>
> sub main {
> my $class = shift;
> my $app = $class->set_up_app();
>
> require MT::Blog;
> my $iter = MT::Blog->load_iter;
> while ( my $blog = $iter->() ) {
> print "Rebuilding blog " . $blog->id . "...\n";
> $app->rebuild( BlogID => $blog->id )
> or die "Rebuild error: " . $app->publish_error();
> }
> }
>
> __PACKAGE__->main() unless caller;
>
> 1;
>
>
> On Wed, May 7, 2008 at 8:41 AM, Dan Sanderson <contact at dansanderson.com>
> wrote:
> > Hi all -
> >
> > I'm trying to put together a command-line rebuild tool that works with
> MT
> > 4.1. I've seen Tim's mt-rebuild and other build-related extensions, but
> so
> > far I haven't gotten the bootstrap code correct yet. I'm now using
> Mark's
> > MT::Tool (from SVN head), but so far it hasn't changed the equation.
> >
> > If someone already has a command-line rebuilder that works with MT 4.1,
> I'd
> > like to see it, but I'd still be interested in sussing this out for
> future
> > reference.
> >
> > What I have so far, based on mt-rebuild and MT::Tool:
> >
> >
> > #!/usr/bin/perl -w
> > use strict;
> >
> > my ($MT_DIR);
> > BEGIN {
> > # TODO: hard-coded MT_DIR for now
> > $MT_DIR = "../../dansanderson.com/blog/mt/";
> >
> > unshift @INC, $MT_DIR . 'lib';
> > unshift @INC, $MT_DIR . 'extlib';
> > }
> >
> > use lib qw( extlib lib );
> > use base qw( MT::Tool );
> > use MT;
> >
> > # TODO: borrowing this from MT::Tool so I can pass a Config param.
> > sub set_up_app {
> > require MT;
> > my $mt = MT->new( Config => $MT_DIR . 'mt-config.cgi',
> > Directory => $MT_DIR ) or die MT->errstr;
> >
> > $mt->{vtbl} = { };
> > $mt->{is_admin} = 0;
> > $mt->{template_dir} = 'cms';
> > $mt->{user_class} = 'MT::Author';
> > $mt->{plugin_template_path} = 'tmpl';
> > $mt->run_callbacks('init_app', $mt);
> >
> > return $mt;
> > }
> >
> > sub main {
> > my $class = shift;
> > my ($verbose) = $class->SUPER::main(@_);
> >
> > my $mt = MT->new( Config => $MT_DIR . 'mt-config.cgi',
> > Directory => $MT_DIR )
> > || die MT->errstr;
> >
> > require MT::Blog;
> > my $iter = MT::Blog->load_iter;
> > while ( my $blog = $iter->() ) {
> > print "Rebuilding blog " . $blog->id . "...\n";
> > $mt->rebuild( BlogID => $blog->id )
> > or die "Rebuild error: " . $mt->publish_error();
> > }
> > }
> >
> > __PACKAGE__->main() unless caller;
> >
> > 1;
> >
> > With my current blog, which is a reasonably fresh install of MT 4.1 (and
> 10
> > years of legacy data, woohoo):
> >
> > * Warning: "Odd number of elements in anonymous hash at
> [...]/MT/Blog.pm..."
> > referring to set_defaults(), $blog->set_values_internal({...}). This is
> > caused by MT->config('DefaultLanguage') not returning a value, which
> messes
> > up the whole hash. (I've been away from Perl enough to have been
> surprised
> > by this. :) ) Adding "DefaultLanguage en_US" to my config file fixes
> this,
> > but obviously this should not be necessary.
> >
> > * Warning: "Use of uninitialized value in hash element at
> > [...]/MT/Serialize.pm line 20", referring to new(), $_[0] being
> undefined.
> >
> > * Warning: "Use of uninitialized value in subroutine entry at
> > [...]/MT/Serialize.pm line 40", referring to unserialize(),
> > $ser->{thaw}->(@_).
> >
> > * Error: "Can't call method "new" on an undefined value at [...]/MT.pm
> lin
> > 442", referring to log(), $log_class->new(), where $log_class =
> > $mt->model('log').
> >
> > My apologies that I haven't given this the full debugger treatment yet
> to
> > get real stack traces, I'll do that if necessary (as time allows). Any
> > hints come to mind from the above? Anything obvious missing from my
> script?
> >
> > And FWIW, yes rebuilding from the web interface works fine, except for
> the
> > inability to rebuild 4000 pages without tripping on server errors every
> few
> > hundred pages. (I haven't gotten MT-Hacks' SmartRebuild working yet
> either,
> > but one thing at a time.)
> >
> > Thanks!
> > -- Dan
> >
> >
> > _______________________________________________
> > MTOS-dev mailing list
> > MTOS-dev at sixapart.com
> > http://www.sixapart.com/mailman/listinfo/mtos-dev
> >
> >
>
>
>
> --
> Hirotaka Ogawa
> http://twitter.com/ogawa
> http://as-is.net/blog/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.sixapart.com/pipermail/mtos-dev/attachments/20080507/9960fc4f/attachment.html
More information about the MTOS-dev
mailing list