Displaying exact evaluation numbers to a user may suggest that these numbers reflect a precisely measured effect that applying our suggestion will have on the efficiency. I couldn't think of a way of assigning a meaningful numerical value to our suggestions. For example, how to compare the efficiency impact of using "$in" and using "$not"? Moreover, often suggestion's impact on efficiency is highly dependent on the database contents.
This is why I decided to take the most simple approach and have only two or three possible values (:good, :warning, :bad).

I'm new to Ruby, so I appreciate every advice on "doing things the ruby way". However, the reasons why i decided to use constants are:
1) I thought that it was good to have the possible results listed in the class body, rather than scattered all around the code.
2) In my opinion it is good that interpreter signals errors when it encounters a constant that is not defined. This protects us from typos like returning :optonal instead of :optional.

Moreover I decided to store symbols in the constants because they look prettier when serialized (compared to arbitrary numbers), which for example results in nicer messages from RSpec.

Of course we may also achieve (1) by putting the values in a comment, and (2) by a good test coverage.

I'm curious what is your opinion on these arguments.