如何运行多个ruby脚本?

时间:2015-02-06 18:53:08

标签: ruby

有没有办法在另一个ruby脚本a中调用ruby脚本b?我有一个ruby脚本执行网站登录(login.rb)和另一个脚本order_create.rb。我想先调用login.rb,然后再执行order_create.rb。请建议。 Order_Created.rb: -

@@order_data = YAML.load(File.open'C:\Users\order_details.yaml')                                                        def fill_order_form(order_data)
   fill_in 'Firstname', :with => order_data['firstname']
   fill_in 'Lastname', :with => order_data['lastname']
   fill_in 'ZIP', :with => order_data['zip']
   click_button 'Continue' 

   end

order_detail.yaml: -

firstname: "Order"
lastname: "Test"
zip: "90341"

login.rb: -

require './order_create.rb'
def login
    #login code here
     fill_order_form(@@order_data)
end

Error on running login.rb :-  undefined method `fill_order_form' for #<#<Class:0x3e344e0>:0x4248ba0>

2 个答案:

答案 0 :(得分:0)

类似(虽然不同)的问题已在以下问题得到解答:Running another ruby script from a ruby script

您可以在脚本中包含要调用的脚本:

require './b.rb' #if b.rb is in the same directory

并将其命名为:

b(args)

对于您的示例,您可以执行以下操作:

<强> login.rb

require './order_create.rb'
def login
    #login code here
    order_create()
end

假设您的create_order.rb包含def create_order()

答案 1 :(得分:0)

即使您可以使用反引号或%x

执行任何shell命令
`ruby yourscript.rb`
%x(ruby yourscript.rb)

在这种情况下,这不是一个好主意,因为你有传统方法来解决这个问题,创建第三个脚本,比如login_and_order.rb并将以下代码放入其中:

require_relative 'login.rb'
require_relative 'order_create.rb'

# run your methods from both scripts in sequence you need
# or if they are just set of commands, nothing else needed