标签: dancer

如何将调试器附加到Dancer2应用程序

请耐心等待,因为除了我继承了用它写的东西之外,我真的不知道关于Dancer2的第一件事.

我想附加一个常规调试器,它正在抵制我的大部分尝试.

说我有:

package Wharrgarbl;
use Dancer2;

# lots of stuff

get '/wharrgarbl/:potato' => sub {
  use DB; $DB::single = 1;
  # probably too much code here
}
Run Code Online (Sandbox Code Playgroud)

我希望能够将调试器附加到该响应处理程序.我该如何完成这个咒语?

perl -d -I wharrgarbl/lib -MWharrgarbl -E 'Wharrgarbl->???("/wharrgarbl/fnorb")'
Run Code Online (Sandbox Code Playgroud)

perl dancer

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

生成唯一的随机字符串

我正在和Dancer一起写一个非常小的URL缩短器.它使用REST插件将发布的URL存储在数据库中,该数据库具有六个字符的字符串,用户可以使用该字符串来访问短路的URL.

现在我对我的随机字符串生成方法有点不确定.

sub generate_random_string{
    my $length_of_randomstring = shift; # the length of 
                                        # the random string to generate

    my @chars=('a'..'z','A'..'Z','0'..'9','_');
    my $random_string;
    for(1..$length_of_randomstring){
        # rand @chars will generate a random 
        # number between 0 and scalar @chars
        $random_string.=$chars[rand @chars];
    }

    # Start over if the string is already in the Database
    generate_random_string(6) if database->quick_select('urls', { shortcut => $random_string });

    return $random_string;
}
Run Code Online (Sandbox Code Playgroud)

这会生成一个六字符串,如果生成的字符串已经在数据库中,则会递归调用该函数.我知道有63 ^ 6个可能的字符串,但如果数据库收集更多条目,这将需要一些时间.也许它会变成一个几乎无限的递归,我想阻止它.

有没有办法生成独特的随机字符串,以防止递归?

提前致谢

random perl dancer

4
推荐指数
1
解决办法
5364
查看次数

如何创建仅在一个请求期间全局的"全局"范围变量?

当请求到达我的dancer2应用程序时,我想设置一个对象,该对象可以被处理此请求所涉及的所有包访问.

如何确保此对象仅在此单个请求中具有范围,并且其他请求无法访问该对象?

具体来说,当执行通过我的库时,此对象应填充各种消息(错误,警告,调试消息等).

显然,这些消息是特定于请求的,我担心天真地声明对此消息对象的全局引用会将其暴露给所有命中应用程序的请求.

我正在考虑在路由器中创建此消息类的实例,然后在处理此请求所涉及的所有方法中传递对它的引用.

我的直觉告诉我,我在这里基本上缺少一些关于dancer2的建筑方面的东西,所以我决定问你.顺便说一下,这是我的第一篇文章,所以我为我的问题可能存在的任何缺点道歉.

perl dancer

4
推荐指数
1
解决办法
119
查看次数

有没有办法允许多个连接到 Dancer2

我的程序:

#!/usr/bin/perl

use strict;
use warnings;
use Dancer2;

$| = 1;

set host => '127.0.0.1';
set port => 7071;

get '/foo' => sub {
    `sleep 5`;
    'ok'
};

start;
Run Code Online (Sandbox Code Playgroud)

然后我运行以下for循环:

for i in $(seq 1 3)
> do
>   time curl http://localhost:7071/foo &
> done
Run Code Online (Sandbox Code Playgroud)

输出:

ok
real    0m5.032s
user    0m0.013s
sys     0m0.000s
ok
real    0m10.037s
user    0m0.012s
sys     0m0.000s
ok
real    0m15.043s
user    0m0.004s
sys     0m0.008s
Run Code Online (Sandbox Code Playgroud)

看来Dancer2一次只能接受一个请求,如何允许多个连接到Dancer2?

perl dancer

4
推荐指数
1
解决办法
174
查看次数

如何在白天拆分Dancer错误日志?

我想在我的网站上使用舞者和明星.我成功地将错误日志设置到文件中.当然我可以运行脚本来每天移动错误日志.但我只是想知道是退出方法还是cpan模块来解决问题.谢谢〜

perl logging dancer

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

perl舞者 - "任何"方法 - 哪种实际方法叫做?

使用Perl的Dancer模块,如果你有一个"any"方法(匹配get/post/put/delete),你怎么能确定浏览器使用哪种实际方法?

#!/usr/bin/perl

use Dancer;

my $instance = someclass->new();

any('/' => sub{
  my $method = ???
  my $params = params();
  return($instance->$method($params));
});  
Run Code Online (Sandbox Code Playgroud)

perl dancer

3
推荐指数
1
解决办法
139
查看次数

Perl - 模板工具包 - 如何获取模板中的变量列表?

我正在使用Perl DancerTemplate::Toolkit.

我正在尝试创建一个通用例程,该例程将传递模板和HTTP GET/POST参数.

我需要找到一种方法来获取模板中的变量列表,因此我可以从参数中检索它们,或者如果缺少一个或多个,则返回错误.

我可以走一条丑陋的正则路线,但我希望有更好/更清洁的方式.

所有模板都是XML/SOAP,其中包含一些变量.

有任何想法吗?

perl templates dancer

3
推荐指数
1
解决办法
1455
查看次数

如何使用Perl Dancer提供robots.txt

我正在尝试使用Perl Dancer Web框架提供robots.txt.我认为有一条刚刚返回文本的路径会起作用,但它似乎将它包装在其中htmlbody标记.我假设这不会被爬虫正确解释为robots.txt文件.

知道如何正确地做到这一点?

以下是我编写路线的方法:

get '/robots.txt' => sub { return "User-agent: *\nDisallow: /"; };

提前致谢!

perl seo web-crawler dancer web

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

有没有办法在Dancer和Starman中使用包/全局变量?

当与Starman一起运行时,我无法找到在Dancer应用程序中使用包变量(或任何类型)的方法.我想它与Starman的preforking有某种关系,但这应该是一个特征,而不是一个bug.

这是舞者应用程序的示例:

package nafig;
use Dancer;

my $a = 0;
$b = 0;
$nafig::c = 0;

any '/' => sub {
    warn join " ", $a++, $b++, $nafig::c++;
};

start;
Run Code Online (Sandbox Code Playgroud)

然后我连续3次调用该应用程序.首先,我用plack引用服务器运行它,一切都按预期工作:

$ plackup app.pl
HTTP::Server::PSGI: Accepting connections at http://0:5000/
0 0 0 at ... blah-blah-blah
1 1 1 at ... blah-blah-blah
2 2 2 at ... blah-blah-blah
Run Code Online (Sandbox Code Playgroud)

但是当我和Starman做同样的事情时,我得到了以下内容.

$ plackup -s Starman app.pl
2013/11/17-23:33:35 Starman::Server (type Net::Server::PreFork) starting! pid(527)
Resolved [*]:5000 to [::]:5000, IPv6
Not including resolved host [0.0.0.0] IPv4 …
Run Code Online (Sandbox Code Playgroud)

perl starman dancer

3
推荐指数
1
解决办法
625
查看次数

Perl Dancer 或 Node.js 用于小型应用程序

我正在使用 Perl Dancer 开发一个处理最少路由和请求的应用程序。

Perl Dancer(微型网络框架)和 Node.js 有什么区别?Node.js 和 Perl Dancer 哪个更好?

perl design-patterns node.js dancer web

3
推荐指数
1
解决办法
502
查看次数

标签 统计

dancer ×10

perl ×10

web ×2

design-patterns ×1

logging ×1

node.js ×1

random ×1

seo ×1

starman ×1

templates ×1

web-crawler ×1