131 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			131 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								title: Ruby
							 | 
						|||
| 
								 | 
							
								localeTitle: 红宝石
							 | 
						|||
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								## 什么是Ruby?
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Ruby由Yukihiro“Matz”Matsumoto创建,是一种[开源](https://github.com/ruby/ruby) ,动态和解释的脚本语言,用于快速简便的面向对象编程。意思是:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								众所周知,它拥有编程语言中[最大的友好社区](https://www.ruby-lang.org/en/community/)之一。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								*   能够直接进行操作系统调用
							 | 
						|||
| 
								 | 
							
								*   开发期间的即时反馈
							 | 
						|||
| 
								 | 
							
								*   变量声明是不必要的
							 | 
						|||
| 
								 | 
							
								*   内存管理是自动的
							 | 
						|||
| 
								 | 
							
								*   一切都是对象
							 | 
						|||
| 
								 | 
							
								*   模块具有“mixin”功能
							 | 
						|||
| 
								 | 
							
								*   迭代器和闭包
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								如果您不熟悉上述一些概念,请继续阅读,不要担心。 Ruby专注于简单性和生产力,具有易于阅读和易于编写的优雅语法,例如:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```ruby
							 | 
						|||
| 
								 | 
							
								# Quick example of Ruby with Object Oriented Programming 
							 | 
						|||
| 
								 | 
							
								 class Greeter 
							 | 
						|||
| 
								 | 
							
								  def initialize(name) 
							 | 
						|||
| 
								 | 
							
								    @name = name.capitalize 
							 | 
						|||
| 
								 | 
							
								  end 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								  def salute 
							 | 
						|||
| 
								 | 
							
								    puts "Hello #{@name}!" 
							 | 
						|||
| 
								 | 
							
								  end 
							 | 
						|||
| 
								 | 
							
								 end 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								 # Create a new object 
							 | 
						|||
| 
								 | 
							
								 g = Greeter.new("world") 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								 # Output "Hello World!" 
							 | 
						|||
| 
								 | 
							
								 g.salute 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 版
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								目前的稳定版本是[2.5.1](https://www.ruby-lang.org/en/news/2018/03/28/ruby-2-5-1-released/) 。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 安装
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Mac OS X和许多Linux发行版预先安装了Ruby。要检查系统中是否预先安装了`ruby -v` ,只需在shell上运行`ruby -v` 。有几种方法可以安装Ruby:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								*   当您使用类UNIX操作系统时,使用系统的包管理器是最简单的入门方法。但是,打包的Ruby版本通常不是最新版本。
							 | 
						|||
| 
								 | 
							
								*   安装程序可用于安装特定或多个Ruby版本。还有一个Windows安装程序。
							 | 
						|||
| 
								 | 
							
								*   管理器可帮助您在系统上的多个Ruby安装之间切换。
							 | 
						|||
| 
								 | 
							
								*   最后,您还可以从源代码构建Ruby。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								要了解如何通过包管理器,安装程序和源安装Ruby,请单击[此处](https://www.ruby-lang.org/en/documentation/installation/) 。 RVM(Ruby Version Manager)和rbenv是管理多个Rubies的最流行的Ruby管理器。如果你被卡在任何地方,请不要担心,只需前往我们的[Gitter聊天室](https://gitter.im/FreeCodeCamp/ruby)并向我们询问任何问题。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## IRB
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								IRB代表Interactive Ruby Shell。缩写irb来自Ruby的文件扩展名为“.rb”的事实,尽管交互式Ruby文件没有“.irb”的扩展名。该程序从命令行启动,允许执行Ruby命令并立即响应,实时进行实验。它具有命令历史记录,行编辑功能和作业控制功能,并且能够通过Internet直接作为shell脚本进行通信,并与实时服务器进行交互。它由Keiju Ishitsuka开发。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```shell
							 | 
						|||
| 
								 | 
							
								    irb 
							 | 
						|||
| 
								 | 
							
								    2.3.0 :001 > print "Hello World" 
							 | 
						|||
| 
								 | 
							
								    Hello World! => nil 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## Ruby解释器
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Ruby解释器是用于运行Ruby脚本的。如果它可用并且在Unix shell的搜索路径中可以通过键入命令`ruby`来启动它,然后脚本名称将调用解释器并运行脚本。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								`hello_campers.rb`
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```ruby
							 | 
						|||
| 
								 | 
							
								    if 'welcome' == 'welcome' 
							 | 
						|||
| 
								 | 
							
								        print('Hello campers!') 
							 | 
						|||
| 
								 | 
							
								    end 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								从命令行:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```shell
							 | 
						|||
| 
								 | 
							
								    $ ruby hello_campers.rb 
							 | 
						|||
| 
								 | 
							
								    Hello campers! 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 文档
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Ruby有很好的[文档记录](https://www.ruby-lang.org/en/documentation/) 。这些文档包括语言的教程,指南,参考和元信息。  
							 | 
						|||
| 
								 | 
							
								文档的另一个重要资源是[Ruby Doc](http://ruby-doc.org/core-2.3.0/) 。您应该访问此[链接](https://github.com/airbnb/ruby)以了解有关由AirBnB开发人员编写的Ruby样式指南的更多信息。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Ruby中对初学者的推荐阅读是[为什么(Poignant)Ruby指南](https://poignant.guide/) 这本书在编程书籍中很不寻常。由于有很多奇怪的幽默和叙事方面的轨道有时与这个主题完全无关,因此在学习Ruby基础知识时,这个方法可以让读者受到娱乐。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 调试
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								内联`print`语句可用于简单调试:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```ruby
							 | 
						|||
| 
								 | 
							
								    print some_variable # prints to console 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								> **...通常,调试程序的最快方法是向源添加一些打印语句:快速编辑 - 测试 - 调试周期使这种简单方法非常有效。**
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Ruby还包含更强大的调试工具,例如:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								*   [_撬调试_](https://github.com/nixme/pry-debugger)
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 你好,世界!
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								回到文档,我们可以阅读[`print`](http://ruby-doc.org/core-2.3.0/Kernel.html#method-i-print)方法,它是[内核模块](http://ruby-doc.org/core-2.3.0/Kernel.html)的内置方法之一。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```ruby
							 | 
						|||
| 
								 | 
							
								    print(obj, ...) → nil 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								将每个对象打印到$ stdout。非字符串的对象将通过调用其`to_s`方法进行转换。 print的返回值`nil` 。因此,当您在IRB中运行`print "Hello World!` ,输出为:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```shell
							 | 
						|||
| 
								 | 
							
								    2.3.0 :001 > print "Hello World!" 
							 | 
						|||
| 
								 | 
							
								    Hello World! 
							 | 
						|||
| 
								 | 
							
								     => nil 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 框架(宝石)
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Ruby有几个用于快速搭建应用程序的框架(gem)。到目前为止最流行的是[Rails](http://rubyonrails.org/) ,它最初于2004年发布.Ruby的其他框架(宝石)包括[Sinatra](http://www.sinatrarb.com/) , [Lotus](http://lotusrb.org/)和[Volt](http://voltframework.com/) 。这些选项中的每一个都有其发展的优点和缺点,并满足各种需求。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 用于移动开发的Ruby Framework
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								要在Ruby中编写跨平台本机应用程序,RUBY MOTION用于使用Ruby编程语言为iOS,Android和OS X开发跨平台本机应用程序。 更多资源来自:http://www.rubymotion.com/
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 学习Ruby之后会怎么样?
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								每种编程语言都扮演着重要的角色。您可以为许多开源项目做出贡献,或者在掌握了Ruby之后可以申请一些大公司。许多大型互联网网站,如Basecamp,Airbnb,Bleacher Report,Fab.com,Scribd,Groupon,Gumroad,Hulu,Kickstarter,Pitchfork,Sendgrid,Soundcloud,Square,Yammer,Crunchbase,Slideshare,Funny or Die,Zendesk,Github, Shopify建立在Ruby之上,因此有很多选择。 此外,许多初创公司正在招聘RUby on Rails技能的人,因为没有多少程序员试图学习Ruby。所以,你可能有一个明确的工作在一家初创公司工作。 因此,Ruby是初学者友好的,并且非常难以发现你有很多空缺可以作为开发人员工作。
							 |