在学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 这个顺序查找该 方法,并执行第一个找到的方法。被包含的模块的作用就类似于虚拟的父类