我希望能够在舞者应用程序中输入"make test"来解决源目录(由"舞者-a appname"生成的目录)并让它在环境设置为'test'的情况下运行测试.
或者,如果有人可以指向我的存储库,我可以称之为"开发舞者应用程序的最佳实践",这将是伟大的!
在每次请求后,Dancer都有办法执行代码吗?
我尝试使用后挂钩,但似乎它在文件请求后没有执行...有一个名为'after_file_render'的挂钩,在每次请求后执行了相当多次,但我不确定它的用途是什么.是否在每次请求后都会调用它?
我在Perl Web框架中构建一些ajax Dancer我不确定它是否正在响应正确的http头,因为我无法从看似成功的请求中触发jQuery的ajax成功处理程序.使用下面的ajax片段,我在浏览器控制台中获得以下输出.完整的回调被成功调用,并提供看起来成功的输出.Status:200 StatusText:"OK"然而,成功处理程序永远不会被调用.
$.ajax({type: "GET", url: "/learn/faq",
success: function(data){console.log('omg got it');},
complete: function(data){console.log("complete", data);}
}).success(function(data){console.log('defered');});
Object
XHR finished loading: "https://www.localhost:4443/learn/faq". assets-d36e1bb9fd59ba3dbd0f8a0cbb37ed8e.js:1
complete
Object {readyState: 4, responseText: "??<!DOCTYPE html>?<html xmlns="http://www.w3.org/1…ead/conversion.js"></script>????</body>?</html>??", status: 200, statusText: "OK"
Run Code Online (Sandbox Code Playgroud)
我应该看到omg got it和defered消息,但不是.看看这个我觉得jQuery成功处理程序比状态和Dancer http实现没有正确响应更多.
此外,我已经error在片段中添加了一个处理程序,并且错误处理程序正在被看似成功的请求触发.
$.ajax({type: "GET", url: "/learn/faq",
success: function(data){console.log('omg got it');},
complete: function(data){console.log("complete", data);},
error: function(data){console.log("error!", data);}
}).success(function(data){console.log('defered');});
Object
XHR finished loading: "https://www.localhost:4443/learn/faq". assets-8cd028b93e0db9dd9455125dc98d5ae1.js:1
error!
Object {readyState: 4, responseText: "????????????????<!DOCTYPE html>?<html xmlns="http:…></script>????</body>?</html>????</body>?</html>?", status: 200, statusText: …Run Code Online (Sandbox Code Playgroud) 我有一个Perl Dancer Web应用程序,它使用Apache2的mod_fastcgi服务方法.应用程序必须接受上传的文件.当用户上传文件并按下停止按钮时,fastcgi进程挂起,以100%运行,直到我手动终止进程.
是否有任何设置可以自动杀死像这样挂起的进程?有没有办法自动杀死已经运行了一段时间的fastcgi进程?
我的Dancer app模块中有以下代码:
package Deadlands;
use Dancer ':syntax';
use Dice;
our $VERSION = '0.1';
get '/' => sub {
my ($dieQty, $dieType);
$dieQty = param('dieQty');
$dieType = param('dieType');
if (defined $dieQty && defined $dieType) {
return Dice->new(dieType => $dieType, dieQty => $dieQty)->getStandardResult();
}
template 'index';
};
true;
Run Code Online (Sandbox Code Playgroud)
我有一个名为Dice.pm的Moops类,如果用.pl文件测试它就可以正常工作,但是当我尝试通过Web浏览器访问它时,我收到以下错误:找不到对象方法"new"通过包"骰子"(也许你忘了加载"骰子"?).
我可以和Dancer一起做吗?
以下是Dice.pm的相关代码:
use 5.14.3;
use Moops;
class Dice 1.0 {
has dieType => (is => 'rw', isa => Int, required => 1);
has dieQty => (is => 'rw', isa => Int, …Run Code Online (Sandbox Code Playgroud) 我是Dancer的新手,但我正在尝试将其配置为在Docker容器中工作.因此,我需要从环境中获取数据库设置.
在我的情况下,我有DB_PORT_3306_TCP_ADDR,DB_PORT_3306_TCP_PORT来自Docker.不幸的是,Dancer::Plugin::Database在我可以更改数据库以使用这些变量之前,模块是错误的.
use Dancer ':syntax';
use Dancer::Plugin::Database;
if ($ENV{DB_PORT_3306_TCP}) {## Connected via docker.
database->({
driver => 'mysql',
username => 'username',
password => 'password',
host => $ENV{DB_PORT_3306_TCP_ADDR},
port => $ENV{DB_PORT_3306_TCP_PORT},
database => $ENV{DB_ENV_MYSQL_DATABASE},
});
}
Run Code Online (Sandbox Code Playgroud)
所以问题是,有没有一种很好的方法从环境变量配置Dancer,而不是通过静态YAML?
我的Dancer应用程序在uWSGI(2.0.7)+ Apache(2.4.10)组合下失败,而它在其他环境(uWSGI + nginx,Starman + Apache,Dancer自己的开发服务器)中自由运行.我没有在日志中找到任何有意义的信息.所以我做了简单的测试应用程序
$ dancer -a tset
Run Code Online (Sandbox Code Playgroud)
然后将默认复制production.yml到uwsgi.yml,链接bin/app.pl到这样bin/app.psgi创建tset.ini:
[uwsgi]
plugins = psgi
socket = 127.0.0.1:3033
uid = www
gid = www-data
chdir = /home/www/apps/tset/bin/
psgi = app.psgi
processes = 1
master = true
Run Code Online (Sandbox Code Playgroud)
使这个ini可用于uWsgi /etc/uwsgi/apps-available,将其链接到/etc/uwsgi/apps-enabled.
重启uwsgi服务.
然后对于Apache(2.4.10)模块,mod-proxy-uwsgi在我的虚拟主机conf中添加了几行:
ProxyPass /adm/y uwsgi://127.0.0.1:3033/
Run Code Online (Sandbox Code Playgroud)
这似乎是最脆弱的一点,因为我觉得我需要设置uWSGIModifier1 5在这里,但没有弄清楚在哪里以及如何?
重新启动Apache并获得"内部服务器错误".在uwsgi日志中我只看到:
Tue Jan 19 02:10:36 2016 - spawned uWSGI worker 1 (pid: 21712, cores: …Run Code Online (Sandbox Code Playgroud) 我正在使用Starman(v0.4014)和ngynx作为前端代理运行Dancer(v1.3202)应用程序.我注意到我的负载平衡器每隔几个小时出现一次巨大的延迟峰值,并想知道是否工作人员达到了他们的请求限制并重新启动.延迟从平均30ms到1000ms或更长.我检查了MongoDB,没有长时间运行的查询.--max-requests对工人实际做了什么以及当工人达到这个限制时会发生什么?
使用uwsgi运行两个psgi Perl Dancer应用程序。
几乎每一个要求,uwsgi封臣都会反复宣布对皇帝的忠诚,这是正常的吗?
这是我的uwsgi.log文件的一小部分:
announcing my loyalty to the Emperor...
Mon Aug 17 20:51:59 2015 - [emperor] vassal www.ini is now loyal
[pid: 1713|app: 0|req: 4/11] 0.0.0.0 () {44 vars in 873 bytes} [Mon Aug 17 20:52:12 2015] GET /sitemap-index.xml => generated 284 bytes in 7 msecs (HTTP/1.1 200) 4 headers in 146 bytes (0 switches on core 0)
[pid: 1706|app: 0|req: 2/12] 0.0.0.0 () {42 vars in 808 bytes} [Mon Aug 17 20:52:22 2015] GET / => generated …Run Code Online (Sandbox Code Playgroud) 如何修改Dancer2站点中Template Toolkit的默认配置以使用Template :: Stash :: AutoEscaping?