我想在我的规范之间分享一个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) 我目前正尝试为我们的Cucumber + Watir-WebDriver验收测试实现parallel_tests.到目前为止它很棒.
但是,我们已经习惯了来自Cucumber的漂亮HTML报告,其中包含失败场景的嵌入式屏幕截图.Cucumber将报告创建为具有所有功能的单个HTML文件.但是对于parallel_tests,这个HTML文件被最后一次调用的Cucumber进程覆盖,因此不完整.
是否可以为每个功能文件生成多个HTML报告或生成HTML报告?
我知道这for i in arr
与arr.each
范围略有不同,每个人都在说迭代器是可取的,但我想知道是否有任何情况下循环是可取的以及它为什么(因为迭代器更惯用)?
我正在尝试编写一个自定义的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
现在应该在控制台中看到.
为什么当我将常量赋给变量并更新它时,常量会更新为?它是预期的行为还是错误?
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) 我正在尝试构建使用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) exec
我的Puppet清单中有一系列:
/tmp
.当我第一次应用清单时,它可以正常工作.但是,当我清理/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)