Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.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 3.2 在rails中使用binding.pry时,变量范围是否会更改?_Ruby On Rails 3.2_Pry - Fatal编程技术网

Ruby on rails 3.2 在rails中使用binding.pry时,变量范围是否会更改?

Ruby on rails 3.2 在rails中使用binding.pry时,变量范围是否会更改?,ruby-on-rails-3.2,pry,Ruby On Rails 3.2,Pry,在控制器操作中,我需要检查控制器是由应用程序本身(将会话变量设置为current_user)访问,还是通过api调用访问。我的控制器的开头如下所示: 130: def create 131: # handle the possibility that this is an api call 132: api_call = current_user.nil? => 133: binding.pry 当我窥探到底发生了什么时,我得到了这个荒谬的结

在控制器操作中,我需要检查控制器是由应用程序本身(将会话变量设置为current_user)访问,还是通过api调用访问。我的控制器的开头如下所示:

   130:   def create
   131:     # handle the possibility that this is an api call
   132:     api_call = current_user.nil?
=> 133:     binding.pry
当我窥探到底发生了什么时,我得到了这个荒谬的结果:

[1] pry(#<Crm::ConnectionsController>)> api_call
=> false
[2] pry(#<Crm::ConnectionsController>)> current_user
=> nil
[3] pry(#<Crm::ConnectionsController>)> current_user.nil?
=> true
[4] pry(#<Crm::ConnectionsController>)> api_call = current_user.nil?
=> true
[5] pry(#<Crm::ConnectionsController>)> api_call
=> true
[1]pry(#)>api#u调用
=>错误
[2] pry(#)>当前用户
=>零
[3] pry(#)>当前用户.nil?
=>正确
[4] pry(#)>api_call=current_user.nil?
=>正确
[5] pry(#)>api_调用
=>正确
当我用下面的代码行从pry控制台更改变量api_调用,然后继续执行时,控制器从此处的行为就好像api_调用被设置为true一样


为什么会这样?为什么我的控制器一开始没有正确设置api_调用?

这根本不应该发生(我是Pry开发人员之一)。最可能的情况是,
current_user
在您第一次调用时返回一个非nil值,但缓存nil以返回所有未来调用


如果您已经仔细检查了,但仍然存在问题,我需要查看更多的代码来调试它。

让pry的一位实际作者回答一个问题,即使只是说“我不确定”,这是一个疯狂的道具。您是我们需要的开发人员,即使不是我们应得的!