.rb文件读取一个文件但不读取另一个文件 - 但它们在文件结构中彼此相邻...? (错误:: ENOENT)

时间:2015-04-14 08:03:39

标签: ruby erb

我在做Jumpstart的EventManager教程。我的问题是它没有读取'form_letter.erb'文件。

我的文件结构如下:

~
    event_manager                 (folder/located in root directory)
          lib                     (subfolder of event-manager)
             event_manager.rb     (located in lib)
    event_attendees.cvs           (located in event_manager)
    form_letter.erb               (located in event_manager)
    form_letter.html              (located in event_manager)
    full_event_attendees.cvs      (located in event_manager)

我已尝试过在其他线程中看到的一些方法,以查看文件的运行位置,其中一个返回:home/action。我尝试将该路径添加到.erb路径,但它不起作用。有趣的是.rb文件正在读取"event_attendees.csv"文件,该文件位于文件结构中不会读取的文件旁边。这里发生了什么?我构建了文件,并按照教程显示的那样编写了路径。我将提供.rb代码供参考:

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 "form_letter.erb"  #<--not being read
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  

更新:

我尝试将路径更改为:

   Filer.read "event_manager/form_letter.erb"

我不再得到错误,但我也没有任何迹象表明发生了任何事情......我可以告诉它正在运行.rb文件,因为我得到了=> EventManager initialized作为输出没有错误的终端..但是教训说,如果一切正常,这段代码应该创建一个目录来存储每个人的“谢谢”信件,我没有得到任何已经发生的迹象,也没有看到我的文件结构中的任何新目录。这是我第一次做这样的事情,所以我真的不知道我应该看到什么......

1 个答案:

答案 0 :(得分:0)

试试这个File.read('../form_letter.erb')