我应该看到什么知道这段代码已经完成了它应该做的事情?

时间:2015-04-14 19:11:04

标签: ruby

我正在从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

1 个答案:

答案 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模拟您的帐户。

相关问题