部署生产环境时设置开发环境标识并消除调试代码

3
在处理Web应用程序时,我经常有特别为生产/服务器和本地环境设计的代码。
我也经常需要停用特定的功能(如JavaScript、Ruby、Rails、Java等)。
我面临的问题是,有时在发布新版本时,我忘记激活或停用这些功能。
我认为理想的方式是在部署到服务器之前运行一个开关函数。这样你就不会错过任何东西。
例如,当我开发时,我注释掉某个功能。 JS:
// foobar() FOR PRODUCTION

Ruby On Rails (production.rb):

# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # FOR PRODUCTION

后者是指我需要在本地使用生产环境设置进行测试,但由于我没有安装特定的环境(nginx,appache),因此无法使用其功能。
我使用Sublime Text 2,3,如果它有一个定义特定函数/代码块要取消注释/注释的功能,那就太好了。
您如何工作以确保不会错过任何内容?
1个回答

6
这个问题与Sublime Text或任何文本编辑器无关,而是一个如何预处理和调试(JavaScript)源代码的通用问题。

首先,最简单的方法是在您的代码库中设置某种全局调试标志。
  window.DEBUG = true;

  function log(a, b, c, d) {
       if(DEBUG) {
           console.log(a, b, c, d);
       }
  } 

  if(DEBUG) {
      // Do dev stuff
  } else {
     // Do produection stuff
  }

  log("foobar") // Does not need to be wrapper, as log() itself is functional only in debug mode

您可以根据您的URL设置调试标志:

 if(window.location.href.indexOf("localhost") >= 0) {
     window.DEBUG = true;
 } 

当你将JavaScript部署到生产环境时,通常会通过缩小和打包工具来运行它。一个流行的工具是UglifyJS 2,它具有常量消除功能。使用此工具运行和部署JavaScript代码时,代码中的if(DEBUG) { } 部分将被消除。
你可以使用Project > Build scripts连接任何工具到Sublime Text。
对于服务器端代码,你只需要根据你的环境设置调试标志。每个框架(如Ruby on Rails)都有自己的方式做这件事,你需要在特定框架的问题中询问具体详情。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接