What for?
Try to avoid File.close if possible. If you get an error before closing
the file for whatever reason the file will remain open forever.
This is easier. Anyway your solution was also good.
Again.
Extracted construction of pieces to factory class
Ok. This took some time. What is movement class for? Looks like its
sharing some resposibilities with Piece. If you call all the classes
thet move pieces Rook, Knight, etc... call the base class Piece instead
of movement

That can_move? method you had in piece class was very strange. It made
no sense at all. You were calling a method on an instance of piece to
create a piece instance to...

That's not abstraction. That's just indirection.
No piece seems to be using the board