问题标签 [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 回答
1176 浏览

perl - 为什么我的 Catalyst 应用程序无法读取我的 Template Toolkit 文件?

我正在尝试让Catalyst框架使用Template Toolkit,但我遇到了问题Template::Provider。我已将问题隔离到调用stat. 在Template::Provider::_init中,调用stat正常工作,但在其他函数中调用 stat 返回 []。似乎Template::Provider正在做一些奇怪的缓存工作,但我不太清楚是什么。有人有想法么?

编辑:更详细一点:

我正在尝试从 Catalyst 开发服务器迁移到 Apache/mod_perl。我得到一个Couldn't render template "file error - mytemplate.tt: not found"错误。这是我的配置的调试转储:

几乎与某人在这里描述的完全相同的问题:http ://www.gossamer-threads.com/lists/catalyst/users/14888

0 投票
3 回答
284 浏览

perl - How can I configure a Catalyst application for different servers?

I am planning a Catalyst application, that will be deployed over a number of servers. It will be used internally by support staff to control aspects of an operational system that runs on those servers.

The application will run much in the same way on each server, save for a limited amount of site specific behaviours. Some actions will only apply to some servers, and some actions will behave differently on other servers.

Are there any recognized design patterns/practices that enable site-specific customization of a Catalyst application?

I am currently thinking of deploying a site configuration file alongside the application, that will be used to determine what actions to enable, and set parameters that control other action's behaviour. Ideally this customization would happen when the application is loaded by mod_perl (Apache2) - but I am not sure if that would even be possible.

Any suggestions welcome!

0 投票
1 回答
300 浏览

perl - 在 Catalyst::Controller::Formbuilder 中配置 form_path

使用该Catalyst::Controller::FormBuilder模块处理 Catalyst 应用程序中的表单。

文档说您可以像这样设置 form_path :

form_path => File::Spec->catfile( $c->config->{home}, 'root', 'forms' ),

但是在我的应用程序中对 config() 的调用位于基本模块的顶层。因此,$c 是未定义的。所以我不能调用 $c->config->{home}。

请问配置form_path的正确方法是什么?

0 投票
3 回答
1201 浏览

perl - 我应该如何使用作业队列 [和 Perl/Catalyst] 最好地构建我的 Web 应用程序?

我正在使用Catalyst 框架编写一个 Web 应用程序。我还使用了一个名为TheSchwartz的作业队列。

我想要使​​用作业队列,因为我想要尽可能多的应用程序特定代码与 Web 应用程序接口代码分离。

基本上整个系统由三个主要部分组成:

  • GUI(催化剂网络界面)
  • 一个爬虫
  • 一个“攻击组件”(正在编写该应用程序以查找其他 Web 应用程序/站点中的 XSS 和 SQLi 漏洞)

所以理论上 GUI 为爬虫创建作业,而爬虫又为“攻击组件”创建作业。

目前我在 Catalyst 中有一个模型,它实例化了一个 TheSchwartz 对象,以便网络应用程序中的控制器可以将作业添加到作业队列中。

我还需要创建一些作业工作者脚本来持续侦听(/检查数据库)新作业,以便他们可以执行所需的操作。目前,TheSchwartz 的数据库特定内容位于 Catalyst 的模型中,我认为我无法在 Catalyst 之外轻松访问它?

我不想在模型中复制 TheSchwartz 作业队列的数据库连接数据,然后在我的作业工作者脚本中复制。我是否应该将 TheSchwartz 对象的创建包装在 Catalyst 之外的另一个类中,并在当前实例化 TheSchwartz 对象的模型中调用它?然后我也可以在工作脚本中使用它。或者我应该将数据库数据放在配置文件中,并在需要时实例化新的 TheSchwartz 对象(在 Catalyst 中/在作业工作者脚本中)?

还是我只是在想这个?

一些指向丰富的网络应用程序架构文章的链接也可能有用(我以前从未构建过中等复杂性的文章......)。

干杯

0 投票
3 回答
2698 浏览

perl - 如何使用 Catalyst 的自动并开始?

我想要两种特殊的方法:

  • 适用于所有 URL 的一种
  • 仅针对特定路径 ( /admin )运行的路径

我认为最通用的是 using begin,而/admin的方法将使用auto. 例如,在这两个 Catalyst 控制器中:

[...]

但这并没有达到我想要的。什么是正确的解决方案?

编辑:问题是Addmin::auto()永远不会被调用,而不是当我访问/admin/admin/

经过更多的测试,auto永远不会被调用。我试过把 auto 放在不同的地方,它从来没有被调用过。

0 投票
2 回答
1511 浏览

perl - 将 Catalyst 应用程序部署到生产服务器的最佳实践是什么?

将 Catalyst 应用程序部署到生产服务器的好方法是什么?目前我只是在存储库的根目录中有一个 FastCGI 调度脚本,当我想更新服务器代码时,我将分支推送到服务器。这很简单,但并不完美。如果代码在服务器机器上的测试失败(例如由于不满足的依赖关系),我留下的应用程序损坏。您如何部署 Catalyst 应用程序?你有更好的方法吗?

0 投票
3 回答
3253 浏览

perl - 有没有办法在 Catalyst 中强制 $c->uri_for 生成以 https 开头的 URI?

我使用 Catalyst 编写了一个 Web 应用程序,它有很多表单并且需要通过 https 运行。没有硬编码的 URL,一切都使用$c->uri_for$c->req->uri. 使用通过 http 运行的开发服务器在开发环境中一切正常。

今天,当我继续部署应用程序时,我发现了一个问题。我们的生产环境当前设置的方式是,客户端浏览器通过 HTTPS 与 F5 负载平衡器通信,而 F5 通过 HTTP 与内部网络上的 Web 服务器通信。

[浏览器]---HTTPS--->[F5]---HTTP--->[Web服务器]

现在,因为 Web 服务器只接收HTTP请求,所以所有的 URI 都是从 HTTP 开始生成的。这表示:

变成:

现在所有浏览器都抱怨您通过不安全的连接提交数据。我需要c.uri_for以 https 开头。

该应用程序今天需要上线,所以我对所有表单操作进行了大规模搜索/替换:

好吧,现在这破坏了开发,所以我根据配置键对表单操作进行了条件化:

不用说,这一切似乎在多个层面上都是错误的。有人有更好的主意吗?有没有办法强制$c->uri_for生成以 https 开头的 URI?

解决方案

如果您使用的是 Catalyst 5.80008 或更高版本,请设置MyApp->config(using_frontend_proxy => 1);并让您的代理设置X-Forwarded-Port标头。对于 5.80008 之前的 Catalyst 版本,仍然进行设置using_frontend_proxy,以便您获得实际的 client_ip,但要生成正确的 URI,请让您的 Web 服务器将环境变量设置HTTPSON

0 投票
1 回答
772 浏览

mysql - 如何从使用 DBIx 中使用 mysql 位

我正在尝试访问我的催化剂应用程序中的 mysql 位字段。这是表信息:

SQL:

我的映射表:

...

现在在我的控制器中,我做了一个简单的

在我的模板中,我尝试了以下方法:

我也试过了

但这也不起作用。除了更改数据库字段类型本身之外还有其他方法吗?

0 投票
3 回答
1694 浏览

perl - 如何在 Catalyst 中创建会话?

试图弄清楚我们如何在 Catalyst 中创建、存储和检索会话信息。有什么建议么?

0 投票
1 回答
1439 浏览

perl - 如何获取 Catalyst 中的所有请求参数?

具体来说,我试图将支付网关的所有 POST 参数作为单个字符串捕获,然后解析它们以查找字符串“错误”。

我知道有一种$c->request->parameters方法,但我不太确定它是如何使用的,而且我无法从 CPAN 文档中弄清楚。