YolCommon
项目地址:http://oa.yolanda.hk:8002/server/yol_common
简单介绍
YolCommon项目(公共方法集成)初衷是抽离公司ruby相关的公用代码块(如:邮箱/手机格式校验,节假日计算,七牛云上传下载等)
其目的/好处主要两点:
一是避免重复造轮问题;二是独智不抵群谋,集体评审优化,让每一个方法都异常精炼(除去杂质,提取精华)!
- 如何使用
- - 安装依赖
- - 简单使用
- API文档
- - 线上文档
- - 本地文档
- 上传代码
- - 目录介绍
- - - 添加依赖
- - - 更新版本
- - - 单个方法
- - - 系列方法
- - - 重写方法
- - 命名规则
- - - 归类命名
- - - 方法命名
- - - 常量命名
- 上传Gem
如何使用
安装依赖
Add this line to your application's Gemfile:
# http://oa.yolanda.hk:9292为公司内部Gem源
source "http://oa.yolanda.hk:9292" do
gem 'yol_common', '~> 0.0.2'
end
简单使用
引用模块
include YolCommon
使用方法
# 校验邮箱格式
Validator.email?("[email protected]")
=> true
# 计算量两日期间的工作日
end_at = Time.now
begin_at = Time.now - 30.days
business_days_between(begin_at, end_at)
=> 22
API文档
线上文档
https://www.rubydoc.info/gems/yol_common/0.0.2
说明:此地址为测试地址,供大家参考看看效果,正式地址待内部开发
本地文档
正式地址开发前,可本地生成api文档,步骤如下:
# 1.本地拉取代码
git clone ssh://[email protected]:22022/server/yol_common.git
# 2.同步最新代码
git pull
# 3.进入lib目录
cd yol_common/lib
# 4.利用rdoc命令生成文档
rdoc
# 5.浏览器打开生成的index.html
file: yol_common/lib/doc/index.html
上传代码
上传代码:指需要把一些新方法上传到yol_common或有更好的算法更新yol_common上的老方法;
目录介绍
添加依赖
File: yol_common/yol_common.gemspec
# 新方法依赖的gem需要使用“spec.add_dependency”添加
Gem::Specification.new do |spec|
...
spec.add_development_dependency "bundler"
spec.add_development_dependency "rake"
spec.add_development_dependency "rspec"
spec.add_dependency 'oj'
end
更新版本
File: yolanda/yol_common/lib/yol_common/version.rb
# 每次更新代码,记得手动更新版本号
# 新版本号发布异常处理:及时删除源:http://oa.yolanda.hk:9292 上对应的版本;
module YolCommon
VERSION = "0.0.2"
end
单个方法
File: yolanda/yol_common/lib/yol_common/helper.rb
# help.rb为单个方法:非系列的,暂无归类的;
# 当单个方法积累到一定量,再进行归类处理;
module YolCommon
# 计算两日期间的工作日
...
def business_days_between(date1, date2)
...
end
end
系列方法
File: yolanda/yol_common/lib/yol_common/validator.rb
# validator.rb为系列方法:校验器,用于校验一些数据格式;
module YolCommon
...
class Validator
# 邮箱
def self.email?(email)
end
# 手机
def self.mobile?(mobile)
end
...
end
end
重写方法
File: yolanda/yol_common/lib/yol_common/range.rb
# range.rb为重写基础类Class::Range, 其目的是为了让范围range支持&符号查询交集;
# 重写前,&可用于 [1, 2] & [2, 3] = [2]
# 重写后,&也可用于 (1..10) & (5..15)
class Range
...
alias_method :&,:intersection
end
命名规则
https://ruby-china.org/wiki/coding-style#%E5%91%BD%E5%90%8D
归类命名
使用CamelCase(駝峰式大小寫)的形式给类和模块命名。
(保持使用缩略首字母大写的方式如 HTTP, RFC, XML)
class SomeClass
...
end
class SomeXML
...
end
举例 校验器
直译:Validator
# file: yolanda/yol_common/lib/yol_common/validator.rb
module YolCommon
class Validator
...
end
end
举例 七牛云
参考三方文档:https://developer.qiniu.com/kodo/1304/ruby
便于区分添加Yol:YolQiniu
# file: yolanda/yol_common/lib/yol_common/yol_qiniu.rb
module YolCommon
class YolQiniu
...
end
end
方法命名
snake_case的形式给变量和方法命名
:some_symbol
def some_method
...
end
mobile?
"?"用于获取布尔型变量true/false
def self.email?(email)
return false if email.length <= 3 || email.length >= 255
return true if email.to_s =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i rescue nil
false
end
常量命名
使用SCREAMING_SNAKE_CASE给常量命名。
注释格式
# 计算两日期间的工作日
## @param [Date] 日期 Thu, 22 Apr 2021
## @return [Int] 天数 5
## @author luojie
## @date 2021-03-30
def business_days_between(date1, date2)
business_days = 0
date = date2
while date > date1
business_days = business_days + 1 unless date.saturday? or date.sunday?
date = date - 1.day
end
business_days
end
说明:命名规范等遗漏处大家一起补充