Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Magpie::Constants exports its constants weirdly. #1

Open
tobyink opened this issue Jul 30, 2012 · 2 comments
Open

Magpie::Constants exports its constants weirdly. #1

tobyink opened this issue Jul 30, 2012 · 2 comments
Assignees

Comments

@tobyink
Copy link
Member

tobyink commented Jul 30, 2012

Currently use Moose; use Magpie::Constants; works, but use Magpie::Constants; use Moose; does not work. This is down to the highly unconventional way that Magpie::Constants exports its constants.

Why not just...

package Magpie::Constants;
use constant => {
   OK       => 100,
   DECLINED => 199,
   # etc
};
use Sub::Exporter -setup => {
   exports => [qw(OK DECLINED ...)],
   groups  => {
      default => [qw(OK DECLINED ...)],
   },
};
1;

Using Sub::Exporter also allows people to rename the constants easily:

use Magpie::Constants -all => { -prefix => 'MAGPIE_' };
sub GET { return MAGPIE_OK }

Using Sub::Exporter would also behave more sanely in conjunction with namespace::autoclean.

@ubu
Copy link
Member

ubu commented Nov 22, 2012

This is just me trying to avoid yet another dependency but I think Sub::Exporter is req'd by Moose anyway so it's silly not to. Assigning this to myself.

@ghost ghost assigned ubu Nov 22, 2012
@tobyink
Copy link
Member Author

tobyink commented Nov 22, 2012

Yes, Moose::Exporter is based on Sub::Exporter.

perigrin added a commit that referenced this issue Mar 3, 2013
Magpie::Constants was DIYing an Exporter unneccessarily. This fixes it
to use Sub::Exporter which is already brought in by Moose. This should
close bug #1 reported by tobyink.

Additionally we use some of the more advanced Sub::Exporter features to
allow adding custom HTTP methods beyond the core set defined by the
W3C/IETF.

    use Magpie::Constants extra_http_methods => [qw(FOO BAR BAZ)] };

or

    use Magpie::Constants  HTTP_METHODS => {
                                extra_http_methods => [qw(FOO BAR BAZ)]
                            };

Should both now work. This closes bug #4 reported by tobyink.

Tests are left as a lemma for the reader (currently).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants