Ruby_01_环境安装
手册简介:
Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada以及 Lisp 语言。
由 Ruby 语言本身还发展出了JRuby(Java平台)、IronRuby(.NET平台)等其他平台的 Ruby 语言替代品。
Ruby的作者于1993年2月24日开始编写Ruby,直至1995年12月才正式公开发布于fj(新闻组)。
因为Perl发音与6月诞生石pearl(珍珠)相同,
因此Ruby以7月诞生石ruby(红宝石)命名。
C#的命名则是乐理中的C音符升半度而来
手册说明:
官网:http://www.ruby-lang.org/en/
API文档:http://www.ruby-lang.org/en/documentation/
下载:http://www.ruby-lang.org/en/downloads/
发展历程
Ruby明显比其他类似的编程语言(如Perl或Python)年轻,又因为Ruby是日本人发明的,所以早期的非日文资料和程序都比较贫乏,所以在网上仍然可以找到类似“Ruby的资料太少”之类的批评。约于2000年,Ruby开始进入美国,英文的资料开始发展。
Ruby 标识
2011年10月31日1.9.3的第一个稳定版本1.9.3p0发布。
2013年2月22日发布了Ruby 1.9.3-p392。
2013年2月24日发布了Ruby 2.0.0-p0。
2015年4月13日发布了Ruby 2.2.2。
2015年12月25日发布了Ruby 2.3.0。
语言标准
Ruby的变量有一定的规则,
已经定义的类可以在运行时修改
Ruby是动态语言,你可以在程序中修改先前定义过的类。
class Girldef showCup"generalmethod_showCup"end
end
loli=Girl.new
def loli.showCup"no cup for this loli instance."
end
loli.showCup#specialcupforthisloliinstance
使用Ruby可以写出简短而又功能强大的代码
下面的方法用来完成两个矩阵的乘积???Excuse Me???
def matrix_mul(matrix1,matrix2)result=[](0...matrix1.length).each{|i|temp=[](0...matrix2[0].length).each{|j|tmp=0(0...matrix1[0].length).each{|k|tmp+=matrix1[i][k]*matrix2[k][j]}temp<<tmp}result<<temp}return result
end
注:ruby标准库中已包含矩阵库 Matrix
语言特点
完全面向对象
在Ruby语言中,任何东西都是对象,包括其他语言中的基本数据类型,比如整数
变量没有类型
Ruby的变量可以保存任何类型的数据。
任何东西都有值
不管是数学或者逻辑表达式还是一个语句,都会有值。
ruby语言很优雅,可以做到不需要注释就可以读懂。吹牛>_<
Ruby优点
语法简单
普通的面向对象功能(类,方法调用等)
特殊的面向对象功能(Mixin,特殊方法等)
操作符重载(类似C++,C#)
错误处理功能
迭代器和闭包(类似JS,Swift)
垃圾回收
动态载入(取决于系统架构)
可移植性高.不仅可以运行在多数UNIX上,还可以运行在DOS,Windows,Mac,BeOS等平台上
适合于快速开发,一般开发效率是JAVA的5倍
语言理念
减少编程时候的不必要的琐碎时间,令编写程序的人高兴,是设计 Ruby 语言的 Matz 的一个首要的考虑;
“ 人们特别是电脑工程师们,常常从机器着想。他们认为:‘这样做,机器就能运行的更快;这样做,机器运行效率更高;这样做,机器就会怎样怎样怎样。’
遵循上述的理念,Ruby 语言通常非常直观,按照编程人认为它应该的方式运行。
Ruby 是完全面向对象的:
下面是一个在标准输出设备上输出Hello World的简单程序,
#!/usr/bin/env ruby
puts "Hello, world!"
语言用途
- Ruby 是开源的,在Web 上免费提供,但需要一个许可证。
- Ruby 是一种通用的、解释的编程语言。
- Ruby 是一种真正的面向对象编程语言。
- Ruby 是一种类似于 Python 和 Perl 的服务器端脚本语言。
- Ruby 可以用来编写通用网关接口(CGI)脚本。
- Ruby 可以被嵌入到超文本标记语言(HTML)。
- Ruby 语法简单,这使得新的开发人员能够快速轻松地学习 Ruby。
- Ruby 与 C++ 和 Perl 等许多编程语言有着类似的语法。
- Ruby 可扩展性强,用 Ruby 编写的大程序易于维护。
- Ruby 可用于开发的 Internet 和 Intranet 应用程序。
- Ruby 可以安装在 Windows 和 POSIX 环境中。
- Ruby 支持许多 GUI 工具,比如 Tcl/Tk、GTK 和 OpenGL。
- Ruby 可以很容易地连接到 DB2、MySQL、Oracle 和 Sybase。
- Ruby 有丰富的内置函数,可以直接在 Ruby 脚本中使用。
发明人
松本行弘"Matz"(Yukihiro Matsumoto)是Ruby语言的发明人,他从1993年起便开始着手Ruby的研发工作。他一直想发明一种语言,使你既能进行高效开发又能享受编程的快乐。1993年2月24日Ruby诞生了,1995年12月Matz推出了Ruby的第一个版本Ruby 0.95。不久Ruby便凭借其独特的魅力横扫日本。
Ruby 语言
编译/执行 Ruby 程序
对于大多数编程语言,第一个入门实例便是 "Hello World!",下面的实例使用 Ruby 输出 "Hello World!":
puts "Hello World!";
或者是在irb交互式命令行的模式下
>>puts "Hello, world!" Hello, world! => nil
Ruby 简介
Ruby是一种纯粹的面向对象编程语言。它由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)创建于1993年。
您可以在 www.ruby-lang.org 的 Ruby 邮件列表上找到松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)的名字。在 Ruby 社区,松本也被称为马茨(Matz)。
Ruby 是"程序员的最佳朋友"。
Ruby 的特性与 Smalltalk、Perl 和 Python 类似。
Perl、Python 和 Smalltalk 是脚本语言。
Smalltalk 是一个真正的面向对象语言。
Ruby,与 Smalltalk 一样,是一个完美的面向对象语言。使用 Ruby 的语法比使用 Smalltalk 的语法要容易得多。
您需要的工具
为了执行本教程中讨论的实例,您需要 RAM 至少为 2GB(推荐为 4GB)的 Intel Core i3 或 i5 的计算机。您还需要以下软件:
- Linux 或 Windows 95/98/2000/NT 或 Windows 7 以上操作系统
- Apache 1.3.19-5或以上 Web 服务器
- Internet Explorer 5.0 或以上的 Web 浏览器
- Ruby 1.8.5或以上
本教程将介绍如何使用 Ruby 创建 GUI、网络和 Web 应用程序。另外还会讨论如何扩展和嵌入 Ruby 应用程序。
接下来将学习什么?
下一章将向您介绍从哪里可以获取 Ruby 及其文档。最后,它会指示您如何安装 Ruby,并配置环境为开发 Ruby 应用程序做准备。
Ruby 环境
本地环境设置
如果您想要设置 Ruby 编程语言的环境
Linux/Unix 上的 Ruby 安装:如果您想要在 Linux/Unix 上配置开发环境,那么请查看本章节的内容。
Ruby 命令行选项:本章节列出了所有的命令行选项,您可以和 Ruby 解释器一起使用这些命令行选项。
Ruby 环境变量:本章节列出了所有重要的环境变量列表,设置这些环境变量以便让 Ruby 解释器工作。
流行的 Ruby 编辑器
为了编写 Ruby 程序,您需要一个编辑器:
- 如果您是在 Windows 上进行编写,那么您可以使用任何简单的文本编辑器,比如 Notepad++ 或 Edit plus。
- VIM(Vi IMproved)是一个简单的文本编辑器,几乎在所有的 Unix 上都是可用的,现在也能在 Windows 上使用。另外,您还可以使用您喜欢的 vi 编辑器来编写 Ruby 程序。
交互式 Ruby(IRb)
交互式 Ruby(IRb)为体验提供了一个 shell。在 IRb shell 内,您可以逐行立即查看解释结果。
这个工具会随着 Ruby 的安装自动带有,所以您不需要做其他额外的事情,IRb 即可正常工作。
只需要在命令提示符中键入 irb,一个交互式 Ruby Session 将会开始,如下所示:
$irb irb 0.6.1(99/09/16) irb(main):001:0> def showGirlCup irb(main):002:1> cup = "girl's cup is F" irb(main):003:1> puts cup irb(main):004:1> end nil irb(main):005:0> showGirlCup girl's cup is F nil irb(main):006:0>
这里您可以先不用关心上面命令的执行内容,我们将在后续的章节中向您讲解。
接下来将学习什么?
假设现在您已经设置好 Ruby 环境,且已经做好编写第一个 Ruby 程序的准备。下一章我们将向您讲解如何编写 Ruby 程序。
附:Ruby 安装 - Unix
下面列出了在 Unix 机器上安装 Ruby 的步骤。
注意:在安装之前,请确保您有 root 权限。
- 下载最新版的 Ruby 压缩文件。请点击这里下载。
- 下载 Ruby 之后,解压到新创建的目录下:
$ tar -xvzf ruby-2.2.3.tgz $ cd ruby-2.2.3
- 现在,配置并编译源代码,如下所示:
$ ./configure $ make $ sudo make install
- 安装后,通过在命令行中输入以下命令来确保一切工作正常:
$ruby -v ruby 2.2.3……
- 如果一切工作正常,将会输出所安装的 Ruby 解释器的版本,如上所示。如果您安装了其他版本,则会显示其他不同的版本。
自动安装 Ruby
如果您的计算机已经连接到 Internet,那么最简单安装 Ruby 的方式是使用 yum 或 apt-get。
$ sudo yum install ruby # CentOS, Fedora, 或 RHEL 系统或sudo apt-get install ruby-full # Debian 或 Ubuntu 系统
如果你是苹果系统,可以使用 brew 命令安装:
$ brew install ruby
在命令提示符中输入以下的命令,即可在您的计算机上安装 Ruby。
Ruby 命令行选项
Ruby 一般是从命令行运行,方式如下:
$ ruby [ options ] [.] [ programfile ] [ arguments ... ]
解释器可以通过下列选项被调用,来控制解释器的环境和行为。
选项 | 描述 |
---|---|
-a | 与 -n 或 -p 一起使用时,可以打开自动拆分模式(auto split mode)。请查看 -n 和 -p 选项。 |
-c | 只检查语法,不执行程序。 |
-C dir | 在执行前改变目录(等价于 -X)。 |
-d | 启用调试模式(等价于 -debug)。 |
-F pat | 指定 pat 作为默认的分离模式($;)。 |
-e prog | 指定 prog 作为程序在命令行中执行。可以指定多个 -e 选项,用来执行多个程序。 |
-h | 显示命令行选项的一个概览。 |
-i [ ext] | 把文件内容重写为程序输出。原始文件会被加上扩展名 ext 保存下来。如果未指定 ext,原始文件会被删除。 |
-I dir | 添加 dir 作为加载库的目录。 |
-K [ kcode] | 指定多字节字符集编码。e 或 E 对应 EUC(extended Unix code),s 或 S 对应 SJIS(Shift-JIS),u 或 U 对应 UTF-8,a、A、n 或 N 对应 ASCII。 |
-l | 启用自动行尾处理。从输入行取消一个换行符,并向输出行追加一个换行符。 |
-n | 把代码放置在一个输入循环中(就像在 while gets; ... end 中一样)。 |
-0[ octal] | 设置默认的记录分隔符($/)为八进制。如果未指定 octal 则默认为 。 |
-p | 把代码放置在一个输入循环中。在每次迭代后输出变量 $_ 的值。 |
-r lib | 使用 require 来加载 lib 作为执行前的库。 |
-s | 解读程序名称和文件名参数之间的匹配模式 -xxx 的任何参数作为开关,并定义相应的变量。 |
-T [level] | 设置安全级别,执行不纯度测试(如果未指定 level,则默认值为 1)。 |
-v | 显示版本,并启用冗余模式。 |
-w | 启用冗余模式。如果未指定程序文件,则从 STDIN 读取。 |
-x [dir] | 删除 #!ruby 行之前的文本。如果指定了 dir,则把目录改变为 dir。 |
-X dir | 在执行前改变目录(等价于 -C)。 |
-y | 启用解析器调试模式。 |
--copyright | 显示版权声明。 |
--debug | 启用调试模式(等价于 -d)。 |
--help | 显示命令行选项的一个概览(等价于 -h)。 |
--version | 显示版本。 |
--verbose | 启用冗余模式(等价于 -v)。设置 $VERBOSE 为 true。 |
--yydebug | 启用解析器调试模式(等价于 -y)。 |
单字符的命令行选项可以组合使用。下面两行表达了同样的意思:
$ruby -ne 'print if /Ruby/' /usr/share/bin$ruby -n -e 'print if /Ruby/' /usr/share/bin
Ruby 环境变量
Ruby 解释器使用下列环境变量来控制它的行为。ENV 对象包含了所有当前设置的环境变量列表。
变量 | 描述 |
---|---|
DLN_LIBRARY_PATH | 动态加载模块搜索的路径。 |
HOME | 当没有参数传递给 Dir::chdir 时,要移动到的目录。也用于 File::expand_path 来扩展 "~"。 |
LOGDIR | 当没有参数传递给 Dir::chdir 且未设置环境变量 HOME 时,要移动到的目录。 |
PATH | 执行子进程的搜索路径,以及在指定 -S 选项后,Ruby 程序的搜索路径。每个路径用冒号分隔(在 DOS 和 Windows 中用分号分隔)。 |
RUBYLIB | 库的搜索路径。每个路径用冒号分隔(在 DOS 和 Windows 中用分号分隔)。 |
RUBYLIB_PREFIX | 用于修改 RUBYLIB 搜索路径,通过使用格式 path1;path2 或 path1path2,把库的前缀 path1 替换为 path2。 |
RUBYOPT | 传给 Ruby 解释器的命令行选项。在 taint 模式时被忽略(其中,$SAFE 大于 0)。 |
RUBYPATH | 指定 -S 选项后,Ruby 程序的搜索路径。优先级高于 PATH。在 taint 模式时被忽略(其中,$SAFE 大于 0)。 |
RUBYSHELL | 指定执行命令时所使用的 shell。如果未设置该环境变量,则使用 SHELL 或 COMSPEC。 |
对于 Unix,使用 env 命令来查看所有环境变量的列表。
HOSTNAME=ip-72-167-112-17.ip.secureserver.net RUBYPATH=/usr/bin SHELL=/bin/bash TERM=xterm HISTSIZE=1000 SSH_CLIENT=122.169.131.179 1742 22 SSH_TTY=/dev/pts/1 USER=amrood JRE_HOME=/usr/java/jdk/jre J2RE_HOME=/usr/java/jdk/jre PATH=/usr/local/bin:/bin:/usr/bin:/home/guest/bin MAIL=/var/spool/mail/guest PWD=/home/amrood INPUTRC=/etc/inputrc JAVA_HOME=/usr/java/jdk LANG=C HOME=/root SHLVL=2 JDK_HOME=/usr/java/jdk LOGDIR=/usr/log/ruby LOGNAME=amrood SSH_CONNECTION=122.169.131.179 1742 72.167.112.17 22 LESSOPEN=|/usr/bin/lesspipe.sh %s RUBYLIB=/usr/lib/ruby G_BROKEN_FILENAMES=1 _=/bin/env
Ruby 中文编码
前面章节中我们已经学会了如何用 Ruby 输出 "Hello, Beyond!",英文没有问题,但是如果你输出中文字符"妳好,二次元"就有可能会碰到中文编码问题。
Ruby 文件中如果未指定编码,在执行过程会出现报错:
#!/usr/bin/ruby -wputs "妳好,二次元!";
以上程序执行输出结果为:
invalid multibyte char (US-ASCII)
以上出错信息显示了 Ruby 使用用 ASCII 编码来读源码,中文会出现乱码,
解决方法为只要在文件开头加入
# -*- coding: UTF-8 -*-(EMAC写法)
或者
#coding=utf-8 就行了。
实例
# -*- coding: UTF-8 -*-
#coding=utf-8
puts "妳好,二次元!";
输出结果为:
妳好,二次元!
所以如果大家再学习过程中,源代码文件中,若包含中文编码,则需要注意两点:
- 1. 必须在首行添加 # -*- coding: UTF-8 -*-,告诉解释器使用utf-8来解析源码。
- 2. 必须设置编辑器保存文件的编码为utf-8。
Ruby 语法
让我们编写一个简单的 Ruby 程序。所有的 Ruby 文件扩展名都是 .rb。所以,把下面的源代码放在 ruby_01.rb 文件中。
实例
puts "Hello, Beyond!";
在这里,假设您的 /usr/bin 目录下已经有可用的 Ruby 解释器。现在,尝试运行这个程序,如下所示:
$ ruby ruby_01.rb
这将会产生下面的结果:
Hello, Beyond!
您已经看到了一个简单的 Ruby 程序,下一章节将让我们看看一些 Ruby 语法相关的基本概念:
未完待续,下一章节,つづく
Ruby_01_环境安装相关推荐
- 2021年大数据常用语言Scala(二):Scala开发环境安装
目录 开发环境安装 安装JDK 安装scala SDK 步骤 具体操作 安装IDEA scala插件 步骤 开发环境安装 学习如何编写scala代码之前,需要先安装scala编译器以及开发工具 sca ...
- linux学 java_[操作系统]Linux学习第二步(Java环境安装)
[操作系统]Linux学习第二步(Java环境安装) 0 2017-05-19 00:02:21 jdk版本:jdk-8u131-linux-x64.rpm 注:以下操作在root用户或具有root权 ...
- ZooKeeper集群环境安装与配置
原文:出自本人的Linux博客http://blog.csdn.net/unix21/ ZooKeeper版本:3.4.5 约定:3台虚拟机 前提:需要安装JDK,关于Linux环境JDK安装配置参考 ...
- docker 离线安装 mysql_Oracle数据库之docker 离线环境安装oracle
本文主要向大家介绍了Oracle数据库之docker 离线环境安装oracle,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 因测试需要,需在内网的测试环境搭建一套docker ...
- lua菜鸟教程_Lua 环境安装
Lua 环境安装 Linux 系统上安装 Linux & Mac上安装 Lua 安装非常简单,只需要下载源码包并在终端解压编译即可,本文使用了5.3.0版本进行安装: curl -R -O h ...
- android环境安装之android4.2安装(转)
准备学习android,着手安装android时听说很麻烦,在网上看了很多android安装说明,都是android比较早的版本,我这里安装了android4.2,简单记录一下. 安装分为几步,首先申 ...
- DRF工程搭建、环境安装与配置
DRF需要以下依赖: Python (2.7, 3.2, 3.3, 3.4, 3.5, 3.6) Django (1.10, 1.11, 2.0) DRF是以Django扩展应用的方式提供的,所以我们 ...
- MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决
MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 一.简介 MySQL是最流行的开放源码SQL数据库管理系统,它是由MySQL AB公司开发.发布并支持的.有以下特点: MySQL是 ...
- Windows下R语言环境安装
Windows下R语言环境安装 R官网: https://www.r-project.org/ 按照如下步骤下载windows中的安装文件R-4.1.0-win.exe 文件已经下载完成:R-4.1. ...
- Windows下RStudio环境安装
Windows下RStudio环境安装 # RStudio关键词搜索: # 下载RStudio-1.4.1717.exe # # 一般情况下下载个免费的就好了: # RStudio-1.4.1717. ...
最新文章
- VUE的本地应用-V- html
- error C2057: expected constant expression (C语言中数组的大小可以在程序运行时定义吗? )
- asp.net常规页生命周期阶段列表和事件列表
- JS过滤空格,回车符。
- 注解方式实现aop-快速入门
- vue-cli@2的原理解析
- python tkinter库函数详解_Python使用tkinter库进行GUI编程中常用事件处理方式汇总
- python列表元素下标是什么_python列表中元素插入位置总结
- 分享一个绝佳的实战机器学习的机会,边学边比拿奖金!
- 对“车库咖啡的网络现状改造”的一点个人看法
- 萌新向Python数据分析及数据挖掘 第二章 pandas 第二节 Python Language Basics, IPython, and Jupyter Notebooks...
- 台积电:无法回应检调中的案件,不评论单一客户特定订单
- Monkey King
- 63.Linux/Unix 系统编程手册(下) -- 其他备选的IO模型
- 从教女儿下棋谈启蒙教育
- 基于opencv的图片文字识别实战
- IPv6系列-彻底弄明白有状态与无状态配置IPv6地址
- 多功能计算机十二生肖,十二生肖那是真人实演的危险特技,不是电脑特效!
- FileZilla 使用教程
- 跟着团子学SAP PS:WBS元素中的成本中心详解
热门文章
- OpenChannelSSD之六_从OpenChannelSSD到ZNS
- 超好用的PC端录屏软件推荐
- java抽象和接口的理解_Java学习笔记16---抽象类与接口的浅显理解
- 设置域名跳转的几种方式
- 借助NetFlow Analyzer的IPAM SPM插件,实现IP和交换机端口管理
- ROS真车篇(一)激光雷达SLAM建图+自主导航+RGB深度相机
- uis向3d投影全息界面的连续演化。
- c语言密文加密解密问题注释,c语言通过openssl aes对称加解密和base64编解码将密码存储成密文...
- 单片机循迹车c语言程序,基于单片机控制的简易自动循迹小车仿真与程序源码...
- 他一定幸福地生活在那里