[Catalyst] how to reuse Catalyst Schema for non-web purposes?

kakimoto at tpg.com.au kakimoto at tpg.com.au
Thu Apr 23 02:47:19 GMT 2009


Hello, Simon,

  Your points have good weight for thoughts. In fact, coming from many
backgrounds pre-Catalyst and pre-MVC (ie many a times, the templating
system ie Mason would do the job of both controller and view
incorporating the business logic), I have been able to write regression
tests to test methods within an ORM.

 When I first started using Catalyst, I looked at the tutes and so forth
and it seemed to me that the only form of testing is just web based (ie
using web robots like Test::WWW::Mechanize::Catalyst).
Whilst that allowed a good test of the interface and functionality as a
whole(akin a blackbox), I missed the days when I had to develop
something without the web front end and have it work for both web and
back end(ie via scripts).


 Your arguments here have raised a direction for me to put my business
logic into the model component of my app.
Nevertheless, can I ask for some references to examples of business
logic being written in the model? I can't seem to observe any from the
Catalyst tutes.

thank you

K. akimoto


Quoting Simon Wilcox <simonw at digitalcraftsmen.net>:

> On 22/4/09 23:03, kakimoto at tpg.com.au wrote:
> > IMO the best place for your business logic is the controller.
> 
> Then you're wrong, at least in the eyes of many people.
> 
> http://en.wikipedia.org/wiki/Model-view-controller
> 
> The Controller is just a layer that converts the input to something
> that 
> can be passed to the Model and then sends the output back to the user
> 
> via a View.
> 
> You *can* put all your logic in the controller but typically you will
> 
> end up with two problems:
> 
> 1. Your app is tightly bound to a web framework and adding some other
> 
> sort of user interaction, or extending the application code elsewhere
> 
> becomes difficult, which is what started this thread isn't it ?
> 
> 2. It becomes hard to test as you need to have the web framework
> running 
> to run the tests. You should be able to test all of the use cases & 
> business interactions outside of the web framework. If you can't,
> then 
> that's a code smell and an indicator that you have too much going on
> in 
> your Controller classes.
> 
> The Catalyst Model classes should really be a very thin shim over the
> 
> top of your DBIx::Class Schema objects which is where all the 'heavy
> 
> lifting' of the business process takes place.
> 
> Hope that makes sense,
> 
> Simon.
> 
> 
> 






More information about the Catalyst mailing list