掌握在iOS这块绝大部分的Ruby开发需求
* 01 Ruby 课程介绍/
* 01 你不知道的ruby 01.mp4 07:29
* 02 你不知道的 Ruby 02.mp4 10:34
* 03 困扰初学者的各种 Ruby 相关名词.mp4 41:26
* 04 ruby 也需要断点调试.mp4 02:08
* 05 rubymine 断点调试(后续课程会详细介绍).mp4 15:39
* 06 rubymine 断点调试(续).mp4 18:09
* 07 vscode 断点调试(后续课程会详细介绍).mp4 17:45
* 08 后续课程安排.mp4 02:21
* 02 Ruby 环境管理/
* 01 gem 含义1: ruby 软件包的管理工具.mp4 16:16
* 02 gem 含义2: 一个 ruby 软件包(.gem 压缩).mp4 16:21
* 03 不同的 ruby 安装 .gem 到不同的路径.mp4 22:25
* 04 安装 RVM.mp4 03:39
* 05 不同版本的 ruby 可能存在问题.mp4 03:47
* 06 Ruby 包的安装路径.mp4 03:55
* 07 cannot load such file.mp4 03:41
* 08 gemset 是什么?.mp4 04:06
* 09 创建自己的 gemset.mp4 05:15
* 10 自动切换 Ruby 项目环境 - .rvmrc.mp4 11:54
* 11 自动切换 Ruby 项目环境 - .ruby-version.mp4 02:15
* 12 rbenv 安装.mp4 12:20
* 13 rbenv gemset 使用.mp4 14:34
* 14 切换到 system ruby.mp4 06:33
* 03 对象模型简介/
* 01 对象模型简介.mp4 05:30
* 04 常用数据类型/
* 01 数值、字符串.mp4 23:15
* 02 vscode code runenr 插件,运行 rb 文件.mp4 11:32
* 03 特殊的 Bool.mp4 15:53
* 04 分不清的 String 与 Symbol.mp4 12:03
* 05 Hash.mp4 24:39
* 06 Struct.mp4 30:49
* 07 Array.mp4 27:47
* 08 方法.mp4 27:08
* 09 代码块.mp4 15:44
* 05 面向对象/
* 01 创建类、创建对象、调用对象方法.mp4 08:03
* 02 self 关键字.mp4 25:52
* 03 accessor 定义对象属性.mp4 08:22
* 04 批量定义 accessor.mp4 07:59
* 05 类方法.mp4 09:24
* 06 运算符重载.mp4 07:07
* 07 to_s 与 inspect.mp4 06:57
* 08 继承.mp4 03:35
* 09 抽象与具体实现.mp4 11:56
* 10 设计模式在 Ruby 中的使用.mp4 01:53
* 11 singleton class.mp4 20:58
* 12 给对象单独添加方法.mp4 04:25
* 13 eigen class.mp4 11:09
* 14 利用好 initialize 方法.mp4 21:47
* 15 异常.mp4 47:02
* 16 对象.方法名! 和 对象.方法名?.mp4 10:22
* 06 流程控制语句/
* 01 if elsif else.mp4 05:14
* 02 unless.mp4 07:10
* 03 case when else.mp4 04:34
* 04 while until for.mp4 08:40
* 05 break next.mp4 01:36
* 06 Range 区间.mp4 03:49
* 07 变量/
* 01 伪变量.mp4 07:06
* 02 全局变量.mp4 04:10
* 03 局部变量.mp4 06:41
* 04 对象的变量.mp4 03:45
* 05 类的变量.mp4 04:35
* 06 常量.mp4 06:06
* 07 环境变量.mp4 17:35
* 08 PATH 环境变量(可不看).mp4 02:46
* 09 修改 PATH(可不看).mp4 02:41
* 10 其他特殊的内置变量.mp4 08:58
* 08 文件操作/
* 01 文件.mp4 05:24
* 02 目录.mp4 02:34
* 03 FileUtils.mp4 02:29
* 04 json.mp4 07:15
* 05 yml/yaml.mp4 03:17
* 06 Pathname.mp4 12:22
* 07 to_path.mp4 01:59
* 08 + 运算符.mp4 04:06
* 09 expand_path.mp4 04:27
* 10 relative_path_from.mp4 05:30
* 11 children、glob.mp4 03:12
* 09 调用外部可执行文件/
* 01 exec.mp4 02:28
* 02 system 基本使用.mp4 06:01
* 03 system 高级用法.mp4 06:42
* 04 反引号.mp4 03:07
* 05 拼接复杂的命令行执行语句.mp4 04:37
* 10 分文件编写代码/
* 01 Ruby 同样把代码分成不同的文件组织.mp4 06:10
* 02 require relative.mp4 05:37
* 03 require 第三方 Ruby 库.mp4 05:16
* 04 cannot load such file -- xxx.mp4 11:12
* 05 原因.mp4 01:51
* 06 LOAD_PATH全局变量,指定rb文件的搜索路径.mp4 19:45
* 07 require 绝对路径下的rb文件.mp4 13:42
* 08 load.mp4 11:24
* 09 autoload.mp4 09:06
* 10 区别.mp4 05:37
* 11 Bundler - gem 依赖关系 管理工具/
* 01 Bundler 也是一个 Ruby 软件包.mp4 08:26
* 02 依赖丢失.mp4 12:39
* 03 手动逐个安装丢失的依赖.mp4 06:39
* 04 安装 Bundler.mp4 09:48
* 05 Bundler 解决依赖丢失.mp4 18:36
* 06 Gemfile.lock.mp4 15:37
* 07 bundle exec.mp4 02:13
* 08 Gemfile 依赖包的 版本号.mp4 04:24
* 09 Gemfile 依赖包的 git.mp4 05:57
* 10 Gemfile source 指定从哪搜索 spec.mp4 06:59
* 11 Gemfile 依赖包的 local path.mp4 03:40
* 12 Gemfile 通过 group 划分 包的依赖.mp4 03:49
* 13 bundle install --without.mp4 16:28
* 14 Bundler.require.mp4 08:45
* 15 Bundler.require 实操.mp4 06:20
* 16 Bundler.require 使用建议.mp4 02:59
* 17 Bundler 常用子命令.mp4 03:30
* 18 Bundler 环境继承给子进程的问题.mp4 03:50
* 19 解决.mp4 01:43
* 12 module 符号命名空间/
* 01 不使用 module 会存在符号被覆盖.mp4 01:24
* 02 module 解决符号覆盖.mp4 03:35
* 03 module 内定义什么.mp4 02:09
* 04 module 内的对象方法.mp4 03:28
* 05 include.mp4 06:11
* 06 extend.mp4 02:21
* 07 对象.extend(module).mp4 02:32
* 08 类.extend(module).mp4 02:06
* 09 只能扩展 module 中的【对象】方法.mp4 04:02
* 10 prepend.mp4 05:23
* 11 mixin.mp4 02:14
* 12 class 也是一种 module.mp4 04:39
* 13 gitlab ruby api.mp4 03:11
* 14 一个 api 他既有类方法,也有对象方法?.mp4 03:19
* 15 如何看起 gitlab ruby api 库源码?.mp4 03:11
* 16 module 内部,也能定义类方法,在外部调用.mp4 04:54
* 17 Gitlab 模块中并没有定义 projects 方法.mp4 01:23
* 18 类方法 method missing.mp4 02:44
* 19 对象方法 method missing.mp4 03:11
* 20 method missing 内的消息转发.mp4 03:24
* 21 Client 内按序排列的 include Xxx.mp4 02:34
* 22 总结消息转发的过程.mp4 09:14
* 23 总结代码结构.mp4 06:02
* 24 在他的源码基础,添加一个模块.mp4 07:28
* 25 class Gitlab::Client 极简写法.mp4 06:19
* 26 读写 module 的 accesstor.mp4 07:59
* 27 上例类似的写法.mp4 01:33
* 28 module/class 内部 extend module.mp4 02:36
* 29 手把手带你0到1手撕上面源码.mp4 01:34
* 30 第一步先搭好架子.mp4 03:12
* 31 第二步注册所有子业务模块.mp4 05:20
* 32 第三步开发某一个具体的子业务模块.mp4 00:42
* 33 写完后给外部调用.mp4 03:20
* 34 注册所有子模块改进 -- 批量文件导入.mp4 04:29
* 13 patch 方法实现/
* 01 patch 步骤.mp4 01:19
* 02 open class.mp4 01:26
* 03 open instance.mp4 02:07
* 04 class prepend module.mp4 02:59
* 05 class define method.mp4 04:01
* 14 DSL 自定义语法/
* 01 eval.mp4 02:43
* 02 initialize 方法.mp4 05:41
* 03 模拟 xx.podspec 语法.mp4 02:50
* 15 HTTP 网络 api 使用/
* 01 postman 导出 HTTP 网络的 Ruby 代码.mp4 02:59
* 02 模拟 xx.podspec DSL 语法实现.mp4 02:50
* 03 查看 Ruby API 使用文档.mp4 02:02
* 04 GET.mp4 03:12
* 05 POST.mp4 04:58
* 06 Upload.mp4 04:08
* 07 第三方库.mp4 09:19
* 08 curl 使用、封装.mp4 06:39
* 16 Rakefile 构建工具/
* 01 安装 rake.mp4 05:40
* 02 定义 默认的 task.mp4 02:25
* 03 task 之间的依赖.mp4 03:50
* 04 namespace.mp4 02:07
* 05 调用其他 task.mp4 03:31
* 06 结合 rspec 使用.mp4 05:32
* 07 rake 参数: rake way.mp4 05:53
* 08 rake 参数: env.mp4 02:21
* 09 rake 参数: ARGV.mp4 06:03
* 10 rake 参数: OptionPaser.mp4 07:59
* 17 ERB 模板/
* 01 什么时候需要使用【模板】?.mp4 03:18
* 02 ERB 模板的简单使用.mp4 17:08
* 03 配置文件为核心.mp4 03:57
* 04 定义实体类、头文件的模板.mp4 06:54
* 05 实现文件的模板.mp4 06:20
* 06 Generator 绑定两个模板文件的实例.mp4 09:15
* 07 调用 Generator 生成 具体文件.mp4 05:03
* 18 调试 和 阅读 CocoaPods 源码/
* 01 创建独立的 gemset.mp4 01:13
* 02 配置 ruby 环境的自动切换.mp4 01:24
* 03 bundle 安装 cocoapods.mp4 02:23
* 04 rubymine 显示错误 external 库.mp4 01:46
* 05 创建 iOS 工程,调试 Podfile.mp4 03:55
* 06 本地以源码引 cocoapods.mp4 03:15
* 07 pod xxx 对应的代码.mp4 06:48
* 08 pod install 流程.mp4 03:53
* 19 自己开发一个 gem 项目/
* 01 创建 ruby 项目.mp4 11:28
* 02 添加 ruby 源文件.mp4 03:02
* 03 解决 require 找不到的问题.mp4 03:44
* 04 如何执行 spec 单元测试.mp4 04:59
* 05 为自己的代码,编写单元测试.mp4 02:51
* 06 接收命令行参数.mp4 02:58
* 07 直接内部环境下,使用 ruby 项目.mp4 03:21
* 08 发布 ruby 项目,可能遇到失败.mp4 03:43
* 09 解决发布失败.mp4 02:15
* 10 发布一个新的版本号.mp4 04:30
* 11 写一个类似 pod 命令行工具.mp4 01:39
* 12 从自己的入口可执行文件开始.mp4 09:02
* 13 添加类似 pod xxx 各种子命令.mp4 05:42
* 14 实现具体的子命令要做的事情.mp4 05:08
* 15 接收命令行参数.mp4 05:12
* 20 封装 CocoaPods 实现脚本化组件集成/
* 01 App 直接依赖某个组件集成工具.mp4 06:57
* 02 Podfile 管理【所有】组件集成关系.mp4 09:15
* 03 【独立文件】管理【每一个】组件的集成参数.mp4 02:24
* 04 独立【DSL 语法文件】描述一个组件【如何集成】.mp4 06:20
* 05 【精确指定】组件要集成的【版本号】.mp4 02:54
* 06 App【新增】一个组件.mp4 01:57
* 07 App【删除】一个组件.mp4 00:46
* 08 App【更新】一个组件的【版本号】.mp4 02:45
* 09 App【本地开发】一个组件的代码.mp4 05:17
* 10 总结.mp4 05:41
* 11 Podfile的本质.mp4 09:08
* 12 简单的拦截pod方法调用.mp4 07:51
* 13 我怎么知道pod方法的参数列表.mp4 04:45
* 14 将pod拦截的代码封装到独立rb文件.mp4 02:29
* 15 创建一个gem封装pod调用实现细节.mp4 08:27
* 16 确定gem对外调用的接口.mp4 09:19
* 17 添加上cocoapods依赖.mp4 06:23
* 18 target对象的pod方法.mp4 03:26
* 19 定义dsl文件独立管理1个组件的pod参数.mp4 05:50
* 20 App告诉gem哪里存放dsl文件.mp4 06:48
* 21 dsl文件对应的实体类1.mp4 04:45
* 22 dsl文件对应的实体类2.mp4 09:51
* 23 dsl文件对应的实体类3.mp4 05:54
* 24 dsl文件对应的实体类4-eval.mp4 03:41
* 25 15-封装from_file方法.mp4 03:01
* 26 16-优化attr属性写法.mp4 02:55




