Rails rails g xxx:install 内部发生了什么

answer · 2015年04月10日 · 最后由 answer 回复于 2015年04月15日 · 2567 次阅读

每每看到安装一个 Gem 后,大多都会执行 rails g xx:install , 可是这背后发生了什么,我想应该是会生成与之相关的文件,于是有两个问题请教:

1,这样的文件会在什么地方生成?比如执行 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 时执行。

#3 楼 @dandananddada task 文件夹应该不是 写 generator,而是是写自己 rake 命令吧? #4 楼 @lyfi2003 感谢!按照我的理解: 1,继承 Rails::Generators::Base 这个类 2,指明 source_root,如 templates 文件夹下的所有文件 3,当执行 rails g xxx:install时,就会自动安装 source_root 路劲下的文件 是这样的吗?

#5 楼 @answer 这跟你怎么写有关,本质上它们是 thor 提供一套工具。

#6 楼 @lyfi2003 恩,我先了解下 Thor

#5 楼 @answer 恩。。。确实是这样的,按照#8 说的会在 lib/generators 下创建文件。。。

#6 楼 @lyfi2003 还有个问题,如果我在自己的 gem 中写了与 Rails 相关的 generator,如何进行模拟测试看是否生成了相关文件?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号