В Ruby есть библиотека, которая делает сценарии командной строки более удобными для пользователя, предлагая мне запустить? - PullRequest
0 голосов
/ 10 ноября 2010

Итак, что я делаю сейчас, так это то, что в моих скриптах на Ruby есть куча методов, и я должен закомментировать, какие вызовы методов я не хочу вызывать, и откомментировать тот, который я хочу запустить в моем скрипте командной строки..

Существует ли библиотека Ruby, которая позволяет легко подсказывать пользователю, какую функцию вызывать?

Ответы [ 3 ]

5 голосов
/ 10 ноября 2010

Если вам нужен код, который будет выборочно выполнять определенный метод в исходном файле, вам нужно написать таблицу диспетчеризации, чтобы принять ввод и вызвать любую желаемую процедуру.

Это все довольно стандартные вещи для программиста, и их легко сделать с помощью OptionParser и некоторого творческого использования case/when операторов.

1 голос
/ 10 ноября 2010

Если вам нужно что-то, что действительно подсказывало бы пользователю во время выполнения скрипта, вы можете обернуть методы, о которых вам нужно запросить:

module Confirmable
  def confirm_first *methods
    methods.each do |meth|
      alias_method "orig_#{meth}", meth
      define_method meth do |*args, &block|
        print "Execute #{meth}?[Yn] "
        s = gets.chomp
        return if s.downcase == 'n'
        send "orig_#{meth}", *args, &block
      end
    end
  end
end

class MyClass
  extend Confirmable
  def foo arg
    puts "starting foo"
    puts arg
  end

  confirm_first :foo
end

c = MyClass.new
c.foo "bar"

Таким образом, каждый метод, который вы пометите confirm_first сначала запросит подтверждение перед выполнением.

1 голос
/ 10 ноября 2010

Вы можете использовать ARGV для перебора аргументов вашей программы. Существует также Getopt::Declare, библиотека для работы с аргументами командной строки аналогично традиционным утилитам Unix.

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