Re: [Catalyst] How to avoid repeating methods in controllers ?

2013-07-21 Thread Robert Rothenberg
I prefer to put as much code as I can (especially business logic code)
into Moose role methods. This makes it easier to share code among multiple
controller methods, and it makes the code a little easier to read as well
as test (since the role methods don't require the Catalyst server to be
running per se: the context can be simulated using
CatalystX::Test::MockContext).

If the code really does require a controller, I create a base controller
class that uses configuration parameters from $self-{config}, and then
have the actual controllers use something like

  __PACKAGE__-config(
table = 'foo',
..
  );






On Wed, Jul 17, 2013 at 3:05 AM, cc loo mobile.cc...@gmail.com wrote:

 Hi all, i'm a network engineer by trade and is picking up perl/catalyst to
 upgrade my skills :)

 I have a couple of controllers each having same methods, chaining off
 their respective 'base' methods.

 I build my controllers off this guide here:
 http://search.cpan.org/~ether/Catalyst-Manual-5.9007/lib/Catalyst/Manual/Tutorial/04_BasicCRUD.pod#Refactor_to_Use_a_'base'_Method_to_Start_the_Chains


 So, i have

 controller_a with a method 'list' , chaining off 'base'
 controller_b with a method 'list', chaining off' 'base'

 Is there a more graceful manner of inheriting this method instead of
 copy/paste on every controller i have ?


 ___
 List: Catalyst@lists.scsys.co.uk
 Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
 Searchable archive:
 http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
 Dev site: http://dev.catalyst.perl.org/


___
List: Catalyst@lists.scsys.co.uk
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
Dev site: http://dev.catalyst.perl.org/


Re: [Catalyst] How to avoid repeating methods in controllers ?

2013-07-21 Thread Hernan Lopes
you might want something like this, where one class defines common
attributes, and other classes extend it, for example


package CommonAttributes;
use Moose;

has name = (
is = 'rw',
);

sub jump {
my ( $self, $c ) = @_;
warn JUMP;
}

1;

package ControllerOne;
use Moose;
extends qw/CommonAttributes/;

sub method_controller_one {
my ( $self ) = @_;
warn method from controller 1;
}

1;

package ControllerTwo;
use Moose;
extends qw/CommonAttributes/;

sub method_controller_two {
my ( $self ) = @_;
warn method from controller 2;
}

1;

package MyApp;

my $one = ControllerOne-new( name = 'Name: One' );
$one-method_controller_one();
warn $one-name;
$one-jump;


my $two = ControllerTwo-new( name = 'Name Two:' );
warn $two-name;
$two-method_controller_two();
$one-jump;



On 7/21/13, Robert Rothenberg rob...@gmail.com wrote:
 I prefer to put as much code as I can (especially business logic code)
 into Moose role methods. This makes it easier to share code among multiple
 controller methods, and it makes the code a little easier to read as well
 as test (since the role methods don't require the Catalyst server to be
 running per se: the context can be simulated using
 CatalystX::Test::MockContext).

 If the code really does require a controller, I create a base controller
 class that uses configuration parameters from $self-{config}, and then
 have the actual controllers use something like

   __PACKAGE__-config(
 table = 'foo',
 ..
   );






 On Wed, Jul 17, 2013 at 3:05 AM, cc loo mobile.cc...@gmail.com wrote:

 Hi all, i'm a network engineer by trade and is picking up perl/catalyst
 to
 upgrade my skills :)

 I have a couple of controllers each having same methods, chaining off
 their respective 'base' methods.

 I build my controllers off this guide here:
 http://search.cpan.org/~ether/Catalyst-Manual-5.9007/lib/Catalyst/Manual/Tutorial/04_BasicCRUD.pod#Refactor_to_Use_a_'base'_Method_to_Start_the_Chains


 So, i have

 controller_a with a method 'list' , chaining off 'base'
 controller_b with a method 'list', chaining off' 'base'

 Is there a more graceful manner of inheriting this method instead of
 copy/paste on every controller i have ?


 ___
 List: Catalyst@lists.scsys.co.uk
 Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
 Searchable archive:
 http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
 Dev site: http://dev.catalyst.perl.org/




___
List: Catalyst@lists.scsys.co.uk
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
Dev site: http://dev.catalyst.perl.org/