[Feature Idea] Adding a Generator for Thor Commands

48 views
Skip to first unread message

Joshua Klina

unread,
Apr 6, 2017, 8:39:40 PM4/6/17
to Ruby on Rails: Core
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 just wrote an article describing how an app or engine author can add their own namespaced Commands here: http://www.joshklina.com/posts/adding-thor-commands-to-rails

I'd be happy to create a patch that adds a Command generator and write up documentation if you folks would be interested.

Kasper Timm Hansen

unread,
Apr 9, 2017, 6:20:46 AM4/9/17
to rubyonra...@googlegroups.com
Great blog post! 👏

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.

So: looking forward to your issues/pull requests ❤️

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-co...@googlegroups.com.
To post to this group, send email to rubyonra...@googlegroups.com.
Visit this group at https://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.

--
Kasper

Joshua Klina

unread,
Apr 10, 2017, 2:14:51 PM4/10/17
to Ruby on Rails: Core
Thanks for the roadmap! I'll go ahead and see if I can start chipping away at this!

Cheers,
Josh

Kasper Timm Hansen

unread,
Apr 10, 2017, 3:15:13 PM4/10/17
to rubyonra...@googlegroups.com
Happy to hear it!

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-co...@googlegroups.com.
To post to this group, send email to rubyonra...@googlegroups.com.
Visit this group at https://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.

--
Kasper

Joshua Klina

unread,
Apr 14, 2017, 5:56:35 PM4/14/17
to Ruby on Rails: Core
Hi Kasper,

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.

https://github.com/rails/rails/compare/master...jklina:thor_load_paths

Thanks!


On Thursday, April 6, 2017 at 6:39:40 PM UTC-6, Joshua Klina wrote:

Kasper Timm Hansen

unread,
Apr 19, 2017, 2:53:31 PM4/19/17
to rubyonra...@googlegroups.com
Pull requests are made to get feedback, so if you’ve got the code why not just open one? :D

Feel free to use "r? @kaspth" to assign it to me.

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-co...@googlegroups.com.
To post to this group, send email to rubyonra...@googlegroups.com.
Visit this group at https://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.

--
Kasper

Joshua Klina

unread,
Apr 20, 2017, 12:25:55 PM4/20/17
to Ruby on Rails: Core
Couldn't figure out how to assign it to you specifically, but I created the pull request here:

https://github.com/rails/rails/pull/28812

Thanks again for the help!
Reply all
Reply to author
Forward
0 new messages