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

ruby round方法 ruby bundler_赋值