小编p0d*_*eje的帖子

在RSpec中自动共享上下文

我想在我的规范之间分享一个memoized方法.所以我尝试使用像这样的共享上下文

RSpec.configure do |spec|
  spec.shared_context :specs do
    let(:response) { request.execute! }
  end
end

describe 'something' do
  include_context :specs
end
Run Code Online (Sandbox Code Playgroud)

它工作正常.但我有大约60个spec文件,所以我不得不明确地在每个文件中包含上下文.有没有办法自动包含let所有示例组的共享上下文(或至少定义)spec_helper.rb

像这样的东西

RSpec.configure do |spec|
  spec.include_context :specs
end
Run Code Online (Sandbox Code Playgroud)

ruby rspec

15
推荐指数
3
解决办法
4602
查看次数

黄瓜+ parallel_tests.HTML结果?

我目前正尝试为我们的Cucumber + Watir-WebDriver验收测试实现parallel_tests.到目前为止它很棒.

但是,我们已经习惯了来自Cucumber的漂亮HTML报告,其中包含失败场景的嵌入式屏幕截图.Cucumber将报告创建为具有所有功能的单个HTML文件.但是对于parallel_tests,这个HTML文件被最后一次调用的Cucumber进程覆盖,因此不完整.

是否可以为每个功能文件生成多个HTML报告或生成HTML报告?

cucumber

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

是否有任何情况需要而不是Ruby中的每一个?

我知道这for i in arrarr.each范围略有不同,每个人都在说迭代器是可取的,但我想知道是否有任何情况下循环是可取的以及它为什么(因为迭代器更惯用)?

ruby

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

鼠标事件后,自定义碳键事件处理程序失败

我正在尝试编写一个自定义的NSMenu,它能够列出键输入并拦截必要的事件.这是为我的开源剪贴板管理器提供简单的搜索功能.

看起来这样做的唯一方法是安装一个自定义Carbon事件处理程序,它将侦听键事件并相应地处理它们,但似乎这样的自定义处理程序存在问题.

通常情况下,我可以传播下探至其他处理的事件(例如,系统的),他们应该被正常处理.这可以通过简单的回调来完成:

let eventHandlerCallback: EventHandlerUPP = { eventHandlerCallRef, eventRef, userData in
  let response = CallNextEventHandler(eventHandlerCallRef, eventRef!)
  print("Response \(response)")
  return response
}
Run Code Online (Sandbox Code Playgroud)

此回调功能完美,并Response 0始终打印.此响应意味着事件处理正确.

但是,一旦我们在键盘事件之前发送鼠标事件,事情会变得奇怪.在这种情况下,回调失败并打印.此响应表示事件未正确处理.Response -9874

看起来事件无法在我的自定义视图下面的某个地方处理,我不知道究竟在哪里或如何克服这个问题.

为了重现,我已经将代码上传到Gist,可以将其添加到XCode playground并运行.一旦你看到弹出菜单,按某些键(最好是方向键,因为它们不会关闭菜单),然后观察Response 0在控制台中.之后,将光标移动到菜单内并按下更多箭头键.你Response -9874现在应该在控制台中看到.

cocoa macos-carbon appkit swift

6
推荐指数
1
解决办法
349
查看次数

为什么分配给变量常量更新

为什么当我将常量赋给变量并更新它时,常量会更新为?它是预期的行为还是错误?

ruby-1.9.3-p0 :001 > A = { :test => '123' }
 => {:test=>"123"} 
ruby-1.9.3-p0 :002 > b = A
 => {:test=>"123"} 
ruby-1.9.3-p0 :003 > b[:test] = '456'
 => "456" 
ruby-1.9.3-p0 :004 > A
 => {:test=>"456"} 
Run Code Online (Sandbox Code Playgroud)

ruby constants

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

PostgreSQL使用Puppet与SQL_ASCII一起安装

我正在尝试构建使用Puppet配置的Vagrant盒子.

我使用http://files.vagrantup.com/precise64.box上的 Ubuntu 12.04 LTS框.

我还使用http://forge.puppetlabs.com/puppetlabs/postgresql模块安装带有以下清单的PostgreSQL:

class db {
  class { 'postgresql': version => '9.1' }
  class { 'postgresql::server': }
}
class { 'db': }
Run Code Online (Sandbox Code Playgroud)

它安装正确,但数据库是使用SQL_ASCII编码创建的:

$ psql -l -U postgres
                             List of databases
   Name    |  Owner   | Encoding  | Collate | Ctype |   Access privileges
-----------+----------+-----------+---------+-------+-----------------------
 postgres  | postgres | SQL_ASCII | C       | C     |
 template0 | postgres | SQL_ASCII | C       | C     | =c/postgres          +
           |          |           |         |       | postgres=CTc/postgres
 template1 | …
Run Code Online (Sandbox Code Playgroud)

postgresql ubuntu puppet

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

Puppet中的执行序列

exec我的Puppet清单中有一系列:

  1. 第一个用二进制文件下载ZIP文件(除非已经安装了二进制文件)并将其保存到/tmp.
  2. 第二个拉开拉链.

当我第一次应用清单时,它可以正常工作.但是,当我清理/tmp并再次应用清单时,它会失败,因为第一个exec没有执行(这是正确的),但第二个仍然尝试执行并失败,因为ZIP文件不存在.

如果第一个exec没有下载文件,如何修改清单以跳过第二个exec?

exec { 'ngrok-download':
  command => 'wget https://dl.ngrok.com/linux_386/ngrok.zip -O /tmp/ngrok.zip',
  unless  => 'which ngrok',
  path    => ['/bin', '/usr/bin'],
}

exec { 'ngrok-unzip':
  command => 'unzip ngrok.zip',
  cwd     => '/tmp',
  path    => ['/usr/bin'],
  require => Exec['ngrok-download'],
}
Run Code Online (Sandbox Code Playgroud)

puppet

2
推荐指数
1
解决办法
4218
查看次数

标签 统计

ruby ×3

puppet ×2

appkit ×1

cocoa ×1

constants ×1

cucumber ×1

macos-carbon ×1

postgresql ×1

rspec ×1

swift ×1

ubuntu ×1