我通过选项哈希传递一些参数在我的主流程文件:测试程序流产生失败的选项
Flow.create(environment: :ws, interface: 'MyTestLibrary::Interface', lib_version: Origen.top_level.lib_version) do
import "components/bist"
import "components/func"
pass 1, softbin: 55
end
的问题是,选择不留当其他子流被调用时是持久的。下面是拳头时间考验的接口被称为撬会议:
14: def initialize(options = {})
15: options = {
16: lib_version: nil
18: }.merge!(options)
=> 19: binding.pry
[1] pry(#<MyTestLibrary::Interface>)> options
=> {:lib_version=>"3.14", :environment=>:ws, :interface=>"MyTestLibrary::Interface"}
然而,这里是从第二次撬会议同样命中断点:
[1] pry(#<MyTestLibrary::Interface>)> options
=> {:lib_version=>nil}
我想我有几个问题:
- Aren't the main flow options supposed to be persistent to sub-flows,用户没有添加任何工作?
- 为什么界面被重新初始化?似乎应该只发生一次一代命令。
提前THX
- 编辑*
@Ginty,你在你的答案说以下内容:
至于传递到顶层的选项流程去吧,关于将它们传递给初始化并没有任何保证。相反接口应该创建启动和关闭的方法,如果要拦截它们:
但在docs,我看到下列规定:
对于运行它必须实现所有的方法的接口将被你的流程调用。也习惯于创建一个初始化方法,该方法将捕获传入Flow.create的任何选项(例如在我们的流程示例中将该环境声明为probe)。
此外,启动方法看起来像是一个回调,它在接口初始化后运行。在接口完成初始化之前,我使用选项散列传递的信息需要。下游用户不应该担心这是否会造成脆弱的运行顺序依赖性? 问候
看起来我错了有关不传进初始化,我重新写我的回答下面的正确理解其背后 – Ginty