Fabric ファイルの構成を保持するモジュールを作成しようとしています。この構成ファイルにはプロジェクトに依存する設定が保持されるため、すべてのプロジェクトで同じ fabfile を使用できます。
fabfile を次のようにします。
import config
from fabric.api import local
def deploy(env='staging'):
config.env = env
local("xcopy {project_dir} {deploy_target} /u /r /y".format(project_dir=config.project_dir,
deploy_target=config.deploy_target))
#Ok, this will be more involved than that, but it is enough to explain my problem
構成ファイルは次のようになります。
env = 'staging'
project_dir = r'c:\some\unimportant\path'
deploy_target = r'c:\some\target\path\based\on\{env}'.format(env=env)
fab deploy
またはを使用
fab deploy:staging
して、ステージング環境に展開し、運用環境fab deploy:production
に展開できます。
私が理解しようとしているのは、env 変数が変更されたときにモジュール内の変数を更新する方法です。
構成ファイルをできるだけシンプルにしたいのですが、理想的には変数の割り当てだけですが、本当に必要な場合はいくつかの機能を使用できます。設定ファイルには多くの変数があるため、global キーワードを使用して関数内の値を更新すると、非常に見苦しくなります。