在学iOS开发不久就接触到Podfile、 Cocoapod,后面了解到这两个工具都是基于ruby实现的。通过源码的阅读对他们大致总结为:通过 Ruby 来调用终端命令。下面介绍学习ruby需要用到的相关知识
bundler
bundler 是用于管理 ruby gem 的工具,使用方法和cocoapod很相似
source 'http://ruby.taobao.org'
gem 'cocoapods', '~>0.37.2'
gem 'fastlane', '~>1.4.0'
Ruby(静态代码分析)
安装方法如下:
gem install rubocop
变量的类型
● 局部变量(local variable)
以英文小写字母或者 _ 开头。
● 全局变量(global variable)
以 $ 开头
● 实例变量(instance variable)
以 @ 开头
● 类 变 量 ( c l a s s v a r i a b l e )
以 @@ 开头。
常量
常量以大写英文字母开头,
与变量不同的是,对已经 赋值的常量再进行赋值时,Ruby 会发出警告
读取文件内容
pattern = Regexp.new(ARGV[0])
filename = ARGV[1]
file = File.open(filename)
file.each_line do |line|
if pattern =~ line
print line
end end
file.close
如果想读取info.plist文件中含有NSMicrophoneUsageDescription关键字,只需要执行如下命令:
ruby print_lint.rb NSMicrophoneUsageDescription Info.plist
其它文件的引用
Lib.ruby
def simple_grep(pattern, filename)
file = File.open(filename)
file.each_line do |line|
if pattern =~ line
print line
end
end
file.close
end
User.ruby
require_relative "Lib"
pattern = Regexp.new(ARGV[0])
filename = ARGV[1]
simple_grep(pattern, filename)
执行命令如下:
ruby user.rb LSApplicationQueriesSchemes Info.plist
模块
模块是 Ruby 的特色功能之一
● 模块不能拥有实例
● 模块不能被继承
module M
def meth
"meth" end
end
class C
include M # 包含M模块
end
c = C.new
p c.meth #=> meth
类 C 的实例在调用方法时,Ruby 会按类 C、模块 M、类 C 的父类 Object 这个顺序查找该 方法,并执行第一个找到的方法。被包含的模块的作用就类似于虚拟的父类