簡體   English   中英

在部署到生產時設置開發環境標志並消除調試代碼

[英]Setting development environment flag and eliminating debug code when deploying to 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,如果它有一個定義要取消注釋/評論的特定功能/代碼塊的功能,那將會很棒。

你怎么工作所以你不會錯過任何東西?

這個問題並非特定於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)都有自己的方法,您需要在框架特定問題中詢問具體細節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM