标签: catalyst

Perl Catalyst如何实施?

如何在Perl中实现以下代码?


sub add_item : Local {
     my ( $self, $c ) = @_;

     my $item_id = $c->req->param("item");

     push @{ $c->session->{items} }, $item_id;

  }

Run Code Online (Sandbox Code Playgroud)

我对add_item:Local部分感兴趣,因为我不认为那些是Perl关键字.

perl catalyst

2
推荐指数
1
解决办法
504
查看次数

为什么我的Catalyst应用程序重启速度慢?

每次我构建一个Catalyst应用程序时,我都会遇到应用程序缓慢(重新)启动的问题,延迟大约是10秒.今天我认为延迟是由以下几行引起的:

use lib '/home/zoul/opt/lib/perl/5.8';
use lib '/home/zoul/opt/share/perl/5.8';
use lib '/home/zoul/opt/lib/perl/5.8.8';
use lib '/home/zoul/opt/share/perl/5.8.8';
Run Code Online (Sandbox Code Playgroud)

这些行只在服务器上需要,因为我没有root权限并且安装了我的Perl模块~/opt.(我不能使用Apache的SetEnv模块,因为主机不支持它.因此我必须进入库路径App.pm.)在我的开发机器上展示了血腥延迟,路径不存在.

我的问题:(1)为什么线条造成这么大的延迟,大约7秒钟?(2)解决这个问题的好方法是什么?朴素有条件use不起作用:

if ($on_the_hosting_machine)
{
    use lib '…';
}
Run Code Online (Sandbox Code Playgroud)

我想我可以eval以某种方式,还是有更好的方法?

perl catalyst

2
推荐指数
3
解决办法
677
查看次数

如何将Moose对象转换为JSON以在Catalyst中使用?

我有一系列Moose对象,我希望通过Catalyst :: View :: JSON提供给JSON :: XS.JSON :: XS无法编码有福的数据结构.我知道MooseX :: Storage :: Format :: JSON可以 - 有点 - 做我想做的事; 但是,它似乎相当沉重.我正在寻找的与XXX.pm提供的信息基本相同.我只是想在原始数据结构递归unblessed所以(驱动程序是内部使用)可以显示它.JSON::XSJSON::AnyC:V:JSON

使用Catalyst::View::JSONJSON::XS使用Moose对象的最佳方法是什么?看来我有四个明显的选择:

  1. Catalyst::View::JSON工作与驼鹿对象,通过修补C:V:JSON的阅读freeze和完成的要求,如果曝光的参数是驼鹿对象.
  2. 补丁JSON::XS回退以返回值$obj->freeze if $obj->isa('Moose') && $obj->does('MooseX::Storage::Format::JSON').我应该调查MX:S:F:JSON以确保JSON::Any由代理使用的类MX:S:F:JSON是什么JSON::XS(如果为调用使用JSON::Any的Moose对象选择不同的内部编码器,则不愿意想到错误JSON::XS.
  3. 弄清楚如何递归 - 解禁并让它Catalyst::View::JSON做它的事情.
  4. 完全不要使用Catalyst::View::JSON.只需写入STDOUT $obj->freeze并手动完成请求..这似乎是最hackish.

我确定还有其他一些选择,任何想法?什么是我最好的选择?

perl serialization json moose catalyst

2
推荐指数
1
解决办法
2603
查看次数

当我启动Catalyst时,为什么会收到许多Moose警告?

我有一个问题(催化剂相关)显然与Moose/Class :: MOP.启动我的服务器我得到以下输出...(以下所示的所有荣耀)

角色应用程序的别名和排除选项已重命名为-alias和-excludes at /usr/local/lib/perl/5.10.1/Moose/Meta/Role/Application.pm第26行Moose :: Meta :: Role :: Application :: new('Moose :: Meta :: Role :: Application :: ToRole','排除','ARRAY(0x9645568)')调用/usr/local/lib/perl/5.10.1/Moose/Meta /Role.pm第416行Moose :: Meta :: Role :: apply('Moose :: Meta :: Role = HASH(0x95b3368)','Moose :: Meta :: Role = HASH(0x9446d90)','排除' ,'ARRAY(0x9645568)'调用/usr/local/lib/perl/5.10.1/Moose/Util.pm第133行Moose :: Util :: _ apply_all_roles('Moose :: Meta :: Role = HASH(0x9446d90) )',undef,'MooseX :: Getopt','HASH(0x9454a08)'调用/usr/local/lib/perl/5.10.1/Moose/Util.pm第87行Moose :: Util :: apply_all_roles('穆斯::元::Role = HASH(0x9446d90)','MooseX :: Getopt','HASH(0x9454a08)'调用/usr/local/lib/perl/5.10.1/Moose/Role.pm第26行Moose :: Role :: with('Moose :: Meta :: Role = HASH(0x9446d90)','MooseX :: Getopt','HASH(0x9454a08)')调用/usr/local/lib/perl/5.10.1/Moose/Exporter. pm line 294 Moose …

perl moose catalyst

2
推荐指数
1
解决办法
1941
查看次数

Catalyst无法加载帮助程序"Catalyst :: Helper :: View :: TT"

我按照"催化剂的权威指南"一书.现在,当我运行命令"script/lolcatalyst_lite_create.pl查看Web TT"时,我得到如下

存在"/home/hengaini/LolCatalyst-Lite/script/../lib/LolCatalyst/Lite/View"存在"/ home /hengaini/LolCatalyst-Lite/script/../t"无法加载助手"催化剂: :Helper :: View :: TT","无法在@INC中找到Catalyst/Helper/View/TT.pm>(@INC包含:/home/hengaini/LolCatalyst-Lite/script/../lib/etc/perl/usr/local /lib/perl/5.14.2 /usr/local/share/perl/5.14.2/usr/lib/perl5/usr/share/perl5 /usr/lib/perl/5.14/usr/share /perl/5.14/usr/local/lib/site_perl.)at(eval 338)第2行.

问题:1.催化剂仍然很受欢迎吗?每个网络框架都说得好; 2.如何解决上述问题?

谢谢!

perl catalyst

2
推荐指数
1
解决办法
1336
查看次数

格式化TemplateToolkit中输出的时间戳字段

我正在使用Perl和Catalyst框架,DBIx类作为ORM,TT作为视图,Postgresql作为DB.

我有一个带有'timestamp without timezone'类型的列,如果我在Postgres中进行手动查询,则列值是这样的格式2012-08-30 21:30:14,但是当我在TT视图文件中打印该值时,我得到它2012-08-30T15:03:13,所以很明显它会被格式化但是通过我究竟无法分辨的.

我想使用Template :: Plugin :: Date格式化输出时间戳,但我得到Catalyst错误:

无法渲染模板"xxx/list.tt2:日期错误 - 错误的时间/日期字符串:期望'h:m:sd:m:y'得到:'2012-08-30T21:28:22'"

代码在xxx/list.tt2中 [% date.format(xxx.created) %]

那么我该如何让它发挥作用呢?提前致谢.

postgresql perl catalyst template-toolkit dbix-class

2
推荐指数
1
解决办法
2366
查看次数

Template Toolkit中的Round或ceil函数

我需要在Perl的Template Toolkit中舍入一个值.但我无法使用ceil().

[%interestRate = ceil(mortgage.interest_rate / 100)%]
Run Code Online (Sandbox Code Playgroud)

答案显示了一个null价值.

perl catalyst

2
推荐指数
3
解决办法
2023
查看次数

perl 中是否允许使用单个元素列表?

我正在尝试从 AJAX 请求(使用 Catalyst)动态创建值列表,如下所示:

my @listofvalues         = @{$params->{parameter_with_many_values}};
Run Code Online (Sandbox Code Playgroud)

然后我遍历列表以进行数据库插入(每个值一个)。因为我需要像上面那样循环各种列表,所以我需要访问列表的索引。我目前正在这样做:

foreach my $key (0 .. $#listofvalues){
  $table_model->new({
    field1                => $listofvalues[$key],
    field2                => $x,
    field3                => $another_listofvalues[$key]
    field4                => $yet_another_listofvalues[$key]
  });
} 
Run Code Online (Sandbox Code Playgroud)

当请求中收到两个或更多元素时,这似乎工作正常。每当接收到单个元素时,我都会收到类似的错误

[error] Caught exception in pbitdb::Controller::Subjects->add "Can't use string ("1") as an ARRAY ref while "strict refs" in use at /home/lioneluranl/svn/pbitdb/pbitdb/script/../lib/pbitdb/Controller/Subjects.pm line 119."
Run Code Online (Sandbox Code Playgroud)

在这种情况下,1是接收到的值,第 119行是声明 @listofvalues 的行。

现在我已经尝试了几个来解决这个问题,但还没有找到任何可以双向工作的东西(对于单个或不同的值)。有什么建议?

ajax perl list catalyst

2
推荐指数
1
解决办法
626
查看次数

perl eval块无错误地抛出execptions

我试图在一个eval块下放置一些DBIX事务来进行所有事务,如果中间出现问题则不进行.

我有几个交易正在这样做,没有一个给我带来问题.只有一个:

我构建交易的方式相当棘手,而且值得的是,这些实际上是有效的.如果你愿意,我可以发布那段代码,但也许eval块就足够了:

    eval {
      for (my $sub = 0; $sub < $neuroexam_index; $sub++){
        $transactions{neuroexams}{$sub}->insert;
      }
    } or die $!;
Run Code Online (Sandbox Code Playgroud)

问题是eval [error] Caught exception in pbitdb::Controller::Subjects->add "Died at /home/lioneluranl/svn/pbitdb/pbitdb/script/../lib/pbitdb/Controller/Subjects.pm line 411."在我的控制台中显示错误(),但实际上执行插入.那为什么会这样?

perl eval catalyst dbix-class

2
推荐指数
1
解决办法
159
查看次数

使用Perl 5.8.8支持Catalyst

执行催化剂服务器脚本时面临以下问题.

Couldn't load class (Catalyst::Script::Server) because: "ensure_class_loaded" is not exported by the Catalyst::Utils module
Can't continue after import errors at /opt/madhan/lib/perl5/Catalyst/ScriptRole.pm line 7.
BEGIN failed--compilation aborted at /opt/madhan/lib/perl5/Catalyst/ScriptRole.pm line 7.
Compilation failed in require at /usr/lib/perl5/site_perl/5.8.8/Module/Runtime.pm line 313.
Compilation failed in require at /opt/madhan/lib/perl5/Catalyst/ScriptRunner.pm line 13.
        Catalyst::ScriptRunner::find_script_class("Catalyst::ScriptRunner", "testsite", "Server") called at /opt/madhan/lib/perl5/Catalyst/ScriptRunner.pm line 42
        Catalyst::ScriptRunner::run("Catalyst::ScriptRunner", "testsite", "Server") called at /opt/madhan/testsite/script/testsite_server.pl line 8
Run Code Online (Sandbox Code Playgroud)

perl 5.8.8会支持Catalyst MVC吗?

perl catalyst

2
推荐指数
1
解决办法
78
查看次数