4 SGN - Catalyst-based application to run the SGN website.
12 This is the main class for the Sol Genomics Network main website.
18 use namespace
::autoclean
;
21 $ENV{WEB_PROJECT_NAME
} = $ENV{PROJECT_NAME
} = __PACKAGE__
;
26 use Catalyst
::Runtime
5.80;
30 Does the roles L<SGN::Role::Site::Config>,
31 L<SGN::Role::Site::DBConnector>, L<SGN::Role::Site::DBIC>,
32 L<SGN::Role::Site::Exceptions>, L<SGN::Role::Site::Files>,
33 L<SGN::Role::Site::Mason>, L<SGN::Role::Site::SiteFeatures>,
34 L<SGN::Role::Site::TestMode>
44 +SGN
::Authentication
::Store
46 +SGN
::Role
::Site
::Config
47 +SGN
::Role
::Site
::DBConnector
48 +SGN
::Role
::Site
::DBIC
49 +SGN
::Role
::Site
::Exceptions
50 +SGN
::Role
::Site
::Files
51 +SGN
::Role
::Site
::Mason
52 +SGN
::Role
::Site
::SiteFeatures
53 +SGN
::Role
::Site
::TestMode
62 # configure catalyst-related things. in general, things should not be
63 # added here. add them to SGN.conf, with comments.
69 disable_component_resolution_regex_fallback
=> 1,
71 default_view
=> 'Mason',
73 # Static::Simple configuration
74 'Plugin::Static::Simple' => {
75 dirs
=> [qw
[ css s static img documents static_content data
]],
78 'Plugin::ConfigLoader' => {
81 USERNAME
=> sub { (getpwuid($>))[0] },
83 GROUPNAME
=> sub { (getgrgid($)))[0] },
87 # configure SGN::Role::Site::TestMode. These are the
88 # configuration keys that it will change so that they point into
90 'Plugin::TestMode' => {
91 test_data_dir
=> __PACKAGE__
->path_to('t','data'),
96 cluster_shared_tempdir
101 intron_finder_database
118 'Plugin::Authentication' => {
119 default_realm
=> 'default',
123 class => '+SGN::Authentication::Credentials',
127 class => "+SGN::Authentication::Store",
128 user_class
=> "+SGN::Authentication::User",
129 ### role_column => 'roles',
135 ( $ENV{SGN_TEST_MODE
} ?
( test_mode
=> 1 ) : () ),
139 # on startup, do some dynamic configuration
140 after
'setup_finalize' => sub {
143 $self->config->{basepath
} = $self->config->{home
};
145 # all files written by web server should be group-writable
148 # update the symlinks used to serve static files
149 $self->_update_static_symlinks;
154 sub _update_static_symlinks
{
157 # symlink the static_datasets and
158 # static_content in the root dir so that
159 # Catalyst::Plugin::Static::Simple can serve them. in production,
160 # these will be served directly by Apache
162 # make symlinks for static_content and static_datasets
164 map [ $self->config->{$_.'_path'} =>
165 $self->path_to( $self->config->{root
}, $self->config->{$_.'_url'} )
167 qw( static_content static_datasets );
169 for my $link (@links) {
171 my $l1_rel = $link->[1]->relative( $self->path_to );
172 $self->log->debug("symlinking static dir '$link->[0]' -> '$l1_rel'") if $self->debug;
175 symlink( $link->[0], $link->[1] )
176 or die "$! symlinking $link->[0] => $link->[1]";
182 L<SGN::Controller::Root>, L<Catalyst>
190 This library is free software. You can redistribute it and/or modify
191 it under the same terms as Perl itself.