rails 3 下面编写项目模板
rails 3出来以后,大家都开始尝试里面的各种功能,我早先也试过其中的项目模板功能,感觉不错,在github上放了一个地址用来记录模板,地址在: https://github.com/fsword/rails_templates ,今天拿这几个模板在windows上测试了一下,发现一些问题,这里记录一下先说使用,模板使用起来只要一行代码就行:
$ rails new your_app -m https://github.com/fsword/rails_templates/raw/master/jruby_template0.rb你也可以下载到本地再用:
$ rails new your_app -m ./jruby_template0.rb
是不是很简单?那么,它能做什么呢,我用的结果是,它大致上可以做——任何事
没错,从项目的gem依赖、数据库驱动配置到编写主要模型类、公共页面甚至特殊页面等等等等,只要你愿意,都可以写在这里面,因为它就是一个ruby代码脚本,只不过是用 rails 命令建立项目后进行了后处理而已
当然,简单归简单,真要把所有逻辑写进去还是很麻烦的,这个工具主要还是用来做项目骨架
这里面可以调用哪些常见的api呢,我没有在网上找到如何编写模板的文档,所以想了一个笨办法——写个这样的模板:
# filename : x.rbself.methods.sort.each{|m| p m}这样,执行一下 rails new your_app -m x.rb,我们就能得到可以调用的api了。
大致上,常见的api包括:
[*]remove_file: 删除指定文件,这个api可以方便的跨平台使用
[*]remove_dir: 删除指定目录,这个api可以方便的跨平台使用
[*]say: 在标准输出打印一段文字
[*]gem: 在Gemfile中添加一个依赖包
[*]gsub_file: 替换指定文件的内容,有了它,就不必费劲的写 File.open f.write 了
[*]run: 执行一个外部命令
[*]application: 参数是一个闭包,在application.rb文件中添加闭包中的内容
[*]generate: 调用 rails generator
[*]route: 添加 route 记录
[*]git: 执行 git 操作,例如: init, add, commit 等等
[*]rake: 执行 rake 任务
这些命令中,需要注意的是 run 命令,它与操作系统环境有关,如果编写这样的代码:
run 'rm README'
那么只能在非windows环境下运行了
另外还有一个命令:copy_file,但是它的相对目录不是所创建的rails项目,而我还没有找到代替方法,暂时不推荐了
还有一个很头疼的问题是关于 https 的,受到大中华局域网的影响,git上的资源不是很稳定,所以需要重试,我改了一下代码,添加了一个函数
def try_to nif block_given? n.times{|i| begin return yield rescue p "failed #{i} times" sleep 1 end } nilendenddef try_get url, file=niltry_to(3)do get url,file endend 然后,把
get "https://github.com/fsword/rails_templates/raw/master/resource/gitignore", ".gitignore"改为
try_get "https://github.com/fsword/rails_templates/raw/master/resource/gitignore", ".gitignore"即可
Ok, have fun!
页:
[1]