ruby
- https://www.ruby-lang.org/en/documentation/quickstart/
-
Just execute the below set of commands:
sudo apt-get install libssl-dev
cd your_ruby_path/ext/openssl
ruby ruby extconf.rb
make
make install
- http://lunae.cc/solve-can-not-load-such-file-openssl-error
-
sudo apt-get install zlib1g-dev
- http://rvm.io/rvm/autolibs
-
sudo gem install compass -V-V is the verbose mode for gem
-
apt-get install libreadline-dev
-
Ruby 发明者的理想
Ruby 是一个注重均衡的语言,它的发明者松本行弘 Yukihiro “Matz” Matsumoto,混合了他喜欢的语言(Perl、 Smalltalk、 Eiffel、 Ada 和 Lisp ) 产生了一种具有函数式及指令程序设计特性的新语言。
他常说,他是“试着让 Ruby 更自然,而不是简单,就像生活一样”。除此之外,他还提到:Ruby 就像人的身体一样,表面上看来简单,但是内部却相当的复杂
-
所见到的都是对象
最初,Matz 从其它语言中找寻理想的语法,在网络上他做了一段时间的调查,找到候选如“Perl“和“Python“。但都不是他想要的,他需要一个比 Perl 更强大、比 Python 更面向对象的语言。
在 Ruby 中,所有的东西都是对象,所有的信息和代码都可以给它们所拥有的属性和行为。面向对象程序设计中称属性为实例变量(instance variables),称命令为方法 (methods)。 从下列程序代码中看到 Ruby 能够给数字赋于行为,从这点可以证明 Ruby 是纯面向对象的语言。
5.times { print "We *love* Ruby -- it's outrageous!" }
在许多语言中,数字和其它原生的类型都不是对象。而 Ruby 受 Smalltalk 语言影响,让所有的类型都可以赋予方法及产生实例变量,并让这些规则适用于 Ruby 所有对象。
- Ruby 的灵活性
Ruby 是一个相当灵活的语言,她允许用户去改变她本身。 Ruby 的核心部分可以被更改或重新定义,模块可以被添加。Ruby 试着不去妨碍程序员。
比如(
+
) 是用做加法的运算符。如果你更喜欢使用易读的plus
的话,你可以给 Ruby 的内建Numeric
类添加一个函数。class Numeric def plus(x) self.+(x) end end y = 5.plus 6 # y is now equal to 11
Ruby 的符号只是语法的甜头 (syntactic sugar)。你可以随时重定义他们。
-
Blocks,一个独特且强大的特性
Ruby 的代码块是非常强大的。程序员可以给任何函数添加一个密封 (closure) 来表述这个函数该如何工作。密封也被叫做代码块,是用过其他比如 PHP, Visual Basic 等规则语言的 Ruby 的初学者最喜欢使用的一个功能。
代码块取自函数语言。Matz 说:“我希望在 Ruby 的密封中融入 Lisp 的文化 [4]。”
search_engines = %w[Google Yahoo MSN].map do |engine| "http://www." + engine.downcase + ".com" end
在上面的代码中,代码块是在
do ... end
中的结构。map
函数将代码块应用到一个词的列表中。Ruby 的其他函数经常会为程序员留出一个空当给代码块来控制函数的功能。 -
Ruby 与 Mixin
于其他面向对象语言不同,Ruby “有意”只提供单继承。不过 Ruby 拥有模块(在 Objective-C 里面叫做类别)。模块是把许多方法放在了一个类别里。
类可以混合一个模块,得到这个模块提供的所有方法。比如所有提供
each
方法的类可以混合Enumerable
模块,来得到这个模块提供的所有方法,当然这些方法都会调用each
做循环。class MyArray include Enumerable end
一般来说,Ruby 爱好者相对于复杂和限制颇多的多态继承方法来讲更偏向于这种混合方法。
-
Ruby 的面貌
尽管 Ruby 只用很少的符号并且偏向与英文单词做关键字,但是少量的符号也被用来装饰 Ruby。Ruby 不需要提前定义变量。它用简单的命名法来提示变量存在的范围。
var
可以是局部变量。@var
是一个实例变量。$var
是一个全局变量。
这些信号让程序员更清楚的看到每一个变量的角色,增强了程序的可读性,也不需要在实例变量前面加上
self.
了。 -
Interactive Ruby Shell: irb
- gem: ruby库管理工具,
gem update --system
Update to the latest RubyGems version;gem build foo.gemspec
Build your gem;gem push foo-1.0.0.gem
Deploy your gem instantly - rvm: ruby版本管理工具, Ruby Version Manager (RVM), rvm implode