Appointment Program In Ruby
I feel I am definitely overcomplicating things


I agree with you that the code is longer than necessary. Let's take a look.

YAGNI - you ain't gonna need it

Try to avoid writing code until a caller (such as a test method for a Story) forces you to write it. Then you know you really need it.

attr_accessor :info, :date, :year, :day, :month


The first two look good. I didn't notice any compelling reason to list y,m,d, as caller could get those from date. The day might be called mday for consistency with library.

def get_info
    @info
end

def get_date
    @date
end


Ummm, didn't attr_accessor already take care of those? We're writing in ruby, not java. Take advantage of its strengths!

I commented above that get_year &amp; get_month seem redundant. Also, it seems odd to list them without get_mday (or perhaps get_day). Better to elide them entirely.

    appointments.each do |x|


This seems to be a global reference. I can't imagine that's a good thing. Consider moving that list into a class, such as the Appointment class.

        if x.get_month == month


I suggest it would be more natural to phrase that as x.date.mon.

Your recurring Day &amp; Month classes appear to be unimplemented stubs, so far.
You have a design decision to make. Will adding a recurring appointment create several new entries until a date "very far" in the future? Or will it add a single entry and then you deal with that at query time? There is no right answer; each offers its own trade-offs.

puts "Would you like to check against OneTime, Day or Month appointment?"
checkagainst = gets.chomp


This seems a cumbersome UX. Rather than prompting, simply loop over all three, reporting the appointment and its type whenever you find a match.