9

なぜ:

from fabric.api import env, run

def update():
    env.hosts = ['apycat']
    run('cd /var/www/menu; svn up')

私がいるときは動作しませんがfab update

from fabric.api import env, run

env.hosts = ['apycat']

def update():
    run('cd /var/www/menu; svn up')

しますか?

ドキュメントでこれについて何も見つかりませんでした。

4

1 に答える 1

7

fabコマンドがすでにfabタスクのホストリストを作成した後にホストリストを指定しても機能しません。したがって、最初の例では、更新タスクにホストリストが設定されていないため、次のrun()を操作できます。これに関するドキュメントの適切なセクションはここにあります

ただし、最初のようなユースケースを2つの方法のいずれかで機能させることができることにも注意してください。最初にsettings()コンテキストマネージャーを使用します。

def foo():
    with settings(host_string='apycat'):
        run(...)

もう1つは、新しいapi関数execute()を使用しています。

def bar():
    run(...)

def foo():
    execute(bar, hosts=['apycat'])
于 2012-07-22T18:36:36.420 に答える