以前に宣言された引数の値に基づいて、引数のデフォルト値を指定したいと考えています。この例では、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 method
Noov::App:Class (NameError)` の handlerRecvPort'
クラス評価のコンテキストでは引数値を使用できないことに気付きました (メタマジックを機能させることを望んでいましたが)。この時点で引数値にアクセスするにはどうすればよいでしょうか?