每每看到安装一个 Gem 后,大多都会执行 rails g xx:install , 可是这背后发生了什么,我想应该是会生成与之相关的文件,于是有两个问题请教:
rails g xx:install
1,这样的文件会在什么地方生成?比如执行 rails g bootstrap:install 后,会在什么地方生成相关文件
rails g bootstrap:install
2,这样的命令是如何实现的呢?安装 gem 后就会有相关命令,原理是什么
查源码
看相应 gem 的 generator 部分
lib 目录下有 task 文件夹,里面有定义相关命令执行的方法(Rails4)
我写 lina( 一个 API 框架 ), 用过它,很简单:
https://github.com/windy/lina/blob/master/lib/generators/lina/install/install_generator.rb
执行 rails g lina:install 时执行。
rails g lina:install
#3 楼 @dandananddada task 文件夹应该不是 写 generator,而是是写自己 rake 命令吧? #4 楼 @lyfi2003 感谢!按照我的理解: 1,继承 Rails::Generators::Base 这个类 2,指明 source_root,如 templates 文件夹下的所有文件 3,当执行 rails g xxx:install时,就会自动安装 source_root 路劲下的文件 是这样的吗?
rails g xxx:install
#5 楼 @answer 这跟你怎么写有关,本质上它们是 thor 提供一套工具。
#6 楼 @lyfi2003 恩,我先了解下 Thor
文档在这里 http://guides.rubyonrails.org/generators.html
#5 楼 @answer 恩。。。确实是这样的,按照#8 说的会在 lib/generators 下创建文件。。。
#8 楼 @liwei78
#6 楼 @lyfi2003 还有个问题,如果我在自己的 gem 中写了与 Rails 相关的 generator,如何进行模拟测试看是否生成了相关文件?