2011-06-01 61 views
4

在将我的生产应用上传到GAE之前,我需要做很多事情。它变得非常单调和容易出错,我想知道一些最佳实践如何处理以下要求,并且如果已经有一些工具可以做到这一点:GAE:管理我的应用的开发和生产版本

我的本地机器上的开发和测试环境:想要用我的JavaScript文件,生产调试版本:希望再缩小文件,并将它们连接成1,如:在mytemplate.html

<script src="script1.js"></script> 
<script src="script2.js"></script> 
<script src="script3.js"></script> 
<script src="script4.js"></script> 
<script src="script5.js"></script> 

给这个代码通缉:一些进程自动运行如下的文件,将它们连接到1 ,并编辑上面的代码,以便它变成:

<script src="mytemplate.js"></script> 

开发和测试:使用settings.dev.py
制作:用settings.py

一些方法来自动开关推到生产时的settings.py。即,我不要手动编辑所有py文件,并将所有对settings.dev.py的引用更改为settings.py。配置文件是推荐的方法吗?在推送到产品之前,我更改了我的config.py文件中的设置,然后代码的其余部分挑选了正确的settings.py?另外,在Python中,配置文件是一个.py文件,或者通常是其他的东西 - 也就是说,规范是什么? (在.net中,我们通常使用XML存储配置)

回答

2

所以,你可以检测开发或生产您的应用程序是否正在运行如下:

import os 
DEV = os.environ['SERVER_SOFTWARE'].startswith('Development') 

沿着你的Django模板通过这个布尔,写当你想条件语句的行为改变:

{% if DEV %} 
    <script src="script1.js"></script> 
    <script src="script2.js"></script> 
    <script src="script3.js"></script> 
    <script src="script4.js"></script> 
    <script src="script5.js"></script> 
{% else %} 
    <script src="mytemplate.js"></script> 
{% endif %} 

要在最后一分钟处理微小,编写第一个运行的任何预部署任务的定制部署脚本,然后调用appcfg.py update。当你想部署时,运行你的部署包装器,而不是直接调用appcfg.py。

你可以用几种不同的方式处理你的settings.py。对每个环境条件使用一个设置文件,根据环境导入不同的设置文件,或者将生产文件作为部署包装的一部分进行交换。

+0

然后webapp.WSGIApplication([...],debug = DEV) – 2011-06-02 04:09:58

+0

关于此问题的一些后续问题: 1.是否可以声明一些全局模板可用的全局变量,而不必传递DEV变量,在每一个方法调用? – morpheus 2011-06-03 01:23:25

相关问题