问题标签 [ratpack]

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 回答
450 浏览

maven - Ratpack 1.5.4 hystrix 依赖无法解决

我无法编译使用 Ratpack 1.5.4 的项目,因为缺少对 Hystrix 1.5.13 的依赖项,无法解决。

http://search.maven.org/#search%7Cga%7C1%7Cg%3A"com.netflix.hystrix"%20AND%20v%3A"1.5.13"

这里有什么问题?

0 投票
1 回答
305 浏览

java - 如何使用 RequestFixture 在 Ratpack 中模拟会话?

我要做的是测试身份验证处理程序,但我的问题归结Session为注册表中没有实例。

一个示例测试:

(额外的重新抛出是为了让我们看到在ratpack测试中抛出的异常,因为默认情况下它会被捕获并隐藏在结果中。)

我知道原则上我可以创建一个 Session 实例并使用一个registry { add <Session instance> }块将其添加到注册表中,但是我已经深入研究了 Ratpack 代码,并且创建一个 Session 对象需要获取许多不同的其他组件并将它们传递给SessionModule#sessionAdaptor(或DefaultSession构造函数)。我找不到任何这样做的例子,看来这个调用是由 Guice 依赖注入魔法处理的,我无法解开。

在应用程序中执行此操作的常用方法是使用bind { module SessionModule }块,但这不能从RequestFixture#execute.

由于会话是任何 Web 应用程序的生计,我的直觉是这可能是一个容易解决的问题,我只是没有找到正确的方法吗?

0 投票
1 回答
449 浏览

java - Ratpack 的 Promise.cache 与 ParallelBatch 中的多个下游承诺

在将 Ratpack与多个下游 promise 和 结合使用时,我遇到NullPointerException了 Ratpack 的问题,从文档中我不清楚我的用法是否不正确,或者这是否代表 Ratpack 中的错误。Promise.cacheParallelBatch

这是一个演示问题的简化测试用例:

在本地运行此测试 10000 次会导致失败率约为 10 / 10000,NullPointerException如下所示:

不在cache此测试用例中使用会使问题消失,因为不会两次订阅每个缓存的 Promise。

我的问题是:这是对 Ratpack API 的错误使用,还是代表框架中的错误?如果是前者,你能指出我在文档中解释为什么这种用法是错误的吗?

0 投票
1 回答
54 浏览

java - 有没有办法解决 RatpackPac4j#requireAuth 不设置 WWW-Authenticate 标头?

在 Ratpack (1.5.x) 应用程序的上下文中测试 Pac4j (2.x) 身份验证时,我发现当我使用此处理程序时:

...未经授权的请求以 401 状态被正确拒绝,并且RFC-7235声明WWW-Authenticate应添加标头,但事实并非如此。

我在此处的 RatpackPac4j 跟踪器上提出了一个问题,但由于 Pac4j v3 正确地实现了这一点,它被关闭为(我推断)“无法修复”。而且 RatpackPac4j 还没有升级到与 Pac4j v3 一起工作。

那么:是否可以插入一些对所有响应进行后处理的东西,例如,根据响应有条件地添加一个标头?

除了 - 我在我的 gradle 配置中使用以下版本:

0 投票
1 回答
352 浏览

java - 给定一个 Ratpack RequestFixture 测试,我怎样才能让夹具调用 Request#beforeSend?

这个问题是在 Ratpack RequestFixtureSpock 测试的上下文中,用于通过 进行身份验证的 Ratpack 链RatpackPac4j#requireAuth,并对缺少的WWW-Authenticate标头采用解决方法(如本问题的答案中所述)

我遇到的问题是,我发现从(的包装器)#beforeSend获得响应时似乎没有调用它。解决方法取决于此工作,因此我无法对其进行测试。有没有办法在返回的响应上调用?GroovyRequestFixture#handleRequestFixture#handle#beforeSendHandlingResult

例如,此测试用例会因断言存在WWW-Authenticate标头而失败,即使改编自此的代码在实际应用程序中调用时正确插入了标头。被测链是testChain,跳到最后失败的断言:

0 投票
1 回答
228 浏览

gradle - Ratpack + Thymeleaf + shadowJar - 解析模板“home”时出错,模板可能不存在或无法访问

我正在开发 ratpack.io 网络应用程序并使用 gradle 作为构建工具。模板从目录中的模板文件呈现,src/main/thymeleaf在运行时可以正常工作(仅使用gradle run)。

我在创建 uber jar 时遇到了问题,其中不包含模板文件。当我打开输出 jar 文件时,我看到thymeleaf目录是空的。

我知道 shadow-jar 过程的一部分是将所有依赖项合并到一个 jar 中,但我不确定我还需要做什么包括模板文件。我尝试创建特殊规则来包含 html 文件,但最终我只得到了 jar 中的 html 文件,甚至没有来自 thymeleaf 目录的文件。

  • 我需要配置什么来获取这个 uber jar 中包含的模板文件?
  • 如果我真的得到了包含在 jar 模板目录中的文件,我是否需要更新模板解析器以从 jar 与当前工作目录中提取文件?
0 投票
1 回答
38 浏览

https - ratpack:实现自定义 PublicAddress 以强制 https

我在一个 pac4j 邮件线程上讨论为什么即使原始页面请求是通过 https 提供的,ratpack-pac4j 使用的重定向 url 也使用 http。我做了一些挖掘,看起来 ratpack-pac4j 正在使用 InferringPublicAddress。这适用于本地开发,但因为我的 elasticbean 主机代理 443 到 80,ratpack-pac4j 认为它通过 http 并使用 http 作为重定向 url。我希望此调用在服务器上通过 https 进行。

我正在尝试注册一个自定义 PublicAddress 类,该类始终在开发模式下返回 http,但在生产模式下返回 https:

但是当我调用 ctx.get(PublicAddress.class) 时,它仍然返回 InferringPublicAddress。我是否错误地注册了自定义 PublicAddress?

0 投票
1 回答
267 浏览

groovy - 如何在 Groovy spock 测试中注入模拟的 ratpack 客户端

我是 Kotlin 和 Groovy 的新手,不确定实现这一点有多可行。

我有一个远程调用的 http 客户端

然后是带有随机绑定和注册的 MyApiApp 配置

然后是一个 AbstractModule,从我可以看到一个外部库来创建一个更具可读性的配置:

MyEndpoint 被注入到 myApp 的配置中,并且端点变得可用。端点运行良好,但下面是一个伪代码,大致显示了它的作用。

现在问题来了。我正在编写 groovy 集成测试,我想对我的 ratpack 服务器进行 httpCall,但我希望对 myClient 的后续调用进行模拟以消除依赖关系。

这就是问题所在。端点 foo 被成功命中,但 myClient 未被模拟。BindingImposition 做了一些事情,因为它将 myClient 替换为其中包含 null HttpClient 的那个。

是否有可能将模拟客户端注入我的端点?我宁愿不创建 EmbeddedApp,而只是模拟 MyClient。我也尝试过 UserRegistryImpositions 但到目前为止我还没有设法正确模拟 MyClient。

我已经使用 .NET Core 2 实现了这一点,但还没有找到使用这个框架的方法。

非常感谢任何帮助。谢谢

0 投票
1 回答
277 浏览

ratpack - 处理 Ratpack Context.parse 异常

我正在使用 Ratpack 框架在 Kotlin 中编写一个 API,使用 Jackson 来反序列化 JSON 请求主体。当我发送无效的请求正文时,我的应用程序会引发 500 内部服务器错误异常:

此端点被无效请求正文命中时的异常是:

我有一个通用错误处理程序,它检查抛出的异常类型,并返回适当的状态。但是在这种情况下,检查 MissingKotlinParameterException 并返回 400 bad request 没有意义,因为在其他情况下可能会抛出此异常。

此外,我可以在 ctx.parse 行之后添加 onError,但这将是一个大型 API,并且在每个处理程序中实现它并不遵循具有通用错误处理程序以保持 API 一致的模式。有没有办法让 Ratpack 在解析失败时抛出特定异常(类似于ParseFailedException),以便我可以捕获它并返回 400 错误请求?

0 投票
1 回答
171 浏览

groovy - 在 Ratpack 中使用 `prefix {}` 方法而不是 `all { byMethod { } }` 会导致 405 Method Not Allowed - 出了什么问题?

我刚刚开始阅读“Learn Ratpack”,在本书一开始的一个例子中,作者使用'all','byMethod','get'和'post'来举例说明如何解析请求数据,他的工作方式,但我尝试使用'prefix','get'和'post',但我无法得到相同的结果,它返回405-Method Not Allowed。

我试图在文档中找到一些东西,但我不明白为什么带有“前缀”的行为。

示例版本

405版

就是这样,我错过了什么?