Ruby
ruby是一种面向对象、命令式、函数式、动态式的编程语言,在20世纪90年代中期由日本人松本行弘(Matz)设计并开发。
ruby语言特点:
1.开源,跨平台
2.脚本语言,无需编译直接运行
3.自然简洁的语法
4.一切皆是对象
5.灵活的语言设计(使用者可以随意改变原始设计)
6.强大的block和closures
7.继承和mixin
8.RubyGem
rvm
Ruby Version Manager,Ruby版本管理器,包括Ruby的版本管理和Gem库管理(gemset)。目前支持Ruby的大多数版本,通过RVM可以很方便的在多个Ruby版本中快速切换。RVM同时 也支持JRuby。
gem
Gem是封装起来的Ruby应用程序或代码库.
Gemset
如果你知道Ruby有各种Gem可以安装,那Gemset就像一个一个菜篮一样,每次安装Gemset就像放一个gem到菜篮里,使用者可以有不同的菜篮,放入不同的Gem ,借此可以测试各种相容性问题。
RubyGems
RubyGems是一个方便而强大的Ruby程序包管理器( package manager),类似RedHat的RPM.它将一个Ruby应用程序打包到一个gem里,作为一个安装单元。无需安装,最新的Ruby版本已经包含RubyGems了
bundle
相当于多个RubyGems批处理运行。在配置文件gemfilel里说明你的应用依赖哪些第三方包,他自动帮你下载安装多个包,并且会下载这些包依赖的包
bundle和Gemfile
- 默认就是安装最新版: gem 'sqlite3'
- 可以显式地声明版本号: gem 'sqlite3', '1.3.5'
- 强制升级: gem 'sqlite3' '>= 1.3.5'
- 只升级小版本: gem 'sqlite3' '~> 1.3.5'
如果不想每次都在前面加上bundle exec, 可以这样配置:
- chmod +x $rvm_path/hooks/after_cd_bundler
- 赋予 $rvm_path/hooks/after_cd_bundler 脚本可执行权限
- bundle --binstubs=./bundler_stubs
- 创建看了bundler_stubs目录, 把当前环境的可执行命令全都放到了这个目录
- 上面的两个命令结合起来, 就会非常神奇地保证每个命令都是在正确的环境下执行的.
- 不推荐将bundler_stubs文件签入版本控制, 所以最好把它加入.gitignore
- 如果项目中引入了新的可执行程序, 需要再次执行命令: bundle --binstubs=./bundler_stubs. 目的当然是把这个新的程序放入bundler_stubs目录
- 项目特定配置文件, 放在项目根目录下的.bundle/config文件中.
- 全局的配置文件, 放在 ~/.bundle/config文件中.