また小難しい正規表現を

-- という2連ハイフンがデータの中に絶対現れないのなら

splited=file.split(/--/)
splited.each do |text|
text=~/(\A(\d{8}).(.+)\Z)/
pairs[$1]=$2
end