Thor
Thor 和 rake 类似,提供了功能强大的命令行接口。
因为 Rails 的 generator 实际上是封装了 Thor ,所以还有 Thor Actions
Actions 实例方法:
action
封装一个实例对象,并调用它。
append_to_file
向文件里追加文本内容。
apply
加载并执行文件。
chmod
更改文件或目录的权限。
comment_lines
注释指定文件里面符合条件的行。
copy_file
复制文件。(默认源文件放在 source_root 下)
create_file & add_file
创建新文件。
create_link(destination, *args, &block) (also: #add_link)
创建一个链接文件。
destination_root
返回目标目录。
destination_root=(root)
设置目标目录。
directory
按规则复制整个目录。(并不是直接复制,注意转换规则)
empty_directory
创建一个空目录。
find_in_source_paths
在源目录里查找文件。
get
获取内容并放到文件里。
gsub_file
按正则替换文件内容。
in_root
到根目录执行 block 里的代码。
inject_into_class
将内容插入到指定的文件,指定的 class 后面。(比 insert_into_file 更精确)
insert_into_file & inject_into_file
将内容插入到指定的文件内。(如:添加 js 文件后,一般会在 application.js 里插入 require 等代码)
inside
在根目录或指定的目录里执行 block 里的代码。
link_file
链接文件。
prepend_to_file & prepend_file
在文件开头处追加文本内容。
relative_to_original_destination_root
以目标为根目录,获取相对路径。
remove_file & remove_dir
移除文件。
run
执行某条命令,并返回执行结果。
run_ruby_script
运行 Ruby 脚本。(照顾 WIN32 的用户)
source_paths
得到源路径。(方便后续操作)
template
复制示例模板文件,生成新的 ERB 文件。
thor
运行 thor 命令。
uncomment_lines
去掉指定文件里符合条件的行的注释。
Actions 类方法:
add_runtime_options!
添加了 force、pretend、quiet、skip 这几个 class_option.
source_paths
存储并返回定义这个类所在的位置
source_paths_for_search
获取 source_paths、source_root(有的话)、source_paths(父亲的)
source_root
存储并返回定义这个类所在的位置。(Base 已经覆盖此方法)
其它
argument
给我们的"命令行"添加参数,并有 attr_accessor
(注意:这里的参数区别于类或方法里的参数、可选参数)
示例:
ClassName#public_instance_method
一般的,类名会被当做 namespace,而实例方法会被当做 task,也就是:
(实例方法的参数仍被当做参数对待)
desc
对 task 的描述。
method_option 和 method_options
使用 task 时传递的可选参数。
invoke
调用方法(为什么不直接调用?)
Thor::Group
继承于它的话,下面的实例方法会被当成"组",会按照定义顺序执行。
class_option 和 class_options
使用 task 时传递的可选参数。(配合 Thor::Group 很好)
namespace
定义 namespace (不使用默认以 ClassName 生成的)
ClassName.start
可以把 task 封装成可执行命令,不必用 thor 命令。这是启动命令,通常放在最后。
option 和 options
可选参数(如:thor my_cli:hello --from "Carl Lerche" Kelby 这里的 --from)
public_task & public_command
定义一个实例方法,方法内容就是其父类的私有方法。
链接
最后更新于