Sudoku solver using backtracking, in Ruby
It seems fine to me, I don't know if there is a way to solve this problem that performs better. Some minor things:


The Ruby std-lib has a matrix class which might help. It also might help to extract the board into its own class with methods like dup, get_row, get_column, get_block, is_blank?, is_complete?
You don't need to set proposed[i][j] = BLANK on each iteration since you are working on a duplicate of the board.
In get_options You don't need to call uniq, it should be impossible to get into a state with multiple entries in a row, column or block. Similarly you shouldn't need to remove BLANK as there is no way to get a blank entry in the options array.