Я хранил Хеш Хэша.Ruby Hash of Hash, Добавление новых товаров
filelists { filename => [another hash] }
anotherhash {id => method}
где filename - имя файла, id - идентификатор сервера, а метод - тип блокировки, чтения или записи.
def addfile(client, input)
#byebug
serverid = input.split(' ')[2].strip
filename = input.split(' ')[1].strip
puts "RECEIVED FILE NOTIFICATION: " + serverid + " FILENAME: " + filename
if @filelists.include?(filename)
@filelists[filename] = {serverid.to_i => 'r'}
else
@filelists[filename] = Hash.new
@filelists[filename] = {serverid.to_i => 'w'}
puts "New Hash Created for: " + filename
end
client.puts "File Accepted: " + filename
puts "File Accepted: " + filename + "\n\n"
printfiles(filename)
end
Что происходит, когда вы добавляете еще один элемент в хэш, он просто удаляет предыдущий элемент.
После первого сервера загрузки файлов имеет это:
{"ds.txt"=>{1=>"w"}, "fileserver.rb"=>{1=>"w"}}
Затем, когда второй сервер начинает загружать файлы, он просто переписывает по сравнению с предыдущим хэша.
Любые советы/предложения будут оценены.
Обратите внимание, что '@filelists [имя файла] = Hash.new' не имеет никакого эффекта, так как пустой хэш переписывается в следующей строке. –