Можно ли вызвать исполняемый скрипт на базе Thor без вызова тор? - PullRequest
7 голосов
/ 27 августа 2010

У меня есть скрипт Ruby на основе тора, но я хочу развернуть его как драгоценный камень в каталогах bin людей, которые люди могут использовать без необходимости thor mytool.

Так что вместо этого они просто использовали бы mytool

Возможно ли это?

Я знаю, что это возможно с ванилью optparse, но я бы предпочел использовать Тора, если это возможно.

Обновление: Это код, который я использую на основе примера на странице Thor, но я получаю ошибку ниже:

#!/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

Ответы [ 3 ]

12 голосов
/ 01 декабря 2010

Сделайте строку shebang

#!/usr/bin/env ruby

и затем в конце вашего сценария добавьте

App.start
1 голос
/ 07 декабря 2012

Вы можете найти это полезным: https://github.com/lastobelus/cleanthor

Я хотел иметь исполняемый файл на основе тор для гема с подкомандами в пространстве имен, но организовал файлы задач в соответствии с обычной структурой ruby ​​lib / mygem / * / .rb.

0 голосов
/ 27 августа 2010

Сделать скрипт исполняемым

chmod +x mytool

и сделать #!/usr/bin/env thor первой строкой mytool.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...