YolCommon

项目地址:http://oa.yolanda.hk:8002/server/yol_common

Gem Version

简单介绍

YolCommon项目(公共方法集成)初衷是抽离公司ruby相关的公用代码块(如:邮箱/手机格式校验,节假日计算,七牛云上传下载等)

其目的/好处主要两点:

一是避免重复造轮问题;二是独智不抵群谋,集体评审优化,让每一个方法都异常精炼(除去杂质,提取精华)!

如何使用

安装依赖

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

说明:命名规范等遗漏处大家一起补充

上传Gem

http://oa.yolanda.hk:9292