我需要从模板中创建1500多个ruby文件,以便我对Selenium进行一些测试。
模板如下所示:
class $CLASS_NAME
require "spec"
attr_accessor :title
include Spec::Example::ExampleGroupMethods
include Spec::Matchers
def initialize
@title = "$OLD_URL -> $NEW_URL"
end
def execute(selenium)
selenium.open "$OLD_URL"
sleep 1
puts 'Opening...'
sleep 1
url = selenium.get_location
puts 'Grabbing location...'
sleep 1
puts 'The URL is ' + url
puts 'Doing match...'
sleep 1
/$NEW_URL/.match(url).should_not be nil
puts "\n##### Success! #####\n\r"
end # execute
我需要插入一大堆URL - 每个文件一个,替换'$ OLD_URL'和'$ NEW_URL'。
无论如何都要做这样的事情?
x = 0
而(x <1500)
{
打开template.rb
找到$ CLASS_NAME的所有实例,并从classnames.txt中替换xxx 找到$ OLD_URL的所有实例,并用listofurls.csv中的xxx替换 找到$ NEW_URL的所有实例,并从listofurls.csv中替换为xxx 将文件另存为('redirect_'+'x ++')
X ++
}
答案 0 :(得分:0)
将template.rb
的内容读取为字符串,然后使用String#gsub编辑循环内的模板并保存修改后的模板。
答案 1 :(得分:0)
正确的方法是使用ERB
库。
下面的代码将根据预定义的模板生成两个文件。
require "erb"
File.open("template.erb") do |io|
template = ERB.new io.read
files = {:anecdote => "There are 10 types of people in the world.",
:story => "Once upon a time..."}
files.each do |file, contents|
File.open "#{file}.txt", "w" do |out|
out.puts template.result binding
end
end
end
template.erb
看起来像:
Title <%= file %>
<%= "=" * 40 %>
<%= contents %>
<%= "=" * 40 %>
以下是aneqdote.txt
的内容:
Title anecdote
========================================
There are 10 types of people in the world.
========================================