标签: catalyst

使用具有大量依赖性的框架有什么问题?

我最近告诉一位朋友,我开始学习Catalyst(Perl),他相当强调,因为Catalyst有很多依赖,所以我应该使用类似Rails的东西.

存在很多依赖关系不是一件好事吗?这不是表明很多代码重用吗?我知道安装框架可能需要付出更多努力,但是还有其他缺点吗?

我会恢复我的Catalyst教程,直到我得到一些多汁的回复.:-)

dependencies frameworks ruby-on-rails catalyst

5
推荐指数
3
解决办法
331
查看次数

DBIx :: Class :: ResultSet在多个唯一约束上更新或创建

我想知道dbix中的多个唯一约束是否可能update_or_create

来自Cpan:

 my $cd = $schema->resultset('CD')->update_or_create(
    {
      artist => 'Massive Attack',
      title  => 'Mezzanine',
      year   => 1998,
    },
    { key => 'cd_artist_title' }
  );
Run Code Online (Sandbox Code Playgroud)

我想做什么

   my $cd = $schema->resultset('CD')->update_or_create(
    {
      artist => 'Massive Attack',
      title  => 'Mezzanine',
      year   => 1998,
    },
    { key => {'cd_artist_title','year' }
  );
Run Code Online (Sandbox Code Playgroud)

perl catalyst dbix-class

5
推荐指数
1
解决办法
1526
查看次数

在学习Perl的同时开始使用Catalyst是否可行?

我不太确定这是关于主题的(如果不是,我会尽快删除它)).

我决定开始自学Perl以及如何将它用于Web开发.大约一年前我用Python做过同样的事情,虽然我不是专家(我在工作时间用Java编写代码,并花一些个人时间尝试其他东西),但我已经能够创建一些网站了.使用Django,我已经使用ProjectEuler问题来了解该语言的基础知识.

从我的第一种方法来看,Perl似乎比Python有更陡峭的学习曲线.

我一直在寻找一些Web开发人员.Perl的框架和偶然发现的Catalyst,看起来非常有趣.

我的问题是:是否值得尝试一下,但仍然在用语言挣扎,或者我会浪费我的时间?我应该首先掌握Perl,然后是CGI,然后再进入可能从开发人员那里抽象出很多概念的框架吗?

感谢您的任何见解!

perl catalyst

5
推荐指数
1
解决办法
293
查看次数

我应该使用哪个Perl模块来生成验证CRUD网络表单?

有没有人成功使用类似DBIx :: Class :: WebFormCatalystX-CRUD的东西从数据库表自动构建自我验证的webform?

我正在想象一个模块,它读取数据库表模式,读取每列的约束,生成一些webform的抽象表示,带有错误消息的字段等.我正在使用Catalyst和Plack,它有一个很大的现有代码库.

我不想编写HTML webform,也不想编写任何验证逻辑.我的目标是以Ruby on Rails的风格编写尽可能少的代码.哪个Perl模块最适合这个?

更新:我已经用HTML :: FormFu解决了webform方面的问题,但它仍然很笨重地将表单输入映射到数据库,例如date_start和date_end都与'created'列相关,并且注释应该使用'LIKE%foo%匹配'等等'DBICFu'在哪里?

更新:这是一个Web应用程序,webform看起来不应该像数据库表.我不是在寻找数据库管理工具.

perl webforms crud catalyst dbix-class

5
推荐指数
1
解决办法
646
查看次数

DBIx :: Class获取dbh

我在我正在构建的Catalyst应用程序中使用DBIx :: Class.它工作得很好,但有时我需要使用我自己开发的自己的db函数,这些函数非常符合我的需求.因此,我需要一个dbh.但是,因为我已经在使用,所以我知道它已经有一个正在使用的dbh.为了避免与数据库建立另一个不必要的连接,我想只使用已经创建的dbh .我知道DBIx ::类::存储:: DBI模块有两个方法和,但我真的不知道有什么区别两者之间,如果他们获得访问胸径的最佳途径.谁能告诉我什么是最好的方式来获得胸径会在一个应用程序?我更喜欢一种方法,我可以将其存储在存储区中,如下所示:DBIx::ClassDBIx::Classdbhdbh_doDBIx::ClassCatalyst

sub dbh :Private { 
    my ($self, $c) = @_;
    $c->stash->{dbh} = #get dbh from DBIx::Class here
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

database perl catalyst dbix-class

5
推荐指数
1
解决办法
2079
查看次数

有没有办法在催化剂中使用测试数据库

使用催化剂时,有没有办法像在Rails中那样指定开发,测试和生产数据库?我查看了文档,但我没有找到答案.

perl catalyst

5
推荐指数
1
解决办法
596
查看次数

在Perl中,在属性中保留对Catalyst的$ c的引用会导致内存泄漏吗?

我开始使用Catalyst编写一些Perl代码,如下所示:

package My::Controller;
extends 'Catalyst::Controller';

sub handler :Path :Args(0) :Location( some/url )
    my ($self, $c) = @_;

    $self->do_something_with_arguments($c);
    $self->make_a_decision($c);
    $self->another_method($c);
}
Run Code Online (Sandbox Code Playgroud)

然后我想.o(为什么一直传递$ c?),我改为:

package My::Controller;
extends 'Catalyst::Controller';

has c => (is => "rw", isa => "Catalyst");

sub handler :Path :Args(0) :Location( some/url )
    my ($self, $c) = @_;
    $self->c($c);

    $self->do_something_with_arguments;
    $self->make_a_decision;
    $self->another_method;
}
Run Code Online (Sandbox Code Playgroud)

处理程序只有一个入口点,因此$ self-> c将始终正确设置.

我的同事说,如果这就是Catalyst的意思,那么,每个人都会这样使用它.他们担心这样做会导致内存泄漏,因为在请求结束后对$ c的引用会持续存在.真的吗?

oop perl webserver scope catalyst

5
推荐指数
1
解决办法
242
查看次数

Catalyst MVC下的异常推送行为

我希望以下代码

my @array;
for my $rapport ( qw( value1 value2 value3 ) ) {
    push @array, { key => $rapport };
}
Run Code Online (Sandbox Code Playgroud)

生产:

$VAR1 = [
      {
        'key' => 'value1'
      },
      {
        'key' => 'value2'
      },
      {
        'key' => 'value3'
      }
    ];
Run Code Online (Sandbox Code Playgroud)

但是,在Catalyst MVC下运行此代码段我得到:

$VAR1 = [
          {
            'key' => [ 'value', 'value2', 'value3' ]
          },
        ];
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释原因吗?

编辑:任何有相同问题的人都可以添加一个例子吗?在一些代码更改之后我无法重现,但是由于它被推崇了5次我假设其他一些用户也遇到过这个问题?

perl catalyst

5
推荐指数
1
解决办法
168
查看次数

Catalyst&Perl - 在运行时生成模型

我正在开发一个将在运行时生成数据库表的应用程序.我正在使用Catalyst和DBIC,我需要在生成新表时生成新的ResultSet.这个新的ResultSet必须作为Catalyst模型添加,所以我可以,$c->model('DB::NewFoo')但我需要在运行时发生这种情况.

表生成和ResultSet生成不是问题,我需要的是在运行时将那些新生成的ResultSet添加到Model中,以便我可以在进一步的请求中调用它们.

到目前为止,我的想法是创建一个控制DBI::Class::Schema,提供访问器方法的类,并提供一种在运行时更新和重新加载Schema的方法.我想要一个使用Catalyst本身的不同想法.

感谢您提供的所有帮助.

perl catalyst dbix-class

5
推荐指数
1
解决办法
136
查看次数

在Perl Catalyst URL中用连字符替换下划线

我们正在寻找将CamelCase转换为camel-case和下划线为连字符的选项,并希望有人可以提供一些强有力的例子.(出于SEO原因使用连字符).

特别:

在Catalyst中使用MMORPG并厌倦了写这样的事情:

sub travel_to  ( $self, $c, $star ) : Path('travel-to') Args(1)  { ... }
Run Code Online (Sandbox Code Playgroud)

或这个:

package Veure::Controller::Area::StorageLocker {
    ....
    sub index ( $self, $c ) : Path('/area/storage-locker') { ... }
}
Run Code Online (Sandbox Code Playgroud)

更新:因为有一些混乱,我的意思是我们更愿意让开发者写这个:

# getting rid of Args() would be nice, but sigs don't have introspection
sub travel_to  ( $self, $c, $star ) : Args(1)  { ... }
Run Code Online (Sandbox Code Playgroud)

或这个:

package Veure::Controller::Area::StorageLocker {
    ....
    sub index ( $self, $c ) { ... }
}
Run Code Online (Sandbox Code Playgroud)

这很重要,因为对于SEO的立场,下划线而不是连字符可以显着提高您的SEO.由于不得不做额外的粗暴工作以始终强制连字符,开发人员忘记这样做,我们不断浪费钱回去,不得不重写代码,忘记这个警告.这是我们应该能够自动完成的事情.

perl catalyst

5
推荐指数
1
解决办法
191
查看次数