基于类的Fabric脚本通过Python元编程技巧实现
项目描述
#### 简介
我们有一些Fabric脚本违反了DRY原则。基于类的Fabric脚本可以解决这个问题。
这是一个通过在类中定义Fabric任务而不是仅仅作为模块级别函数的元编程技巧。
这种基于类的方案提供了继承和方法覆盖的好处。
#### 示例用法
```python
from fabriclassed import initialize
from fabriclassed.base import BaseFabric, DjangoFabric, VirtualenvFabric
from fabric import api as fab
class Fabric(BaseFabric)
remote_project_path = '/local/path/to/my_project'
local_project_path = '/remote/path/to/my_project'
def fab_task(self)
'''我的网站任务'''
fab.local('echo "Hello world"')
__all__ = initialize(Fabric(), __name__)
```
以'fab_'为前缀的每个方法都将变成一个fabric命令。运行fab -l得到
```
$ fab -l
可用命令
del_pyc 删除fabfile和子目录中的所有.pyc文件...
search 在目录中搜索源代码中的字符串...
task 我的网站任务
```
运行fab task得到
```
$ fab task
[localhost] local: echo "Hello world"
Hello world
完成。
```
#### 在虚拟环境下使用Django的扩展用法
DjangoFabric和VirtualenvFabric类包含各种在虚拟环境环境下与Django工作的工具。您可以根据需要一起使用这两个工具,也可以单独使用。
具有多个属性的Fabric类的示例
```python
from fabriclassed import initialize
from fabriclassed.base import BaseFabric, DjangoFabric, VirtualenvFabric
from fabric.api import lcd, local
class Fabric(BaseFabric, DjangoFabric, VirtualenvFabric)
search_dirs = []
hosts = ['website.com']
remote_project_path = '/local/path/to/my_project'
local_project_path = '/remote/path/to/my_project'
# django settings
managefile_path = './manage.py'
test_default_app = '我的主要Django应用程序的名称'
test_settings = 'settings_test_special_file'
shell_plus = True
devserver_port = 8000
devserver_params = ''
fixtures_dir = 'fixtures'
fixtures_format = 'json'
fixtures_map = (
'sites.site',
)
## 虚拟环境设置
use_virtualenv = True
virtualenv_dir = 'env'
patched_applications = [
## 虚拟环境修补的应用程序列表
]
diff_dir = 'my_relative_to_project_diffs_dir'
applications_dir = 'my_relative_to_project_apps_dir'
__all__ = initialize(Fabric(), __name__)
```
运行 fab -l 得到
```
可用命令
del_pyc 删除fabfile和子目录中的所有.pyc文件...
dev 运行Django的开发服务器
diff_dump 遍历修补应用程序的映射并创建差异文件...
patch 遍历'diffs'目录并对每个应用程序进行修补
search 在目录中搜索源代码中的字符串...
sh 运行Django的标准shell或django_extent的shell
symlink 从'apps'目录创建到site-packages或...
test 运行Django的测试。参数可以是应用程序名称,...
update_fixtures 将远程修复程序放入生产环境中的存储库,获取一个...
```
#### 安装
要安装fabriclassed的最新版本,只需使用以下命令
```
pip install fabriclassed
```
我们有一些Fabric脚本违反了DRY原则。基于类的Fabric脚本可以解决这个问题。
这是一个通过在类中定义Fabric任务而不是仅仅作为模块级别函数的元编程技巧。
这种基于类的方案提供了继承和方法覆盖的好处。
#### 示例用法
```python
from fabriclassed import initialize
from fabriclassed.base import BaseFabric, DjangoFabric, VirtualenvFabric
from fabric import api as fab
class Fabric(BaseFabric)
remote_project_path = '/local/path/to/my_project'
local_project_path = '/remote/path/to/my_project'
def fab_task(self)
'''我的网站任务'''
fab.local('echo "Hello world"')
__all__ = initialize(Fabric(), __name__)
```
以'fab_'为前缀的每个方法都将变成一个fabric命令。运行fab -l得到
```
$ fab -l
可用命令
del_pyc 删除fabfile和子目录中的所有.pyc文件...
search 在目录中搜索源代码中的字符串...
task 我的网站任务
```
运行fab task得到
```
$ fab task
[localhost] local: echo "Hello world"
Hello world
完成。
```
#### 在虚拟环境下使用Django的扩展用法
DjangoFabric和VirtualenvFabric类包含各种在虚拟环境环境下与Django工作的工具。您可以根据需要一起使用这两个工具,也可以单独使用。
具有多个属性的Fabric类的示例
```python
from fabriclassed import initialize
from fabriclassed.base import BaseFabric, DjangoFabric, VirtualenvFabric
from fabric.api import lcd, local
class Fabric(BaseFabric, DjangoFabric, VirtualenvFabric)
search_dirs = []
hosts = ['website.com']
remote_project_path = '/local/path/to/my_project'
local_project_path = '/remote/path/to/my_project'
# django settings
managefile_path = './manage.py'
test_default_app = '我的主要Django应用程序的名称'
test_settings = 'settings_test_special_file'
shell_plus = True
devserver_port = 8000
devserver_params = ''
fixtures_dir = 'fixtures'
fixtures_format = 'json'
fixtures_map = (
'sites.site',
)
## 虚拟环境设置
use_virtualenv = True
virtualenv_dir = 'env'
patched_applications = [
## 虚拟环境修补的应用程序列表
]
diff_dir = 'my_relative_to_project_diffs_dir'
applications_dir = 'my_relative_to_project_apps_dir'
__all__ = initialize(Fabric(), __name__)
```
运行 fab -l 得到
```
可用命令
del_pyc 删除fabfile和子目录中的所有.pyc文件...
dev 运行Django的开发服务器
diff_dump 遍历修补应用程序的映射并创建差异文件...
patch 遍历'diffs'目录并对每个应用程序进行修补
search 在目录中搜索源代码中的字符串...
sh 运行Django的标准shell或django_extent的shell
symlink 从'apps'目录创建到site-packages或...
test 运行Django的测试。参数可以是应用程序名称,...
update_fixtures 将远程修复程序放入生产环境中的存储库,获取一个...
```
#### 安装
要安装fabriclassed的最新版本,只需使用以下命令
```
pip install fabriclassed
```
项目详情
关闭
fabriclassed-0.4.6.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 3e1c5b6e61496fdc97e0b21c15597b532f41e61c6cfbfb3bb25aedb882b05cb2 |
|
MD5 | c74e1c3397c4c09002a079df3f9f88c6 |
|
BLAKE2b-256 | 8ff5d4fb3a0c7a2bb26a10094ec70565b3d985760a34a715ec653116605a5c47 |