首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在rails生成器中检索生成器名称

在rails生成器中检索生成器名称
EN

Stack Overflow用户
提问于 2016-12-02 22:29:40
回答 1查看 425关注 0票数 4

我正在尝试设置一个rails生成器,这是我的第一个生成器,在过去的两个小时里,我一直被困在一些非常简单的东西上--如何让用户输入生成器的名称。这是一个应用程序,而不是宝石。

那么,在下面的例子中--我如何在生成器代码上打印“Foo”呢?

代码语言:javascript
复制
rails g block Foo

class BlockGenerator < Rails::Generators::NamedBase
  source_root File.expand_path('../templates', __FILE__)

  puts #Foo (file name)#
end

我已经尝试了NamedBase和基本生成器以及我能找到的每一种方法。

任何帮助都将不胜感激!

编辑

代码语言:javascript
复制
$ rails g block Foo

class BlockGenerator < Rails::Generators::NamedBase
  source_root File.expand_path('../templates', __FILE__)
  argument :generator_name, type: :string

  puts #Foo (file name)#
end

#result

block
No value provided for required arguments 'generator_name'


$ rails generate block :generator_name => testing

 #result

 is empty, nothing is printed to the console. 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-02 22:46:55

名称被定义为自动

首先,请注意,我们从Rails继承的是:生成器::NamedBase,而不是Rails::Generators::Base。这意味着我们的生成器至少需要一个参数,这将是初始化程序的名称,并且在我们的代码中可以在变量名中使用。

代码语言:javascript
复制
class BlockGenerator < Rails::Generators::NamedBase
  source_root File.expand_path('../templates', __FILE__)

  def display_name
    puts name
  end
end

在此采取行动:

代码语言:javascript
复制
rails g block Foo
#=> Foo

如果需要另一个参数:

代码语言:javascript
复制
class BlockGenerator < Rails::Generators::NamedBase
  source_root File.expand_path('../templates', __FILE__)

  argument :bar, type: :string, default: "Bar"

  def display_name
    puts name
    puts bar
  end
end

它的产出如下:

代码语言:javascript
复制
rails g block Foo
#Foo
#Bar

rails g block Foo Baz
#Foo
#Baz

请注意,如果在类定义中但在方法之外使用name变量,则将定义它,但使用BlockGenerator

代码语言:javascript
复制
class BlockGenerator < Rails::Generators::NamedBase
  source_root File.expand_path('../templates', __FILE__)

  argument :bar, type: :string, default: "Bar"

  puts name

  def display_name
    puts name
    puts bar
  end
end


rails g block Foo Baz
# BlockGenerator
# Foo
# Baz
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40941833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档