Here is one way to generate a list of unique substrings from a string.
def substrings_generator(string)
  substrings_list = []
  0.upto(string.size) do |start_index|
    (start_index + 1).upto(string.size) do |end_index|
      substrings_list << string.slice(start_index, end_index)
      substrings_list
    end
  end
  substrings_list.uniq
end