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.rb
self.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 n
  if block_given?
    n.times{|i|
      begin
        return yield
      rescue
        p "failed #{i} times"
        sleep 1
      end
    }
    nil
  end
end

def try_get url, file=nil
  try_to(3)do get url,file end
end
 

然后,把

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!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值