使用调试扩展/开发人员模式足够的保护


18

对于Magento开发人员,您通常不希望在实时系统上拥有一些不错的扩展。

您如何将它们保留在项目存储库中,而又避免它们在现场商店中曝光呢?

Answers:


20

有两种相对较新的技术可以做到这一点:

  • 使用modman,这样您就可以自己控制针对每种环境部署的内容。这意味着您modman deploy [name-of-dev-extension]只能在开发环境中运行。

  • 使用Magento的作曲家不同composer.json为不同的环境场景。甚至更简单的方法是将这些扩展指定为dev-modules,然后使用--require-dev开发计算机上的开关安装项目。


1
+一个推荐给modman :)不错的选择
Toon Van Dooren

您能否进一步描述特定于环境的部署的外观?我的意思是我应该将部署的模块列表保存在哪里?通常,我有一个包含所有模块的文件夹-因此,我再次必须将实时与开发分开。
亚历克斯

@Alex:请看我的编辑。
user487772 2013年

@Tim:谢谢!我现在也编辑了您的答案。
亚历克斯

@Alex:谢谢。我不知道这件事:-)
user487772 2013年

10

通常可以使用配置标志方便地禁用这些功能,因此它们在技术上处于活动状态,但什么也不做。如果在app/etc/local.xml实时系统中将此标志设置为false ,则应该没问题。


除非您希望将local.xml文件保存在存储库中,否则这是一个很好的解决方案。可能是这种情况。
user487772 2013年

好的答案- local.xml通常不在回购中
-Alex


5

一种简单的方法是,在/ etc / modules中禁用该模块,推送该模块,在本地忽略该文件,然后再次启用它。


在这种情况下,您将只能对扩展引导程序文件进行修改(例如,修改依赖项)。另外,如果您要退房,比方说在另一台计算机上,您将不得不再次尝试这些技巧。由多个开发人员组成的团队可能会带来更多不便。
user487772 2013年

如果您在本地忽略该文件,则其他开发人员唯一要做的就是再次启用它。恕我直言,只需几秒钟。
Toon Van Dooren 2013年

对。但是随后他们又不得不在本地忽略它。这是每个工作副本的每个扩展名。我的意思是您的解决方案一定可以,但是有点不方便。
user487772 2013年

是的,我想我只是从我的角度看过它,我通常只集成1或2个开发工具:-)
Toon Van Dooren

3

我认为处理此问题的最佳方法是将所有这些模块保留在本地codePool中,并在local.xml中使用此行停用所有本地模块:

    <disable_local_modules>true</disable_local_modules>

或者,您可以在实时环境的后端执行“禁用模块输出”。(系统->配置->高级)。但是,这并不完全禁用该模块。但是,也许只是想要隐藏它就足够了。

我唯一想到的另一件事就是编写一些可以实现此目标的代码。只需检查它是否处于开发人员模式(Mage::getIsDeveloperMode()),然后禁用模块即可。我在这里找到了实现此目标的更多详细信息:https : //stackoverflow.com/questions/6520634/magento-how-to-disable-module-programmatically


所有这三种解决方案都不够好。禁用local模块将迫使您将所有其他模块从localcodePool移入community,也将在以后的所有扩展中使用。如您所说,禁用模块输出仍然会使扩展程序运行减慢您的存储速度。并且第三个解决方案将需要使用扩展名更新将被覆盖的修改。
user487772 2013年

2
@Tim我完全同意。应该有一个更好的方法来解决这个问题,在开发模式下应该有一个禁用/启用模块的核心配置。
Rick Kuipers 2013年

3

我通常只是将它们放入我的测试环境中,而不将其检查到版本控制系统中,例如通过使用.gitignore文件将它们排除在提交之外。


OP强调在存储库中保留扩展。
user487772 2013年

1

Erik Hansen在Imagine 2011会议上有一张幻灯片。他在幻灯片中声明了以下代码(对于开发人员模式)

# File : index.php
if(preg_match('/^stage\.|\.dev$/', $_SERVER['HTTP_HOST'])) {
   $_SERVER['MAGE_IS_DEVELOPER_MODE'] = true;
}

这是Erik基于子域启用的设置,您可以自己对其进行自定义。


这与开发模块有什么关系?
Bryan Ruiz 2013年

亲爱的@ bryan_ruiz,Magento系统正在检查MAGE_IS_DEVELOPER_MODE是否处于活动状态。检查艾伦的文章。Magento的开发模式
奥古兹Çelikdemir

我在说什么我不明白这与问题有什么关系。开发人员模式不会启用或禁用他正在使用的模块。
Bryan Ruiz 2013年

正如我在评论中指定的那样,Bryan可以根据您的要求自定义代码。当然,原始想法不适合请求。例如,如果您编写扩展名取决于参数,则可以检查或控制上面的代码段!
奥古兹Çelikdemir
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.