2014-09-03 2 views
1

우리는 레일 서버에서 새로운 버전의 API로 옮겨 가고 Deflater/gzip 압축을 가능하게하고 싶지만 새로운 API 경로에 대해서만 사용하고자합니다. 우리는레일 : Rack :: Deflater를 조건부로 사용 하시겠습니까?

... 
config.middleware.use Rack::Deflater 
... 

을 application.rb에 다음 행을 추가했다

.... 
.... 
def add_api_routes 
    resources :foo, only: [:index, :show] 
    resources :bar, only: [:index, :show] 
end 

namespace :api, defaults: { format: 'json' }, constraints: { subdomain: /internal|^$/ }, path: '/' do 
    namespace :v2, module: nil do 
    add_api_routes 
    end 

    namespace :v1, module: nil do 
    add_api_routes 
    end 
end 
.... 
.... 

하지만이 두 버전 GZIP 수 있습니다 :

routes.rb이 유사하다.

api의 한 버전에서만 사용할 수 있습니다. (예 : v2)?

감사합니다. 도움이 될 것입니다.

+1

이니셜 라이저는 조건문을 받아 들일 것으로 보인다 : https://github.com/rack/rack/blob/master/lib/rack/deflater.rb# L31 그것을 파기하십시오 : – apneadiving

답변

2

@apneadiving이 그의 코멘트에서 언급했듯이. 여기 상태에서 : https://github.com/rack/rack/blob/master/lib/rack/deflater.rb#L31, 당신은 같은 것을 할 수 있습니다

config.middleware.use Rack::Deflater, :if => lambda { |env, status, headers, body| env["PATH_INFO"] == "/v2/" } # or Regular expression: env["PATH_INFO"].match(/\/v2\//) matches -> /v2/ 
+0

고마워, 정확히 우리가 원하는 것 같습니다. 그것을 밖으로 시도하고 올바른/인정 하나를 표시합니다. –

관련 문제