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

时间:2013-09-02 12:24:04

标签: javascript ruby workflow environment production

使用Web应用程序时,我经常使用专为生产/服务器和本地环境设计的代码。

我还经常需要停用特定的功能(例如js,ruby,rails,java等)。

我面临的问题是,有时在发布新版本时我会错过激活或取消激活这些功能。

理想的事情(我认为)就是在部署到服务器之前运行你喜欢的on / off功能。所以你不要错过任何东西。

实施例

我在开发时注释掉了一个函数。

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 个答案:

答案 0 :(得分: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

您可以根据您的网址设置调试标记:

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

将JavaScript部署到生产环境时,通常会通过最小化和捆绑工具来运行它。一个流行的工具是UglifyJS 2 which features constant elimination。使用此工具运行和部署JavaScript代码时,代码的if(DEBUG) { }部分将被删除。

您可以使用Project>将任何工具连接到Sublime Text。构建脚本。

对于服务器端代码,您只需根据您的环境设置调试标志。每个框架(Ruby on rails)都有自己的方法,你需要在框架特定问题中询问具体细节。