我正在从Jumpstart Labs做的EventManager教程。最初我无法得到我的.rb文件来读取.erb文件,我想我可能已经解决了这个问题,但我不确定因为我不知道如果一切正常运行我应该看到什么,不幸的是教程不告诉你。这是我的original question
现在经过一次简单的更改后,我不再收到错误 - 但我也没有得到任何迹象表明代码正在按预期工作。该教程说,这段代码应该创建一个新目录,并将每个“谢谢”字母的副本存储到该新目录中名为“output”的文件中。但是当我运行它时,我看到的是来自终端的=> EventManager initialized
,它告诉我正在读取我的.rb并且(我认为).erb终于被读取了......但是我看不到文件结构中的任何新目录/文件,也没有任何迹象表明创建了任何东西 - 所以我无法判断它是否实际上正在做任何事情。
我希望看到某种消息告诉我目录已经创建,可能带有文件路径或其他东西。
我从来没有做过这样的事情,我不确定应该看到什么......有谁能告诉我,我怎么知道这段代码是按预期执行的?如果不是,为什么?
require "csv"
require "sunlight/congress"
require "erb"
Sunlight::Congress.api_key = "e179a6973728c4dd3fb1204283aaccb5"
def save_thank_you_letters(id, form_letter)
Dir.mkdir("output") unless Dir.exists? ("output")
filename = "output/thanks_#{id}.html"
File.open(filename, 'w') do |file|
file.puts form_letter
end
end
def legislators_by_zipcode(zipcode)
legislators = Sunlight::Congress::Legislator.by_zipcode(zipcode)
end
def clean_zipcode(zipcode)
zipcode.to_s.rjust(5,"0")[0..4]
end
puts "EventManager initialized."
contents = CSV.open "event_attendees.csv", headers: true, header_converters: :symbol
template_letter = File.read( "event_manager/form_letter.erb")
erb_template = ERB.new template_letter
contents.each do |row|
id = row[0]
name = row[:first_name]
zipcode = clean_zipcode(row[:zipcode])
legislators = legislators_by_zipcode(zipcode)
form_letter = erb_template.result(binding)
save_thank_you_letters(id, form_letter)
end
答案 0 :(得分:3)
我(稍微有点)修改了您的save_thank_you_letters
方法,以便在写入文件时吐出一些有用的信息:
def save_thank_you_letters(id, form_letter)
Dir.mkdir("output") unless Dir.exists? ("output")
filename = "output/thanks_#{id}.html"
File.open(filename, 'w') do |file|
file.puts form_letter
puts "Wrote ID: #{id} to #{filename}"
end
end
行puts "Wrote ID: #{id} to #{filename}"
将打印其已写入的消息的ID和文件路径。您可以在整个Ruby逻辑中添加额外的puts "Your text here..."
,以便根据需要向控制台打印更多信息。
附注:一般来说,将个人API密钥发布到任何公共论坛是一个非常糟糕的主意。如果此密钥对您来说是私有/唯一,请将其删除并请求新密钥。 任何人现在可以在Sunlight Labs模拟您的帐户。