我正在创建以下ruby类生成器:
class Template < Rails::Generators::Base
source_root File.expand_path('../templates', __FILE__)
argument :name, type: 'string', required: true
...
class_option :templates, type: 'array', default: [1, 2, 3, 4], aliases: '-t'
private
...
end
在rails控制台中,我尝试了:
rails generate template test -t=1 2
rails generate template test -t 1 2
rails generate template test -t 1,2
rails generate template test -t=1,2
rails generate template test -t=[1,2]
rails generate template test -t [1,2]
但生成器无法正常工作。似乎输入不返回数组,因为以下私有方法不起作用:
def should_be_template_rendered(param)
options.templates.include? param
end
param
只是一个数字。结果是根本没有渲染任何模板。我检查了Thor
文档here和here,但无法找到有关如何将数组作为参数传递的示例。
答案 0 :(得分:3)
以下工作对我来说很好
rails generate template test -t=1 2
rails generate template test -t 1 2
请注意,结果是字符串数组:
options["templates"]
#=> ["1", "2"]