I think this method should exist in the `Boxci::Language` base class and be called `identifier` or something. If you analyze the current name `make_key_from_class` and what it tells us and what the rest of the method signature tells us we can see the following:

1. It doesn't tell us what it is going to return at all.
2. It tells us it is going to build/make a key of somesort from a class that is handed to it. When you add the context that this method exists on the `Boxci::Languages` object it is even stranger because it has no requirements of internal state of the `Boxci::Languages` object.
3. the `from_class` portion of the is somewhat useless as the parameter in the signature should tell us what it is expecting, and in the case of calling it should be clear as to what it is being handed.

So looking at that, hopefully, you agree that it would make more sense to have the following instead, `Boxci::Language.identifier` which would be inherited by the subclasses and would then be used in the following fashion `Boxci::Languages::Ruby.identifier`. We can see it would eliminate the need to pass class in, it would tell us via the name what it is going to return, etc.

In terms of Ruby standards and best practices. In general the practice for naming a variable that holds a class is to use the name `klass` not `clazz`. This is of course because `class` itself is a keyword in the language.