Wie kann ich ein Programm erstellen, um mehrere Dateien aus einer Vorlage mit unterschiedlichen Werten zu erstellen? - Ruby, URL, Redirect, Selen

Ich muss 1500+ Ruby-Dateien aus einer Vorlage für einige Tests erstellen, die ich mit Selen mache.

Die Vorlage sieht folgendermaßen aus:

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! #####nr"

end # execute

Ich habe eine Menge URLs, die ich einfügen muss - eine in jede Datei, die "$ OLD_URL" und "$ NEW_URL" ersetzt.

Gibt es sowas überhaupt zu tun?

x = 0
während (x <1500)
{
öffne template.rb
finde alle Instanzen von $ CLASS_NAME und ersetze sie mit xxx von classnames.txt
finde alle Instanzen von $ OLD_URL und ersetze sie mit xxx von listofurls.csv
finde alle Instanzen von $ NEW_URL und ersetze sie mit xxx von listofurls.csv
Datei speichern unter ("redirect_" + "x ++")
x ++
}

Antworten:

0 für die Antwort № 1

Der richtige Weg, es zu tun, ist die Verwendung der ERB Bibliothek.

Der folgende Code generiert zwei Dateien gemäß einer vordefinierten Vorlage.

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

Wann template.erb sieht aus wie:

Title <%= file %>
<%= "=" * 40 %>
<%= contents %>
<%= "=" * 40 %>

Hier ist der Inhalt von aneqdote.txt:

Title anecdote
========================================
There are 10 types of people in the world.
========================================

0 für die Antwort № 2

Lesen Sie den Inhalt von template.rb zu einer Zeichenfolge, dann verwenden Zeichenfolge # gsub Bearbeiten Sie die Vorlage innerhalb der Schleife und speichern Sie die geänderte Vorlage.


Am beliebtesten