Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 从gem继承控制器类_Ruby On Rails_Rubygems_Shopify - Fatal编程技术网

Ruby on rails 从gem继承控制器类

Ruby on rails 从gem继承控制器类,ruby-on-rails,rubygems,shopify,Ruby On Rails,Rubygems,Shopify,我正在使用ShopifyAppgem,它的webhookscocontroller中有一个名为receive的操作。如图所示: 在我的webhookscocontrollercontroller中,我试图通过执行以下操作来覆盖该receive操作: class WebhooksController < ShopifyApp::WebhooksController def receive binding.pry end end Gem引擎输入的路径是: webhooks P

我正在使用
ShopifyApp
gem,它的
webhookscocontroller
中有一个名为
receive
的操作。如图所示:

在我的
webhookscocontroller
controller中,我试图通过执行以下操作来覆盖该
receive
操作:

class WebhooksController < ShopifyApp::WebhooksController
  def receive
    binding.pry
  end
end
Gem引擎输入的路径是:

webhooks POST /webhooks/:type(.:format)  shopify_app/webhooks#receive
我看到数据进来了,但出于某种原因,它没有点击我的
receive
操作并停止在我的
pry
上,我不知道为什么

有什么想法吗

下面是我的日志的顶部,显示发生了什么:

Started POST "/webhooks/receive" for XX.XXX.37.116 at 2016-04-21 14:57:02 
+0000
Cannot render console from XX.XXX.37.116! Allowed networks: XXX.0.0.1, ::1, 
127.0.0.0/127.XXX.XXX.255

ActiveRecord::SchemaMigration Load (0.2ms)  SELECT "schema_migrations".* 
FROM "schema_migrations"

Processing by ShopifyApp::WebhooksController#receive as */*
Parameters: {"rate"=>{"origin"=>{"country"=>"US", "postal_code"=>"48615",   
"province"=>"MI", "city"=>"Breckenridge", "name"=>nil, "address1"=>"6760.. 
bunch of data removed for brevity}}}

Completed 500 Internal Server Error in 6ms (ActiveRecord: 0.0ms)

NoMethodError (undefined method `variable_size_secure_compare' for   
ActiveSupport::SecurityUtils:Module):
shopify_app (7.0.2) lib/shopify_app/webhook_verification.rb:20:in   
`hmac_valid?'
和我的路线文件

Rails.application.routes.draw do
root :to => 'home#index'
mount ShopifyApp::Engine, at: '/'
resources :store
resources :shipping_methods

post '/webhooks/receive', to: 'webhooks#receive'
post '/billing_plans', to: 'billing_plans#save_plan', as: 'save_plan'
get '/activate_charge', to: 'billing_plans#activate_charge', as: 'activate'
post '/create_charge', to: 'billing_plans#create_charge', as: 
'create_billing_plan'

尝试按以下顺序放置路由:

post '/webhooks/receive', to: 'webhooks#receive'
mount ShopifyApp::Engine, at: '/'
Rails路由按照指定的顺序匹配,因此如果 有一个资源:照片上面有一个获取“照片/投票”的显示行动的 资源行的路由将在get行之前匹配。到 要解决此问题,请将get行移到resources行上方,以便 第一名

因此,为了使您自己的路线优先于
shopifiapp
gem中定义的路线,您需要在安装
shopifiapp
引擎之前定义它

将自己的路线
post'/webhooks/receive'移动到
mount shopifiapp::Engine之前的“webhooks#receive”
应该可以解决这个问题


有关更多信息,请参阅。

经过两天的故障排除,我意识到他们的gempec包含了一个旧版本的rails,其中不包含他们正在调用的方法

我让他们知道了,并将我的版本从4.2.5升级到了4.2.6,现在它可以工作了。。令人沮丧但已解决。。谢谢大家的支持


如果其他人遇到这种情况,为了使用Shopify应用程序gem Webhooks控制器,您需要运行Rails 4.2.6

我看到数据进来了-请解释一下你在哪里看到的?但由于某种原因,它没有点击我的接收方法,并在我的pry停止,我不知道为什么-它在
绑定时停止。pry
?我在控制台中看到它,不,它没有点击
绑定。pry
无法找出原因。。我试过了,但没用。。你能添加日志吗?见鬼,如果有帮助的话,我会添加我的车!用日志更新了问题。看起来该路径似乎被shopify覆盖,您能否也添加路由文件。
post '/webhooks/receive', to: 'webhooks#receive'
mount ShopifyApp::Engine, at: '/'