【发布时间】:2013-12-11 03:39:45
【问题描述】:
我创建了以下解析器:
require "./artist"
require "./song"
require "./genre"
require "debugger"
class Parser
attr_accessor :artists, :genres, :song
attr_reader :mp3
REGEX = /(?<artist>.*)\s\-\s(?<song>.*)\s\[(?<genre>.*)\]/
def initialize(directory="data")
debugger
@mp3 = Dir.entries(directory).select {|f| !File.directory? f}
debugger
end
def parse
@mp3.map do |file|
match = REGEX.match(file)
artist = Artist.find_by_name(match[:artist]) || Artist.new.tap {|artist| artist.name = match[:artist]}
song = Song.new
song.name = match[:song]
song.genre = Genre.find_by_name(match[:genre]) || Genre.new.tap {|genre| genre.name = match[:genre]}
#debugger
artist.add_song(song)
end
end
end
a = Parser.new.parse
我尝试通过调用它所在目录 lib 中的 parser.rb 来运行它。我收到以下错误消息:
Parser.rb:47:in `open': No such file or directory - data (Errno::ENOENT)
from parser.rb:47:in `entries'
from parser.rb:47:in `initialize'
from parser.rb:68:in `new'
from parser.rb:68:in `<main>'
这是我的文件结构: 谁能告诉我为什么它无法识别我的数据目录?我已经凝视了一段时间,无法弄清楚。它就像 10 分钟前一样工作,我不记得我改变了什么让一切都搞砸了。
感谢您的反馈!谢谢
【问题讨论】: