问题标签 [catalyst]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
274 浏览

perl - 为什么具有多重继承的 DBIx::Class 更新失败?

我有一个 DBIC 模式,其中所有类都使用一个公共基类和定义类。基类加载公共组件,并覆盖更新方法以便在审计表中记录变更集。定义类是从数据库生成的静态类。一个典型的类头看起来像:

在我添加并覆盖 User 类中的更新之前,一切正常。显然在基类中有覆盖,并且 User 类在某种程度上发生了冲突。我正在使用 next::method(@_) 调用下一个更新方法,但它总是挂起。

这是一个 CGI 应用程序。因此,当我点击“保存”时,浏览器会转动它的轮子,直到我点击转义来取消请求。此时,我的日志记录恢复了,它显示所有查询都在正确且快速地执行,但它在 User 类的末尾挂起,直到我在浏览器中点击转义后才会继续。

更新:这似乎是与催化剂相互作用的问题。自行运行时,此代码可以正常工作。但是,当从催化剂应用程序中执行时,它会失败。

0 投票
2 回答
1988 浏览

perl - 为什么我在启动 Catalyst 时会收到许多 Moose 警告?

我显然遇到了 Moose/Class::MOP 的问题(与催化剂相关)。启动我的服务器,我得到以下输出......(如下所示)

角色应用程序的别名和排除选项已重命名为 -alias 和 -excludes,位于 /usr/local/lib/perl/5.10.1/Moose/Meta/Role/Application.pm 第 26 行 Moose::Meta::Role:: Application::new('Moose::Meta::Role::Application::ToRole', 'excludes', '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 第 294 行 Moose::Role::with('MooseX::Getopt', 'HASH(0x9454a08)') 调用于 /usr/share/perl5/Catalyst/ScriptRole.pm 第 8 行需要 Catalyst/ScriptRole.pm 调用于 / usr/local/lib/perl/5.10.1/Class/MOP.pm 第 113 行 Class::MOP::__ANON__() 在 /usr/share/perl5/Try/Tiny.pm 第 71 行调用 eval {...}在 /usr/share/perl5/Try/Tiny.pm 第 67 行调用 Try::Tiny::try('CODE(0x93c2910)', 'Try::Tiny::Catch=REF(0x93bba38)') 在 /usr 调用/local/lib/perl/5.10.1/Class/MOP.pm 第 124 行 Class::MOP::load_first_existing_class('Catalyst::ScriptRole') 调用于 /usr/local/lib/perl/5.10.1/Class/MOP.pm 第 136 行 Class::MOP::load_class('Catalyst::ScriptRole', undef) 调用于/usr/local/lib/perl/5.10.1/Moose/Util.pm 第 109 行 Moose::Util::_apply_all_roles('Moose::Meta::Class=HASH(0x8fc9378)', undef, 'Catalyst::ScriptRole ') 在 /usr/local/lib/perl/5.10.1/Moose/Util.pm 第 87 行调用 Moose::Util::apply_all_roles('Moose::Meta::Class=HASH(0x8fc9378)', '催化剂: :ScriptRole') 在 /usr/local/lib/perl/5.10.1/Moose.pm 第 58 行调用 Moose::with('Moose::Meta::Class=HASH(0x8fc9378)', 'Catalyst::ScriptRole' ) 在 /usr/local/lib/perl/5.10.1/Moose/Exporter.pm 第 294 行调用 Moose::with('Catalyst::ScriptRole') 在 /usr/share/perl5/Catalyst/Script/Server 调用。pm 第 14 行需要在 /usr/local/lib/perl/5.10.1/Class/MOP.pm 调用 Catalyst/Script/Server.pm 第 113 行 Class::MOP::__ANON__() 在 /usr/share/perl5 调用/Try/Tiny.pm 第 71 行 eval {...} 在 /usr/share/perl5/Try/Tiny.pm 第 67 行调用 Try::Tiny::try('CODE(0x8f6dc38)', 'Try::Tiny ::Catch=REF(0x8f8d1c8)') 在 /usr/local/lib/perl/5.10.1/Class/MOP.pm 第 124 行调用 Class::MOP::load_first_existing_class('Catalyst::Script::Server')在 /usr/local/lib/perl/5.10.1/Class/MOP.pm 第 136 行调用 Class::MOP::load_class('Catalyst::Script::Server') 在 /usr/share/perl5/Catalyst 调用/ScriptRunner.pm 第 18 行 Catalyst::ScriptRunner::run('Catalyst::ScriptRunner', 'Jamaica', 'Server') 在 script/boca_server.pl 第 8 行调用旧的 Moose::Util::MetaRole API(之前版本 0。94) 已在 /usr/local/lib/perl/5.10.1/Moose/Util/MetaRole.pm 第 16 行被弃用 Moose::Util::MetaRole::apply_metaclass_roles('for_class', 'Catalyst::Controller', 'metaclass_roles', 'ARRAY(0x97bdff8)', 'method_metaclass_roles', 'ARRAY(0x97ab9f0)', 'wrapped_method_metaclass_roles', 'ARRAY(0x981d650)') 在 /usr/share/perl5/MooseX/MethodAttributes.pm 第 32 行调用 MooseX ::MethodAttributes::init_meta('MooseX::MethodAttributes', 'for_class', 'Catalyst::Controller', 'metaclass', undef) 在 /usr/local/lib/perl/5.10.1/Moose/Exporter 调用。 pm 第 355 行 Moose::Exporter::__ANON__('MooseX::MethodAttributes') 调用于 /usr/share/perl5/Catalyst/Controller.pm 第 10 行 Catalyst::Controller::BEGIN() 在 /usr/share/perl5/Catalyst/Controller.pm 第 10 行调用 eval {...} 在 /usr/share/perl5/Catalyst/Controller.pm 第 10 行调用需要 Catalyst/Controller.pm 在 / usr/share/perl5/Catalyst.pm 第 16 行 Catalyst::BEGIN() 调用于 /usr/share/perl5/Catalyst/Controller.pm 第 10 行 eval {...} 调用于 /usr/share/perl5/Catalyst/ Controller.pm 第 10 行需要在 /home/bobek/dev/build_7.2/mvc/Jamaica/script/../lib/Jamaica.pm 调用 Catalyst.pm 第 17 行 Jamaica::BEGIN() 在 /usr/share 调用/perl5/Catalyst/Controller.pm 第 10 行 eval {...} 在 /usr/share/perl5/Catalyst/Controller.pm 第 10 行调用需要 Jamaica.pm 在 /usr/local/lib/perl/5.10.1 调用/Class/MOP.pm 第 113 行 Class::MOP::__ANON__() 在 /usr/share/perl5/Try/Tiny.pm 第 71 行调用 eval {...} 在 /usr/share/perl5/Try/ 调用Tiny.pm 第 67 行尝试::Tiny::try('CODE(0x8fb3230)', 'Try::Tiny::Catch=REF(0x969fee0)') 在 /usr/local/lib/perl/5.10.1/Class/MOP.pm 第 124 行调用::MOP::load_first_existing_class('Jamaica') 在 /usr/local/lib/perl/5.10.1/Class/MOP.pm 第 136 行调用 Class::MOP::load_class('Jamaica') 在 /usr/ 调用share/perl5/Catalyst/ScriptRole.pm 第 61 行 Catalyst::ScriptRole::_run_application('Catalyst::Script::Server=HASH(0x969d748)') 在 /usr/share/perl5/Catalyst/Script/Server.pm 调用第 181 行 Catalyst::Script::Server::run('Catalyst::Script::Server=HASH(0x969d748)') 在 /usr/local/lib/perl/5.10.1/Class/MOP/Method/Wrapped 处调用.pm 第 48 行 Class::MOP::Method::Wrapped::__ANON__('Catalyst::Script::Server=HASH(0x969d748)') 在 /usr/local/lib/perl/5.10.1/Class/ 调用MOP/方法/Wrapped.pm 第 89 行催化剂::Script::Server::run('Catalyst::Script::Server=HASH(0x969d748)') 在 /usr/share/perl5/Catalyst/ScriptRunner.pm 第 20 行调用 Catalyst::ScriptRunner::run('Catalyst: :ScriptRunner', 'Jamaica', 'Server') 在 script/boca_server.pl 第 8 行调用

我是 Catalyst 的新手(我确实喜欢它,我只是想成功启动并运行它)。我检查了 Moose 和 Class::MOP 的最新版本,它们是最新的(就 CPAN 而言)。

希望熟悉 Moose 的人以前见过这个。任何建议或开始检查的地方将不胜感激。

米歇尔 B。

0 投票
1 回答
150 浏览

perl - 我应该如何通过 Catalyst 中的配置文件禁用操作?

我有一个控制器,它具有使用链式设置的操作。我的链接根操作在我的根控制器中,然后我的“部分”控制器有一个与根控制器的“根”操作链接的“根”操作。然后,我在“节”控制器类中具有端点操作,该操作从同一类中的“根”操作链接:

如何通过配置文件禁用“部分”包中的所有操作?到目前为止,我所做的是在部分类 Private 中设置“根”操作,这似乎有效,但是当我通过导航构建时,我如何判断该部分不可用?我可以尝试 uri_for_action 并返回 undef,但这似乎有点混乱,并且确实会发出警告,即 Catalyst 无法找到该操作的 uri_for。

0 投票
1 回答
329 浏览

perl - 如何使用 Config::General 在给定控制器中配置所有 Catalyst 操作?

我想使用我的应用程序的配置文件配置我的控制器中的所有操作。根据Catalyst::Controller我可以在控制器本身中执行此操作:

所以我在我的配置中尝试了这个:

但我在启动时收到此错误:

没有星号周围的引号也是如此。我该怎么做?

0 投票
1 回答
120 浏览

perl - 如何在 Catalyst::Model::Adaptor 的 prepare_arguments 中访问真正的 App

我有一个特定于催化剂的模型类,我想通过在 Catalyst::Model::Adaptor 的帮助下包装它来实例化它

问题是这里的 $app 不是 MyAPP 的实例,而只是类名 'MyApp' 。

如何从此方法访问 MyApp 的实例?

0 投票
2 回答
359 浏览

perl - 催化剂 + mod_cgi

我最近开发了一个催化剂应用程序,我现在想部署它。我的主机 ( OVH ) 允许通过 mod_cgi 进行 perl 应用程序。不幸的是,我习惯于在 mod_perl 上运行我的催化剂应用程序。我对 mod_cgi 没有任何经验,而且我似乎找不到关于如何让我的催化剂应用程序在 mod_cgi 上运行的好的文档。

你们中的一些人有机会帮我一把吗?你们有没有人在 OVH 的服务上运行过催化剂应用程序?

谢谢, ldx

0 投票
1 回答
893 浏览

perl - Catalyst 中 DBIx::Class::Schema 模型上的 Moose 方法修饰符

对于任何给定的结果类 MySchema::Result::Foo(由使用 Moose/MooseX::nonmoose 的默认模式加载器生成的语法构建)

如果我添加一个 BUILDARGS 方法包装器来清理一行的构造函数数据,如下所示:

它在直接使用模式时有效。例如,以下内容按预期工作:使用 real_column=>'value' 创建新行对象,并在调用 ->new 之前删除 not_a_real_column

但是,当通过 Catalyst::Model::DBIC::Schema 使用相同的模式时,顺序是不同的。尝试创建新的 Foo 行对象时以下失败,因为 not_a_real_column 无效。换句话说, new 的参数在调用 ->new 之前不会通过 BUILDARGS 运行。

有趣的是,如果我环绕 'new' => sub{} 而不是 'BUILDARGS' => sub{} 两种情况下的行为是相同的,并且工作正常,但据我了解 Moose 教条状态永远不会混淆新的。

任何人都愿意帮助我理解为什么会这样,或者是否有更好的方法?

0 投票
1 回答
320 浏览

perl - 如何在 Perl 的 Catalyst 中自定义调度规则?

您如何自定义 Catalyst 在匹配 url 时使用的调度规则?

例如,我想GET /home/a拨打sub a_GET : LocalPOST /home/a拨打sub a_POST : Local.

我知道我总是可以编写一个通用操作,该操作将根据名称调用其中一个函数,但我想听听更多通用选项。

0 投票
1 回答
504 浏览

perl - Openid - 身份验证后的用户详细信息

我正在尝试使用Catalyst::Authentication::Credential::OpenID对来自 Google 的用户进行身份验证。身份验证成功后,我将得到一个Catalyst::Plugin::Authentication::User::Hash对象作为我的用户。如果用户是第一次在我的应用程序中登录,我想从 OpenID 提供者那里获取用户的详细信息并将它们存储在我的数据库中。这是为了简化注册过程,我希望 OpenID 提供尽可能多的详细信息。但至少名字,姓氏,电子邮件等。

但我无法实现它。例如,如果我打电话,我会得到异常说方法 *url,display * 没有定义。

整理它的任何帮助都是有帮助的。

0 投票
2 回答
2054 浏览

perl - 在 Catalyst 控制器中处理可选 url 参数的最佳方法是什么?

例如:

我知道如何匹配www.domain.com/foo/21

但是我怎样才能匹配www.domain.com/foo/21www.domain.com/foo/21/bar/56

谢谢

更新: 按照 Daxim 的建议,我尝试使用 :Regex

但这似乎不起作用;url 匹配,但 $bar_id 始终是 undef。如果我从正则表达式的末尾删除可选的运算符,那么它确实会正确捕获 $bar_id,但是 foo 和 bar 必须同时存在才能获得 url 匹配。我不确定这是 perl 正则表达式问题还是 Catalyst 问题。有任何想法吗?

更新:

正如 Daxim 指出的,这是一个正则表达式问题。我不明白为什么上面的正则表达式不起作用,但我确实设法找到了一个:

(我没有像 Daxim 那样在捕获中使用 \d+,因为我的 id 可能不是数字)

感谢大家的帮助和建议,我学到了很多关于在 Catalyst 中处理 url 的知识:D