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/


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

2013-07-17 Thread Alexander Hartmaier
Hi,
generally if you have some classes that have a common number of attributes 
and/or methods you'd move those in a base class or in more recent time 
construct it out of roles which are like lego blocks.

For your specific case https://metacpan.org/module/CatalystX::Resource looks to 
be the solution you are looking for.

BR Alex

On 2013-07-17 04:05, cc loo 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_Chainshttp://search.cpan.org/%7Eether/Catalyst-Manual-5.9007/lib/Catalyst/Manual/Tutorial/04_BasicCRUD.pod#Refactor_to_Use_a_%27base%27_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.ukmailto: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/




***
T-Systems Austria GesmbH Rennweg 97-99, 1030 Wien
Handelsgericht Wien, FN 79340b
***
Notice: This e-mail contains information that is confidential and may be 
privileged.
If you are not the intended recipient, please notify the sender and then
delete this e-mail immediately.
***
___
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/


[Catalyst] How to avoid repeating methods in controllers ?

2013-07-16 Thread cc loo
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/