2015-08-12 2 views
0

У меня есть приложение, в котором я хотел бы создать действие, которое доступно только в средах разработки и тестирования, но не в производстве. В настоящее время я использую среды внутри действия, как, например:Grails 2.3.8 отключить действие только в производственной среде

def superSecretAction(){ 
    Environment.executeForCurrentEnvironment { 
     development{ 
      // Do something super secret and exciting 
     } 
     test{ 
      // Do the same super secret and exciting thing. 
     } 
     production{ 
      render "" 
     } 
    } 

} 

Хотя этот вариант работает, я действительно хотел бы просто отрицать даже будучи в состоянии вызвать этот метод, чтобы начать с. Я использую Spring Security и имею interceptUrlMap, который мог бы создать отдельную карту для производства в качестве еще одного варианта, но я надеялся, что я мог бы просто полностью аннулировать действие в процессе производства.

Как я упоминал в названии, я запускаю 2.3.8.

ответ

3

У вас есть несколько вариантов. У вас может быть фильтр, который проверял среду и отвечал, однако вам нужно основываться на этом. Вы также можете добавить отображение действия условно примерно так:

import grails.util.Environment 

class UrlMappings { 

    static mappings = { 
     if(Environment.current != Environment.PRODUCTION) { 
      // put your mapping here... 
     } 

     // ... 

     "/"(view:"/index") 
     "500"(view:'/error') 
    } 
}