1

以前に宣言された引数の値に基づいて、引数のデフォルト値を指定したいと考えています。この例では、handlerSendPortデフォルト値はhandlerRecvPort + 1

require "thor/group"  
module Noov
  class App < Thor::Group
    include Thor::Actions

    argument :name, type: :string, desc: "The name of the project to create"
    argument :handlerRecvPort, type: :numeric, desc: "The 0MQ recv port number on the handler side (random if not specified)", optional: true, default: rand(2**16-1024)+1024+1
    argument :handlerSendPort, type: :numeric, desc: "The 0MQ send port number on the handler side (recv port + 1 if not specified)", optional: true, default: handlerRecvPort+1
    argument :handlerUUID, type: :string, desc: "The mongrel2 server UUID (project name if not specified)", optional: true, default: name
    desc "Creates a project directory for a new website. Fully equipped to support BDD with Cucumber"

  end
end

これは次の場合に失敗します。

undefined local variable or methodNoov::App:Class (NameError)` の handlerRecvPort'

クラス評価のコンテキストでは引数値を使用できないことに気付きました (メタマジックを機能させることを望んでいましたが)。この時点で引数値にアクセスするにはどうすればよいでしょうか?

4

0 に答える 0