2012-09-13 28 views
2

我有很多定義爲任務的子類的任務,我有roledefs設置類似於以下:當我的任務從Task類繼承時,如何用@roles修飾Fabric任務?

env.roledefs = { "web": ["1.2.3.4"], "db": ["5.6.7.8"] } 

class Foo(Task): 
    name = "foo" 

    def run(self): 
    pass 

foo = Foo() 

隨着@roles裝飾我可以裝點的任務,如果他們是在一個模塊中的功能,但我不知道如何將此應用於Task類。裝飾類或其運行功能似乎不起作用。

我使用的面料1.4.0

回答

1

認爲你應該能夠使用init它想:

def __init__(self): 
    env.roles = ['web'] 

或使用執行:

execute(foo, roles='web') 
+0

第一個例子沒有按」不要說從命令行運行時找不到'foo'任務。第二我不確定我可以使用,因爲我不想立即執行任務,只有在命令行指定時纔可以使用。 –

+0

已更新爲建議初始化,並保持清晰的緣故。 – Morgan

+0

在'__init__'中設置角色看起來很有效,但是使用我使用的版本,我不得不使用'env.roles = [「web」]'。這是應該如何完成的?我當然無法在文檔中找到它。感謝您的幫助@Morgan。 –