如果你有一个名为的文件example.yaml
包含以下内容:
- subject: maths
.
我怎么抓住字符串- subject
?
我已经可以阅读该文件的内容,但想知道如何从中获取特定的字符串.
注意:我知道正则表达式可能有所帮助,但从未使用它,并会感谢任何帮助.
我正在升级到grails 2.1.x,并且需要重做一些旧式测试.
我刚刚为我的spock Spec添加了一个新测试,对于这个测试,我需要模拟一个额外的Domain类.
在此之前,我有:
@Mock([Event, EventType])
Run Code Online (Sandbox Code Playgroud)
我现在有:
@Mock([Event, EventType, Notification])
Run Code Online (Sandbox Code Playgroud)
Notification.groovy与Event和EventType(在grails-app/domain下)位于相同的包和物理目录中,因此它绝对是一个grails域类.
当我尝试运行测试时,我得到以下堆栈跟踪:
org.codehaus.groovy.grails.exceptions.GrailsConfigurationException: Cannot add Domain class [class x.y.Notification]. It is not a Domain!
at org.codehaus.groovy.grails.commons.DefaultGrailsApplication.addArtefact(DefaultGrailsApplication.java:911)
at org.codehaus.groovy.grails.commons.DefaultGrailsApplication.addArtefact(DefaultGrailsApplication.java:615)
at grails.test.mixin.domain.DomainClassUnitTestMixin.mockDomain(DomainClassUnitTestMixin.groovy:131)
at grails.test.mixin.domain.DomainClassUnitTestMixin.mockDomain(DomainClassUnitTestMixin.groovy:128)
Run Code Online (Sandbox Code Playgroud)
当我通过兔子洞并开始调试执行时,我到达DomainClassArtefactHandler的这一部分(第87行):
// make sure the identify and version field exist
testClass.getDeclaredField(GrailsDomainClassProperty.IDENTITY);
testClass.getDeclaredField(GrailsDomainClassProperty.VERSION);
Run Code Online (Sandbox Code Playgroud)
这会引发异常,因为我猜id字段不存在
因此出现了问题,在执行此操作之前不会添加GORM字段.
有没有人建议我需要做什么?我是否需要将我的域类标记为@Entity(这实际上使我的测试通过)?
我很确定我的单元测试不能强制通过.
有什么建议?
更新: 实际上,我刚刚发现只有当我在IDE中运行单元测试时才会出现这个问题:intellij Idea 12.1
创建的问题,测试应用程序在这里:
http://jira.grails.org/browse/GRAILS-9989
http://youtrack.jetbrains.com/issue/IDEA-105087
当我删除两个域类中的静态映射块时,测试通过!
我试图找出是否可以从阻塞场景切换到更具反应性的模式.
我有传入的更新命令到达队列,我需要按顺序处理它们,但只需要处理相同实体的那些命令.本质上,我可以创建任意数量的并行更新事件流,只要没有两个流包含有关同一实体的事件.
我在想主要队列的消费者可能能够利用amqp的路由机制和临时队列,为每个实体id创建临时队列,并将消费者挂钩.一旦订户完成并且当前没有关于所讨论的实体的其他事件在队列中,则可以丢弃该队列.
这种情况是经常使用的吗?有没有更好的方法来实现这一目标?在我们当前的系统中,我们使用基于id的命名锁来防止并发更新.
我已经在Android工作室中创建了一个虚拟Android项目,我可以让它运行,但编辑器本身无法找到R类.实际上我找不到gen文件夹.我想也许应该将该文件夹添加为源文件夹或类依赖项,但我找不到它.
有人可以帮忙吗?
我们需要能够连接到多个 Elasticsearch 服务器。我们有一个简单的 Elasticsearch 客户端,使用 Micronaut 的声明式方法进行定义。
然而,作为一个多租户环境,我们需要能够定义许多这样的客户端。这些客户端中的每一个显然都有不同的 URL,并且需要使用不同的 HTTPFilter 进行身份验证。
Micronaut 是一个专注于编译时的框架,我如何动态创建许多由配置选项定义的此类 bean?
更新:
我发现@Factory
与@EachBean
注释相结合可能是一种有前途的方法,但声明性 HTTP 客户端是一个接口,而不是一个具体的类。如何仅基于接口实例化这样的客户端?
请参阅https://docs.micronaut.io/latest/guide/index.html#eachBean
我正在尝试使用变量中的规则集合定义的顺序来定义 SES 规则集。
我已经尝试过https://github.com/hashicorp/terraform-provider-aws/issues/24067中的解决方案来使用after
资源的属性,它确实创建了第一个规则,但在创建第二个规则时失败了,并且所有后续规则,因为第一个规则尚不存在(after=null 的规则)。我想这需要一些时间来完成。depends_on
据我所知,不适用于动态依赖项,所以这也不会成功。
如果我重新运行应用,则会创建第二条规则,但所有其他规则都会失败。
我的recipients_by_position
地图由 0 填充位置索引(即“01”、“02”等):
这是我的代码
locals {
recipients = {
"mail1-recipient1" = {
short_name = "mail1"
domain = "mail1.domain.com"
recipient = "recipient1"
position = 1
target_bucket = "bucket1"
}
"mail1-recipient2" = {
short_name = "mail1"
domain = "mail1.domain.com"
recipient = "recipient2"
position = 2
target_bucket = "bucket1"
}
"mail2-recipient1" = {
short_name = "mail2"
domain = "mail2.domain.com"
recipient = "recipient1"
position = 3
target_bucket = "bucket2"
}
} …
Run Code Online (Sandbox Code Playgroud) 我试图通过在我的控制器中放置一个睡眠循环来在集成测试中引发服务器超时。我确实很感激那些想要提供帮助的人,但请不要问我为什么这样做,或者提出更好的方法来实现你认为我想要实现的目标:我只是想看到超时发生,或者理解为什么会这样没有发生。
为此,我将连接超时设置为一个较小的值。
server:
tomcat:
connection-timeout: 1000
Run Code Online (Sandbox Code Playgroud)
我可以看到套接字超时设置为那个小值,所以在SocketWrapper
配置方面我认为我没问题。
然而,在 NioEndpoint 中,我可以看到 Poller 在此测试中未能评估 true:
} else if ((socketWrapper.interestOps() & SelectionKey.OP_READ) == SelectionKey.OP_READ ||
(socketWrapper.interestOps() & SelectionKey.OP_WRITE) == SelectionKey.OP_WRITE) {
Run Code Online (Sandbox Code Playgroud)
(这是图书馆tomcat-embed-core:9.0.4.1
,951 路)
它无法评估为 true,因为除了第一次我的断点在那里被激活之外,每次socketWrapper.interestOps()
都是0
如此,而且第一次,超时不应该发生。
我可以做些什么不同的事情吗?
我正在尝试创建一个新的 grails 3.3.0 应用程序,其中包含一些简单的域类。
我还使用新的 HibernateSpec(GORM 6.1.x 附带)为我的单元测试创建内存中 H2 数据库。
我在以前版本的 grails 中使用了这种技术,但现在在 grails 3.3.0 中我遇到了系统故障。
Hibernate 似乎创建了这些表,但是当我尝试在单元测试中执行查询时,它抱怨找不到该表。
dataSource {
pooled = true
jmxExport = true
driverClassName = "org.h2.Driver"
username = "sa"
password = ""
logSql = true
}
environments {
development {
dataSource {
dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''
url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE;DATABASE_TO_UPPER=false"
}
}
test {
dataSource {
dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', …
Run Code Online (Sandbox Code Playgroud) 我创建了一个 kv(版本 2)秘密引擎,安装在 /secret 上:
$ vault secrets list
Path Type Accessor Description
---- ---- -------- -----------
cubbyhole/ cubbyhole cubbyhole_915b3383 per-token private secret storage
identity/ identity identity_9736df92 identity store
secret/ kv kv_8ba16621 n/a
sys/ system system_357a0e34 system endpoints used for control, policy and debugging
Run Code Online (Sandbox Code Playgroud)
我创建了一项策略,应该授予管理员访问以下所有内容的权限myproject
:
$ vault policy read myproject
path "secret/myproject/*" {
capabilities = ["create","read","update","delete","list"]
}
Run Code Online (Sandbox Code Playgroud)
我在适当的路径中创建了一个秘密(带有根令牌):
$ vault kv put secret/myproject/entry1 pass=pass
Key Value
--- -----
created_time 2022-05-11T15:06:49.658185443Z
deletion_time n/a
destroyed false
version 1
Run Code Online (Sandbox Code Playgroud)
我创建了一个已分配给定策略的用户:
$ …
Run Code Online (Sandbox Code Playgroud)