Ruby .rb文件读取一个文件,但不读取另一个文件-但它们在文件结构中彼此相邻。。。?(错误号::enoint)
我正在从Jumpstart开始学习EventManager教程。我的问题是它没有读取“form_letter.erb”文件 我的文件结构如下:Ruby .rb文件读取一个文件,但不读取另一个文件-但它们在文件结构中彼此相邻。。。?(错误号::enoint),ruby,erb,Ruby,Erb,我正在从Jumpstart开始学习EventManager教程。我的问题是它没有读取“form_letter.erb”文件 我的文件结构如下: ~ event_manager (folder/located in root directory) lib (subfolder of event-manager) event_manager.rb (located i
~
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\u attendeers.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
我不再得到错误,但也没有任何迹象表明发生了任何事情…我可以告诉它正在运行.rb文件,因为我将
=>事件管理器初始化为终端的输出,没有任何错误..但课程说,在这一点上,如果一切正常,这段代码应该创建一个目录来存储每个单独的“谢谢”信,我没有得到任何迹象表明发生了什么,也没有在我的文件结构中看到任何新的目录。这是我第一次做这样的事情,所以我真的不知道应该看到什么…试试这个文件
感谢您的回复@jon snow…我在.rb文件中运行了该文件,得到了相同的错误:event\u manager/lib/event\u manager.rb:28:in read:没有这样的文件或目录@rb\u sysopen-../form\u letter.erb(Errno::enoint)
还有其他建议吗?我在event\u manager
dir,执行ruby lib/event\u manager.rb
和你的`下一行文件。阅读“form\u letter.erb”``使用
ruby 1.9.2p330`。哦,Fk,我也尝试过同样的场景,对我来说效果很好。希望我做了和你一样的事,但不能复制它。你的更多意见可能会有所帮助。嗨,乔恩,谢谢你的回复!实际上,我最终发现,出于某种原因,我不得不使用Filer.read“event\u manager/form\u letter.erb”
。奇怪的是,它不需要使用精确的路径就可以读取它旁边的文件。不管怎么说,我现在都解决了,再次感谢:)
Filer.read "event_manager/form_letter.erb"