小编Phi*_*hil的帖子

相交的Mongoid"in"-Queries

根据显式合并的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)

难道我做错了什么?

ruby-on-rails mongodb mongoid

9
推荐指数
1
解决办法
4926
查看次数

RSpec/Mongoid:期望改变嵌入式模型的数量

我有两个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)

rspec ruby-on-rails mongoid

7
推荐指数
1
解决办法
4107
查看次数

Swift:如何在测试期间不加载 AppDelegate

我有一个 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/

[2] https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Miscellaneous/AppKit_Functions/#//apple_ref/c/func/NSApplicationMain

macos cocoa swift

7
推荐指数
1
解决办法
1506
查看次数

Openshift:自动更新上游图像

在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)

openshift openshift-origin

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

OS X Widget模拟器中没有网络连接(HTTPS)

我正在使用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)

小部件模拟器应该能够做外部连接,是吗?

xcode swift

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