根据显式合并的mongoid文档(" 可查询#in - 默认为交叉"),我希望以下查询:
Contact.in(id: ['a', 'b']).in(id: ['b', 'c'])
Run Code Online (Sandbox Code Playgroud)
导致这样的事情:
=> #<Mongoid::Criteria
selector: {"_id"=>{"$in"=>["b"]}}
options: {}
class: Contact
embedded: false>
Run Code Online (Sandbox Code Playgroud)
但相反,我得到了所有可以想象的情况的覆盖:
[1] pry(main)> Contact.in(id: ['a', 'b']).in(id: ['b', 'c'])
=> #<Mongoid::Criteria
selector: {"_id"=>{"$in"=>["b", "c"]}}
options: {}
class: Contact
embedded: false>
[2] pry(main)> Contact.in(id: ['a', 'b']).intersect.in(id: ['b', 'c'])
=> #<Mongoid::Criteria
selector: {"_id"=>{"$in"=>["b", "c"]}}
options: {}
class: Contact
embedded: false>
[3] pry(main)> Contact.in(id: ['a', 'b']).union.in(id: ['b', 'c'])
=> #<Mongoid::Criteria
selector: {"_id"=>{"$in"=>["b", "c"]}}
options: {}
class: Contact
embedded: false>
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?
我有两个Mongoid模型:User和EmailAccounts.后者嵌入在用户模型中.该配置应该没问题,因为它通常有效.现在我正在尝试为我的用户编辑表单编写一个集成测试,如下所示:
describe 'Add EmailAccount' do
it 'Adds an email account', js: true do
user = FactoryGirl.create(:user_without_email_accounts)
visit edit_user_path(user)
expect{
click_link 'New Email Account'
within '.nested-fields' do
fill_in 'Account Name', with: 'New Email Account'
fill_in 'Other Field', with: 'Other Data'
end
click_button 'Save'
}.to change(EmailAccount, :count).by(1)
end
end
Run Code Online (Sandbox Code Playgroud)
由于EmailAccount是嵌入式模型,因此计数的更改始终为0.我可以以任何类似的方式检查EmailAccount计数器的更改吗?或者我必须采取不同的方式?这既不起作用:
}.to change(user.email_accounts, :count).by(1)
Run Code Online (Sandbox Code Playgroud) 我有一个 OS X 应用程序,它在启动时从服务器加载一些数据并将通知推送到NSUserNotificationCenter. 现在我遇到的问题是,在我的单元测试期间也会发生这种情况。我还没有发现任何方法可以防止这种情况发生。当然,我可以存根 HTTP 负载。但在某些情况下,我想测试加载,然后无论如何都会发送通知。
我想要做的是让测试运行不加载AppDelegate而是一个我只用于测试的假测试。我找到了几个关于如何使用 的示例 [1] UIApplicationMain,您可以在其中传递特定的 AppDelegate 类名。对NSApplicationMain[2] 来说,这是不可能的。
我试过的是以下内容:
@NSApplicationMain从 中删除AppDelegate.swift,然后添加了main.swift具有以下内容的 :
class FakeAppDelegate: NSObject, NSApplicationDelegate {
}
NSApplication.sharedApplication()
NSApp.delegate = FakeAppDelegate()
NSApplicationMain(Process.argc, Process.unsafeArgv)
Run Code Online (Sandbox Code Playgroud)
此代码在测试之前运行,但根本没有任何效果。
我可能不得不说:我的 AppDelegate 几乎是空的。为了处理 MainMenu.xib 的东西,我制作了一个单独的视图控制器,它在awakeFromNib.
[1] http://www.mokacoding.com/blog/prevent-unit-tests-from-loading-app-delegate-in-swift/
在Openshift中,我们有一个BuildConfig,它依赖于hub.docker.com(ubuntu:xenial)中的映像。
strategy:
type: Docker
dockerStrategy:
from:
kind: ImageStreamTag
namespace: <my namespace>
name: 'ubuntu:xenial'
forcePull: true
Run Code Online (Sandbox Code Playgroud)
为此,我使用以下配置创建了一个ImageStream:
apiVersion: v1
kind: ImageStream
metadata:
name: ubuntu
namespace: <my namespace>
spec:
dockerImageRepository: registry.hub.docker.com/library/ubuntu
Run Code Online (Sandbox Code Playgroud)
我现在想在上游Ubuntu映像更改时运行BuildConfig。我可以通过运行手动更新Ubuntu映像oc import-image ubuntu。
除了创建外部cron作业以外,还有另一种自动更新映像的方法吗?
版本号
OpenShift Master: v1.3.1
Kubernetes Master: v1.3.0+52492b4
Run Code Online (Sandbox Code Playgroud) 我正在使用Swift构建OS X Today Widget.这应该通过HTTPS调用JSON API并显示结果.到现在为止还挺好.
但是当我在Widget模拟器中运行小部件时,我总是收到错误"找不到具有指定主机名的服务器".URL是正确的,当我在命令行上进行卷曲时它会起作用.看起来Widget模拟器不执行任何DNS查找或完全阻止https流量.
我正在使用Alamofire,但我也尝试过使用NSURLSession.结果相同.
let url = NSURL(string: "https://httpbin.org/get")
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
debugPrint(error)
}
task.resume()
Run Code Online (Sandbox Code Playgroud)
导致:
Optional(
Error
Domain=NSURLErrorDomain
Code=-1003 "A server with the specified hostname could not be found."
UserInfo={
NSUnderlyingError=0x7fe1f3e341a0
ErrorDomain=kCFErrorDomainCFNetwork
Code=-1003 "(null)"
UserInfo={
_kCFStreamErrorCodeKey=-72000,
_kCFStreamErrorDomainKey=10}
},
NSErrorFailingURLStringKey=https://httpbin.org/get,
NSErrorFailingURLKey=https://httpbin.org/get,
_kCFStreamErrorDomainKey=10,
_kCFStreamErrorCodeKey=-72000,
NSLocalizedDescription=A server with the specified hostname could not be found.
}
)
Run Code Online (Sandbox Code Playgroud)
小部件模拟器应该能够做外部连接,是吗?