Outputting years with no repeated digits
The model solution they propose is very unidiomatic, your code is far better. I'd just made some minor changes:


Use String#chars instead of String#split(//).
Use Enumerable#select? instead of Array#keep_if to avoid modifying data in-place. It's better to work with immutable streams of data (with methods from Enumerable).


I'd write:

def no_repeats(year_start, year_end)
  (year_start..year_end).select { |year| no_repeat?(year) }
end

def no_repeat?(year)
  year_digits = year.to_s.chars
  year_digits == year_digits.uniq
end