2015-05-12 1 views
0

здесь используется функция API записи Grape. и мне нужен дросселирующий API (ограничение скорости API).не может получить доступ к env ['api.endpoint'] в grape middleware

Lib/виноград/расширения/grape_extension.rb

module Grape 
    module Extension 
    module ThrottleExtension 
     def throttle(options={}) 
     route_setting :throttle, options 
     options 
     end 
     Grape::API.extend self 
    end 
    end 
end 

Библиотека/виноград/промежуточного слоя/throttle_middleware.rb

module Grape 
    module Middleware 
    class ThrottleMiddleware < Grape::Middleware::Base 
     def before 
     binding.pry 
     end 
    end 
    end 
end 

Библиотека/grape_throttle.rb

require 'grape' 
require 'grape/extensions/throttle_extension' 
module Grape 
    module Middleware 
    autoload :ThrottleMiddleware, 'grape/middleware/grape_middleware' 
    end 
end 

в прошлом, в config/application.rb

require File.expand_path('../../lib/grape_throttle', __FILE__) 
config.middleware.use Grape::Middleware::ThrottleMiddleware 

и, когда я запускаю с rails s и вызываю api, вызывал bind.pry.

[1] pry(#<Grape::Middleware::ThrottleMiddleware>)> env['api.endpoint'] 
=> nil 

Я хочу знать, как я могу получить доступ к env ['api.endpoint'] в промежуточном программном обеспечении Grape?

ответ

0

Вы можете получить доступ к окр по ::

endpoint = @env["api.endpoint"]

Я попытался это приложение не-рельсы, и она работала. Вы получаете всю информацию о конечной точке api в переменной.

Смежные вопросы