Paul Walsh
2013-11-10 16:17:01 UTC
Hi again,
I've come up against this myself a few times, again, a question of "best practices".
I use a configuration object of my own `CONFIG` throughout my package of fab tasks. But I continue to be bugged as to whether I should simply put all my config directly onto `env`. From the docs, I'm honestly not sure if the recommendation is for or against it. Quoting:
"This aspect of env is largely historical: in the past, fabfiles were not pure Python and thus the environment was the only way to communicate between tasks.
Nowadays, you may call other tasks or subroutines directly, and even keep module-level shared state if you wish.In future versions, Fabric will become threadsafe, at which point env may be the only easy/safe way to keep global state."
And then I see that in Invoke/Fabric 2, the end object won't exist.
Is there any current best practice in the community on this?
An example:
CONFIG = {
'staging': {'machine_location': '123.545.232.67', 'machine_port': 80},
'production': {'machine_location': '123.454.232.24', 'machine_port': 443},
}
In some places I'll merge this with values from `env` too, for example, when I set env.user to be owner of a process.
Any advice is appreciated.
Thanks,
Paul.
I've come up against this myself a few times, again, a question of "best practices".
I use a configuration object of my own `CONFIG` throughout my package of fab tasks. But I continue to be bugged as to whether I should simply put all my config directly onto `env`. From the docs, I'm honestly not sure if the recommendation is for or against it. Quoting:
"This aspect of env is largely historical: in the past, fabfiles were not pure Python and thus the environment was the only way to communicate between tasks.
Nowadays, you may call other tasks or subroutines directly, and even keep module-level shared state if you wish.In future versions, Fabric will become threadsafe, at which point env may be the only easy/safe way to keep global state."
And then I see that in Invoke/Fabric 2, the end object won't exist.
Is there any current best practice in the community on this?
An example:
CONFIG = {
'staging': {'machine_location': '123.545.232.67', 'machine_port': 80},
'production': {'machine_location': '123.454.232.24', 'machine_port': 443},
}
In some places I'll merge this with values from `env` too, for example, when I set env.user to be owner of a process.
Any advice is appreciated.
Thanks,
Paul.