相关疑难解决方法(0)

如何在Rails middware中找到当前的抽象路由

Rails版本:'〜> 4.2.7.1'

狂欢版:'3.1.1'

TlDr: 如何/api/products/:id在Rails 4应用程序的中间件中获取该路由的路由或控制器和操作.

细节:

我在rails应用程序中添加了一个类似于gem scout_statsd_rack的中间件.这会将以下中间件添加到rails应用程序以通过statsd发送指标:

def call(env)
  (status, headers, body), response_time = call_with_timing(env)
  statsd.timing("#{env['REQUEST_PATH']}.response", response_time)
  statsd.increment("#{env['REQUEST_PATH']}.response_codes.#{status.to_s.gsub(/\d{2}$/,'xx')}")
  # Rack response
  [status, headers, body]
rescue Exception => exception
  statsd.increment("#{env['REQUEST_PATH']}.response_codes.5xx")
  raise
end

def call_with_timing(env)
  start = Time.now
  result = @app.call(env)
  [result, ((Time.now - start) * 1000).round]
end
Run Code Online (Sandbox Code Playgroud)

我想要的是在中间件中找到当前路由,以便我可以发送特定于每个路由的度量.

我尝试了这里描述的方法,它告诉我们env['PATH_INFO']可以提供路径,但是它提供了这样的URL参数:/api/products/4但我想要的是/api/products/:id因为我的目的是跟踪/api/products/:idAPI的性能 .

env['REQUEST_PATH']env['REQUEST_URI']给出相同的回应.

我试过这里这里提供的答案:

Rails.application.routes.router.recognize({"path_info" => env['PATH_INFO']})
Run Code Online (Sandbox Code Playgroud)

或者像这样

Rails.application.routes.router.recognize(env['PATH_INFO']) …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails spree ruby-on-rails-4

9
推荐指数
1
解决办法
1022
查看次数

如何获取rails中的当前视图路径?

我需要将当前视图的路径传递给该视图中的局部渲染,以便生成指向视图本身的链接(在局部中)。禁用javascript时如何获取当前视图的路径?

<%= render "errors", object: @car.plate, path: (what?)%>
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails view path

1
推荐指数
1
解决办法
3477
查看次数

标签 统计

ruby-on-rails ×2

path ×1

ruby ×1

ruby-on-rails-4 ×1

spree ×1

view ×1