抄自http://henter.me/post/ruby-rvm-gem-rake-bundle-rails.html 刚刚在网上查找了这些知识,觉得写得满好,就拿过来给群里的同学分享下。
最近在看一个 Rails 项目,渐渐的接触到 Ruby 语言,其中有些概念之前比较混乱,模棱两可,相信也有人跟我一样,刚开始学 ruby 时对这些概念不太清晰,现在整理一下。
这个就不用多说了
用于帮你安装 Ruby 环境,帮你管理多个 Ruby 环境,帮你管理你开发的每个 Ruby 应用使用机器上哪个 Ruby 环境。Ruby 环境不仅仅是 Ruby 本身,还包括依赖的第三方 Ruby 插件。都由 RVM 管理。
这个也不用多说,著名开发框架。详细看 http://zh.wikipedia.org/wiki/Ruby_on_Rails
RubyGems 是一个方便而强大的 Ruby 程序包管理器(package manager),类似 RedHat 的 RPM.它将一个 Ruby 应用程序打包到一个 gem 里,作为一个安装单元。无需安装,最新的 Ruby 版本已经包含 RubyGems 了。
Gem 是封装起来的 Ruby 应用程序或代码库。
注:在终端使用的 gem 命令,是指通过 RubyGems 管理 Gem 包。
定义你的应用依赖哪些第三方包,bundle 根据该配置去寻找这些包。
Rake 是一门构建语言,和 make 类似。Rake 是用 Ruby 写的,它支持自己的 DSL 用来处理和维护 Ruby 程序。Rails 用 rake 扩展来完成多种不容任务,如数据库初始化、更新等。
Rake is a build language, similar in purpose to make and ant. Like make and ant it's a Domain Specific Language, unlike those two it's an internal DSL programmed in the Ruby language.
PS:个人感觉有点类似 Symfony2 中的 app/console
Rakefile 是由 Ruby 编写,Rake 的命令执行就是由 Rakefile 文件定义。
In a gem’s context, the Rakefile is extremely useful. It can hold various tasks to help building, testing and debugging your gem, among all other things that you might find useful.
详细:http://rake.rubyforge.org/files/doc/rakefile_rdoc.html
相当于多个 RubyGems 批处理运行。在配置文件 gemfilel 里说明你的应用依赖哪些第三方包,他自动帮你下载安装多个包,并且会下载这些包依赖的包。
Bundler maintains a consistent environment for ruby applications. It tracks an application's code and the rubygems it needs to run, so that an application will always have the exact gems (and versions) that it needs to run.