While Rails has great support for adding Rake tasks there is currently no information on how to add Thor commands, despite Thor playing an active role internally. I find Thor commands to be better for handling more sophisticated interaction from the user and they’re great for testing. There already seems to be solid conventions in place for Rails/Thor commands for either engines or applications however, this is currently undocumented.
I think the answer you’re looking for is: yet. We want apps to be able to write full fledged commands for all the reasons you mention, we just haven’t finished it up… yet.
That’s why there’s no documentation and the reason for the rough edge you mention at the end of your post.
Here’s where you and others can help now:
Better load paths and loading: helps with the issue you identified. Must work for our internal commands as well as apps.
Command dependencies: attaching a command to run after e.g. db:migrate (so we can move our Rake tasks to Rails commands, plus apps can write commands that hook in after db:migrate etc.)
Making commands conductable: finally fulfilling the 13+ year dream of https://github.com/rails/conductor come true. Should be great for people new to Rails too!
Later, we’ll need the command generator, like you mentioned, and proper documentation.
Again, appreciate the write up! Since you’re already eager to make this work in your apps, you’d be a good fit to help out here.
I started diving into this and added a way to incorporate a Rails app into the load path for commands. The Railties test suite seems to pass, but I wanted to get some feedback before submitting a pull request.