У меня есть скрипт Ruby на основе платформы, но я хочу развернуть его как драгоценный камень в каталогах людей bin
, которые могут ударить люди без необходимости делать thor mytool
.Можно вызвать исполняемый сценарий Thor-powered без вызова thor?
Так вместо этого они бы просто использовать mytool
возможно ли это?
Я знаю, что это возможно с ванилью optparse
, но я предпочел бы использовать Thor, если это возможно.
Update: Это код, я использую на примере на странице Тор, но я получаю ошибку ниже:
#!/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
Ошибка:
/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
Это отлично работает. Резюме: вызовите файл как угодно, сделайте его исполняемым, измените строку привязки, чтобы использовать Ruby, как указано выше, добавьте App.start в конец. Выиграть! –
Где это задокументировано? Мне пришлось искать примеры по всей сети, чтобы понять трюк с шабангом. –
На самом деле это не так. Shebang - стандартный способ создания исполняемых скриптов. Метод класса «start», который смешивается с вашим подклассом Thor, документируется по адресу http://rdoc.info/gems/thor/0.14.6/Thor/Base/ClassMethods:start. Я согласен, в общем, что документация Тора немного пятнистая. – Simon