/
robots_dot_txt.rb
41 lines (34 loc) · 976 Bytes
/
robots_dot_txt.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
module RobotsDotTxt
def generate_robots
rules = YAML::parse( File.open( "#{Rails.root}/config/robots.yml" ) ).transform
rules = rules[Rails.env]
robots = "# Generated by Robots Dot Txt gem\n"
rules.each do |rule_name, rule_values|
robots += "# #{rule_name}\n"
["userAgent", "allow", "disallow"].each do |ua|
v = rule_values.delete(ua)
next if v == nil and ua == "disallow"
robots += create_robots_value(ua, v)
end
rule_values.each do |k, v|
robots += create_robots_value(k, v)
end
end
robots
end
protected
def create_robots_value(key, values)
line = ""
values = values.to_a
values.each do |value|
line += key.underscore.capitalize.sub('_','-') + ": " + path_value(value) + "\n"
end
line
end
def path_value(v)
v = v.to_s
v = "*" if v == nil?
v =~ /.*_path$/ ? eval(v) : v
end
end
Object.send :include, RobotsDotTxt