EPrints Technical Mailing List Archive

Message: #00735


< Previous (by date) | Next (by date) > | < Previous (in thread) | Next (in thread) > | Messages - Most Recent First | Threads - Most Recent First

[EP-tech] Re: Can_call for nested config


OK - it looks like the can_call works OK, but actually calling (with some data) it doesn't.
Doing this:

if ( $repository->can_call( 'ethos', $institution, 'thesis_type_match' ) ){
	print "CAN CALL!\n";
	print $repository->call( 'ethos', $institution, 'thesis_type_match', 'some data' );
}

Results in:
CAN CALL!
Undefined or invalid function: ethos

Any clues?

Cheers,
John
 

-----Original Message-----
From: eprints-tech-bounces@ecs.soton.ac.uk [mailto:eprints-tech-bounces@ecs.soton.ac.uk] On Behalf Of Sebastien Francois
Sent: 15 June 2012 16:03
To: eprints-tech@ecs.soton.ac.uk
Subject: [EP-tech] Re: Can_call for nested config

Hi,

I've copied / pasted your example which just works on my local 3.3.9 
install.

Try debugging perl_lib/Repository.pm::can_call and see where it fails.

Seb.

On 15/06/12 15:44, John Salter wrote:
> I'm trying to do things the *right* way, using can_call
>
> I have a config file that includes something like:
> my $ethos = {};
> $c->{ethos} = $ethos;
>
> $ethos->{'leeds'}->{'thesis_type_match'} = sub
> {
> 	#stuff
> };
>
> $ethos->{'sheffield'}->{'thesis_type_match'} = sub
> {
> 	#other stuff
> };
>
> In my code, I'm trying to do something like:
> $institution= 'leeds';
> if ( $repository->can_call( 'ethos', $institution, 'thesis_type_match' ) ){
> 	#stuff
> };
> But it isn't working.
>
> Should I be able to do this?
> If I just use:
> $c->{'thesis_type_match'} = sub
> {
> 	#stuff
> }
> It works - but that would mean config wasn't contained in 'ethos'..?

*** Options: http://mailman.ecs.soton.ac.uk/mailman/listinfo/eprints-tech
*** Archive: http://www.eprints.org/tech.php/
*** EPrints community wiki: http://wiki.eprints.org/