首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >空中刹车与狂欢商务接口:未定义方法`airbrake_request_data`

空中刹车与狂欢商务接口:未定义方法`airbrake_request_data`
EN

Stack Overflow用户
提问于 2013-06-02 23:29:45
回答 1查看 1.2K关注 0票数 3

我使用空气制动来通知我在我的狂欢商铺中的错误。现在我想使用spree的API,当我尝试发布到http://localhost:3000/api/products来创建一个新产品时,我得到了以下错误:

代码语言:javascript
复制
NoMethodError (undefined method `airbrake_request_data' for #<Spree::Api::V1::ProductsController:0x007f9fcdb81b58>):
  activesupport (3.2.9) lib/active_support/core_ext/object/try.rb:36:in `try'
  airbrake (3.1.11) lib/airbrake/rails/middleware.rb:46:in `request_data'
  airbrake (3.1.11) lib/airbrake/rails/middleware.rb:39:in `notify_airbrake'
  airbrake (3.1.11) lib/airbrake/rails/middleware.rb:15:in `rescue in call'
  airbrake (3.1.11) lib/airbrake/rails/middleware.rb:12:in `call'
  actionpack (3.2.9) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
  actionpack (3.2.9) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
  railties (3.2.9) lib/rails/rack/logger.rb:32:in `call_app'
  railties (3.2.9) lib/rails/rack/logger.rb:16:in `block in call'
  activesupport (3.2.9) lib/active_support/tagged_logging.rb:22:in `tagged'
  railties (3.2.9) lib/rails/rack/logger.rb:16:in `call'
  actionpack (3.2.9) lib/action_dispatch/middleware/request_id.rb:22:in `call'
  rack (1.4.5) lib/rack/methodoverride.rb:21:in `call'
  rack (1.4.5) lib/rack/runtime.rb:17:in `call'
  activesupport (3.2.9) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
  rack (1.4.5) lib/rack/lock.rb:15:in `call'
  actionpack (3.2.9) lib/action_dispatch/middleware/static.rb:62:in `call'
  airbrake (3.1.11) lib/airbrake/user_informer.rb:16:in `_call'
  airbrake (3.1.11) lib/airbrake/user_informer.rb:12:in `call'
  railties (3.2.9) lib/rails/engine.rb:479:in `call'
  railties (3.2.9) lib/rails/application.rb:223:in `call'
  rack (1.4.5) lib/rack/content_length.rb:14:in `call'
  railties (3.2.9) lib/rails/rack/log_tailer.rb:17:in `call'
  rack (1.4.5) lib/rack/handler/webrick.rb:59:in `service'
  /usr/local/rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
  /usr/local/rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
  /usr/local/rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'


  Rendered /usr/local/rvm/gems/ruby-1.9.3-p392@system/gems/actionpack-3.2.9/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.4ms)
  Rendered /usr/local/rvm/gems/ruby-1.9.3-p392@system/gems/actionpack-3.2.9/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (16.6ms)
  Rendered /usr/local/rvm/gems/ruby-1.9.3-p392@system/gems/actionpack-3.2.9/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (55.2ms)

显然,我的调用中有一个错误。但我想知道是哪一个错误。当然,Airbrake也应该从API中通知错误。我用Spree配置了Airbrake,所以:

Gemfile

代码语言:javascript
复制
gem "airbrake"

initializers/airbrake.rb

代码语言:javascript
复制
Airbrake.configure do |config|
  config.api_key = 'XXXXXXXXXXXXXXXXXXX'
end

所以,这是一个简单的设置。我使用的是Spree 1-2- start,我不知道从哪里开始解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-24 13:31:04

您遇到此错误是因为Spree API扩展了ActionController::Metal而不是ActionController::Base。

空气制动gem执行如下所示的一些逻辑:https://github.com/airbrake/airbrake/blob/68543097a8731cf1f3e717946bd5ed33e5edccad/lib/airbrake/rails.rb#L13

其中包括ActionController::Base中的方法。

关于如何解决这个问题,您有几个选择:

  1. 也将方法加载到ActionController::Metal中,使用与空气制动gem中显示的方法类似的方法
  2. 使用类似的Spree::Api::BaseController加载到Spree::Api::BaseController中的方法,以直接包含方法

这应该会让你振作起来。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16884268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档