在irb中运行多个命令



我正在使用Mechanize抓取需要登录的网站。下面的代码让我登录。

require 'mechanize'
agent = Mechanize.new
agent.get 'http://www.specialsite.com'
agent.page.form.txtEmail = 'myemail@email.com'
agent.page.form.txtPassword = 'myPassword'
agent.page.form.add_field! "__EVENTTARGET","btnLogin"
agent.page.form.add_field! "__EVENTARGUMENT",""
agent.page.form.submit

agent.page.link_with(:text => "Special Link").click
agent.page.form.txtSearch = "Search Text"
agent.page.form.add_field! "__EVENTTARGET","lbtnSearch"
agent.page.form.add_field! "__EVENTARGUMENT","" 
agent.page.form.submit

我的问题是,我如何在ruby IRB中运行此代码,以便我可以访问它定义的对象,如"代理"来实验并生成我需要的其余代码?

我试过'load'。它运行命令,但它不使像'agent'这样的对象可用。

将这些内容原样写入文本文件中,打开IRB并键入:

File.open("your_file","r").readlines.each{|line| eval(line)}

这有帮助吗?

编辑:文本文件必须存在于你启动IRB的同一个目录中。总体优势:在文本文件中修改某些内容要比在一个巨大的IRB一行代码中瞎折腾容易得多。

Use pry:

require 'pry'
... your code
binding.pry

当您运行脚本时,它将在binding.pry处停止,并且您有一个类似irb的repl(但更好),您可以在其中计算对象。使用exit继续或使用exit-program退出

因为这些都是可重复的代码,所以你应该尽可能地尝试实现DRY(Don't Repeat Yourself)。我将在一个类中完成所有这些并有一个返回代理的方法。然后在irb中需要该类并将irb变量设置为类getmethod。这样你就有了以后项目中要用到的类的开头了

我同意@pguardiaro使用Pry

但是在IRB中是这样做的:

binding.eval(File.read("your_file.rb"), "your_file.rb"

相关内容

  • 没有找到相关文章

最新更新