在多个开发环境中使用Zend Tool

问题描述:

在任何给定的Zend Framework项目上,我都可以在2个或3个位置工作 - 我的工作PC,家用PC或MacBook。我的源代码始终在SVN中,我通常在开发服务器上工作,然后将完成的工作推送到生产服务器。在这种环境中,我从来不太确定我应该在哪里使用Zend_Tool。在多个开发环境中使用Zend Tool

我怎么看它,有2种选择:

  1. 设置了Zend_Tool工作 本地每个开发 环境,然后按从那里开发服务器 ,在清单 等与每个检查Zend_Tool用法。
  2. 使用Zend_Tool直接在 开发服务器上,然后下载 每个添加/更改然后推入到 SVN。

我会倾向于说最可靠的方式将是多个Zend_Tool设置,但我很想听听人们是否可以考虑任何潜在的问题,或者为什么我应该做出不同的选择。

谢谢。

+0

我一直有点困惑的地方太适合。 – 2010-09-04 04:15:57

我们在这里做的工作是创建一个实例配置。通过这样做,我们有3个配置,取决于应用程序运行的环境。

  1. 本地机器(在编程时调试)。
  2. 开发(用于测试我们的代码之前推动到 生产)。
  3. 生产(生活环境)。

然后,我们根据我们在配置文件中指定的环境,设置配置类以加载具有我们工具的路径和数据的配置。

基本上我们有一个名为Chooser.txt的文件,它将在文件中为要运行的环境配置文件的文件名。当我们想在本地运行它时,我们将Chooser.txt文件编辑为local_config.txt(我们使用.txt,因此我们可以评估某些配置,然后我们访问配置目录,以便无人可以查看它)。当我们推送到dev服务器时,我们然后编辑Chooser.txt来说dev_config.txt等等。然后在dev_config.txt或local_config.txt中,我们将有工具和php设置等配置变量...

现在说这个我们安装在每个环境中的工具,所以我们将我们的工具和库我们当地的环境,开发和生产。通过在一个本地化环境中使用我们的工具,它使得在更新/修补工具时进行测试变得更加容易,因此您不仅需要在生产服务器上修补这些工具,而且还应该先在开发服务器上测试它们。

Zend_Tool实际上是打算在开发环境中使用。您在多个地方使用它的感觉是非常正确的,实际上,唯一的问题是Zend_Tool用于了解项目上不同配置的XML之间的同步,但只有在相同修订期间进行重大更改时才会发生这种情况在不同的工作副本上(常见的版本控制限制/问题/不管)。

除此之外,你应该没有任何问题。

Zend_Tool硬编码的APPLICATION_ENV到“发展”的文件Tool/Project/Context/Zf/BootstrapFile.php

中你可以得到所有的鲁莽和更改源代码(不是一个好主意,但它会工作)。应用这个补丁将允许您使用环境shell变量来告诉你Zend_Tool在什么信封

--- BootstrapFile.php (saved version) 
    +++ (current document) 
    @@ -106,9 +106,11 @@ 
        define('APPLICATION_PATH', $this->_applicationDirectory->getPath()); 
        $applicationOptions = array(); 
        $applicationOptions['config'] = $this->_applicationConfigFile->getPath(); 
    +     
    +    $env = getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development'; 

        $this->_applicationInstance = new Zend_Application(
    -     'development', 
    +     $env, 
         $applicationOptions 
         ); 
       } 
    , 

只记得设置APPLICATION_ENV环境变量。不用说,这是相当危险的,如果你有错误的环境变量集,可能会炸毁,但对于我们这些使用ZD Doctrine命令集成Zend工具的ZFDoctrine,我们没有太多的其他选择当涉及到学说移民时。

看到这个参考 http://framework.zend.com/issues/browse/ZF-9898?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel