跳转到主要内容

基于类的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
```

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

fabriclassed-0.4.6.tar.gz (11.7 kB 查看散列)

上传时间

由以下组织支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页