Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.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文件加载到Pry中?_Ruby_Pry - Fatal编程技术网

让我的Ruby文件加载到Pry中?

让我的Ruby文件加载到Pry中?,ruby,pry,Ruby,Pry,我正试图用Pry编辑我的Ruby文件。其中设置的变量很少,无论出于何种原因,我似乎无法cd,因为即使在我“加载”文件之后,它们也没有被定义 代码如下: require 'nokogiri' require 'open-uri' doc = Nokogiri.XML('<foo><bar /><foo>', nil, 'UTF-8') url = "http://superbook.eventmarketer.com/category/agencies/"

我正试图用Pry编辑我的Ruby文件。其中设置的变量很少,无论出于何种原因,我似乎无法
cd
,因为即使在我“加载”文件之后,它们也没有被定义

代码如下:

require 'nokogiri'
require 'open-uri'

doc = Nokogiri.XML('<foo><bar /><foo>', nil, 'UTF-8') 

url = "http://superbook.eventmarketer.com/category/agencies/" 

puts "Finished!"
然后这就是输出:

7] pry(main)> load './AgencyListingScraper.rb'
Finished!
=> true
[8] pry(main)> 
然后当我尝试做一些事情时,比如:

[8] pry(main)> url
NameError: undefined local variable or method `url' for main:Object
from (pry):6:in `__pry__'
[9] pry(main)> cd url
Error: Bad object path: url. Failed trying to resolve: url. #<NameError: undefined local     
variable or method `url' for main:Object>
[10] pry(main)> 
[8]撬(主)>url
NameError:未定义的局部变量或main:对象的“url”方法
from(pry):6:in `\uu pry\uuu'
[9] pry(主)>cd url
错误:错误的对象路径:url。尝试解析以下内容失败:url# 试着这样做:

在您的文件中包括Pry并执行
绑定。Pry

require 'nokogiri'
require 'open-uri'
require 'pry'

doc = Nokogiri.XML('<foo><bar /><foo>', nil, 'UTF-8') 

url = "http://superbook.eventmarketer.com/category/agencies/" 

binding.pry
puts "Finished!"
这将使您进入一个Pry会话,在该会话中,您可以使用诸如
ls
之类的命令查看所有变量

你用Pry的方法和这个方法都很有效。但是,在您的情况下,
load
可能不起作用的原因是,局部变量不会在文件之间传递,就像您需要从一个文件到另一个文件一样

尝试加载此文件:

#test.rb
y = "i dont get carried over cause i am a local variable"
b= "i dont get carried over cause i am a local variable"
AAA= "i am a constant so i carry over"
@per = "i am an instance var so i get carried over as well"

当您使用
load“test.rb”
在Pry中加载它时,您会发现无法从该文件访问本地变量。

我在谷歌上发现了这个问题,但建议的解决方案对我不起作用,因为我要加载的文件不是类也不是脚本,而是一个复杂的ruby配置文件,所以我无法在代码中插入pry

但我也在Reddit中找到了一个答案,这正是我想要的

做一个

Pry.toplevel_binding.eval File.read("stuff.rb")

将在当前pry会话中有效地执行文件
stuff.rb
的ruby代码,留下结果对象供检查。

谢谢!成功了。我以前没有这样做过。你知道为什么我以前可能不需要这样做吗?这两种方法都可以,但是binding.pry是我首选的方法,因为你仍然可以访问你的局部变量。有关更多信息,请参见编辑!很高兴能帮上忙啊,我看到了关于局部变量和实例变量的情况。非常感谢你的帮助。如果没有这些额外的知识,我很快就会发疯。有可能在一些操作之后将文件加载到pry中吗?要在手动测试期间加载多个文件。。。
#test.rb
y = "i dont get carried over cause i am a local variable"
b= "i dont get carried over cause i am a local variable"
AAA= "i am a constant so i carry over"
@per = "i am an instance var so i get carried over as well"
Pry.toplevel_binding.eval File.read("stuff.rb")