Rails Gem 创建 generator

环境

  • Rails: 6.1.4.1
  • Ruby: 3.0.1
  • Manjaro 21.1.5

引文

因为使用 rails plugin new gem_name 创建的 gem 是不带有 rails 命令的,没办法直接生成 generator,所以这里用手动创建文件的方式来编写 generator。关于 generator 的相关知识,移步官方文档 -> 创建及定制 Rails 生成器和模板


步骤

  1. 创建 gem 。这里我们创建一个名为 demo1 的 gem 来用于讲解
$ rails plugin new demo1
$ cd demo1

会看到命令生成的文件如下

《Rails Gem 创建 generator》

  1. 将 demo1.gemspec 中的标为 TODO 的项改为实际值,不修改掉 TODO 项是没办法运行 gem 里边的 dummy 应用的

  2. 创建lib/generators/demo1文件夹,注意该路径中的demo1为 gem 的名字,后续要创建的 generator 目录就放在这个下面

$ mkdir -p lib/generators/demo1
  1. 这里假设我们要创建一个名为 install 的 generator ,参照 rails 默认生成的 generator 目录结构,创建如下文件。
$ cd lib/generators/demo1  
$ mkdir -p  install/templates
$ touch install_generator.rb
$ touch USAGE

此时使用 tree 查看到目前的目录结构如下

《Rails Gem 创建 generator》

  1. 将如下内容添加至install/install_generator.rb
module Demo1
  class InstallGenerator < Rails::Generators::Base
    source_root File.expand_path('templates', __dir__)

    def install 
      p "install..."
      p "installed"
    end
  end
end
  1. 将如下内容添加至install/USAGE中。这一步是为了查看生成器列表时可以看到相对应的命令和描述,目前只是练习,可以跳过。
Description:
    Explain the generator

Example:
    bin/rails generate demo1:install

    This will create:
        what/will/it/create
  1. 回到 gem 根目录,进入test/dummy目录中。如果你按照上面的步骤下来,应该是在lib/generator/demo1目录中。
$ cd ../../../
$ cd test/dummy

然后就可以通过 dummy 里边的 rails 测试生成器命令了

$ bin/rails g demo1:install
点赞

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注