我通過選項哈希傳遞一些參數在我的主流程文件:測試程序流產生失敗的選項
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