Tengo un script de Ruby basado en thor, pero quiero implementarlo como una gema en los directorios de personas bin
que las personas pueden pulsar sin tener que hacer thor mytool
.¿Es posible llamar a script ejecutable Thor-powered sin llamar a thor?
Así que en lugar que acababan de utilizar mytool
es esto posible?
Sé que es posible con vanilla optparse
pero prefiero usar Thor si es posible.
Actualización: Este es el código que estoy usando basada en el ejemplo en la página de Thor, pero me sale el siguiente error:
#!/usr/bin/env thor
class App < Thor
map "-L" => :list
desc "install APP_NAME", "install one of the available apps"
method_options :force => :boolean, :alias => :string
def install(name)
user_alias = options[:alias]
if options.force?
# do something
end
# other code
end
desc "list [SEARCH]", "list all of the available apps, limited by SEARCH"
def list(search="")
# list everything
end
end
error:
/usr/lib/ruby/gems/1.8/gems/thor-0.14.0/lib/thor/runner.rb:34:in `method_missing': undefined method `start' for nil:NilClass (NoMethodError) from /usr/lib/ruby/gems/1.8/gems/thor-0.14.0/lib/thor/task.rb:22:in `send' from /usr/lib/ruby/gems/1.8/gems/thor-0.14.0/lib/thor/task.rb:22:in `run' from /usr/lib/ruby/gems/1.8/gems/thor-0.14.0/lib/thor/task.rb:108:in `run' from /usr/lib/ruby/gems/1.8/gems/thor-0.14.0/lib/thor/invocation.rb:118:in `invoke_task' from /usr/lib/ruby/gems/1.8/gems/thor-0.14.0/lib/thor.rb:246:in `dispatch' from /usr/lib/ruby/gems/1.8/gems/thor-0.14.0/lib/thor/base.rb:389:in `start' from /usr/lib/ruby/gems/1.8/gems/thor-0.14.0/bin/thor:6 from /usr/bin/thor:19:in `load' from /usr/bin/thor:19
Esto funciona genial. Resumen: llame al archivo, haga que sea ejecutable, cambie la línea de marcación para usar Ruby como se indica arriba, agregue App.start hasta el final. ¡Ganar! –
¿Dónde está esto documentado? Tuve que buscar ejemplos en toda la red para descubrir el truco de inicio de shebang. –
No es realmente. El shebang es la forma estándar de crear scripts ejecutables. El método de clase "inicio" que se mezcla en su subclase Thor está documentado en http://rdoc.info/gems/thor/0.14.6/Thor/Base/ClassMethods:start. Estoy de acuerdo, en general, en que la documentación de Thor es un poco irregular. – Simon