Ruby簡介
Ruby是一種純粹的面向對象編程語言铐望。它由日本的松本行弘創(chuàng)建于1993年射沟。
Ruby 是"程序員的最佳朋友"浸间。
Ruby 的特性與 Smalltalk套蒂、Perl 和 Python 類似钞支。Perl、Python 和 Smalltalk 是腳本語言操刀。
Ruby特性
- Ruby 是一種通用的烁挟、解釋的編程語言。
- Ruby 是一種真正的面向對象編程語言馍刮。
- Ruby 是一種類似于 Python 和 Perl 的服務器端腳本語言信夫。
- Ruby 可以被嵌入到超文本標記語言(HTML)。
- Ruby 語法簡單卡啰,這使得新的開發(fā)人員能夠快速輕松地學習静稻。
- Ruby 可擴展性強,用 Ruby 編寫的大程序易于維護匈辱。
- Ruby 可用于開發(fā)的 Internet 和 Intranet 應用程序振湾。
- Ruby 可以很容易地連接到 DB2、MySQL亡脸、Oracle 和 Sybase押搪。
- Ruby 有豐富的內置函數(shù),可以直接在 Ruby 腳本中使用浅碾。
Ruby與python對比
之前有段時間用Python進行編程大州,現(xiàn)在學習Ruby,兩者比較相似,所以進行對比:
- Ruby的哲學是“每一件事情總是有多種做法”垂谢,可以激發(fā)程序員的創(chuàng)造力厦画,會讓我們覺得編程很有趣。和Ruby相反滥朱,Python的哲學是“做一件事情有且只有一種方法”根暑,這一點減輕了人們在開發(fā)時的認知負擔和選擇成本,對于提高開發(fā)效率是很有幫助的徙邻。所以有人說:想要成為一個高效工程師排嫌,推薦 Python。 想要愛上工作缰犁,推薦 Ruby淳地。
- Ruby是純粹的面向對象怖糊。CSDN的范凱曾經(jīng)說過:“你學習了Ruby以后,你就會發(fā)現(xiàn)颇象,原來Java/C++所謂的面向對象就是TMD的山寨版本的面向對象蓬抄,原來面向對象還可以這樣玩啊”。Python其實是把面向過程和面向對象雜糅起來了夯到。
- Python解釋器嚷缭,特別是CPython,目前比現(xiàn)有的Ruby解釋器快很多耍贾。
- Ruby吸收了很多語言(Lisp阅爽、Smalltalk等等)的特性,它能幫助你更好的看清你之前一直使用的語言的限制之處在哪荐开。
Ruby安裝
首先使用rbenv進行安裝:
wangpingsheng% brew install rbenv
Updating Homebrew...
...
...
To enable shims and autocompletion, run this and follow the instructions:
rbenv init
==> Summary
/usr/local/Cellar/rbenv/1.1.0: 36 files, 63.3K
wangpingsheng% rbenv install -l
wangpingsheng% rbenv install 2.0.0-p247
wangpingsheng% ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]
使用gem安裝rails:
wangpingsheng% sudo gem install bundler
Password:
Fetching: bundler-1.13.6.gem (100%)
Successfully installed bundler-1.13.6
Parsing documentation for bundler-1.13.6
Installing ri documentation for bundler-1.13.6
1 gem installed
wangpingsheng% gem env home
/Library/Ruby/Gems/2.0.0
wangpingsheng% sudo gem install rails
Password:
Fetching: i18n-0.7.0.gem (100%)
Successfully installed i18n-0.7.0
Fetching: thread_safe-0.3.5.gem (100%)
Successfully installed thread_safe-0.3.5
Fetching: tzinfo-1.2.2.gem (100%)
Successfully installed tzinfo-1.2.2
Fetching: minitest-5.10.1.gem (100%)
Successfully installed minitest-5.10.1
Fetching: concurrent-ruby-1.0.3.gem (100%)
Successfully installed concurrent-ruby-1.0.3
Fetching: activesupport-5.0.0.1.gem (100%)
ERROR: Error installing rails:
activesupport requires Ruby version >= 2.2.2.
Ruby版本過低付翁,于是更新版本后繼續(xù)安裝rails:
wangpingsheng% rbenv version
2.3.1 (set by /Users/pswang/.ruby-version)
wangpingsheng% sudo gem install rails
wangpingsheng% rails -v
Rails 5 requires Ruby 2.2.2 or newer.
You're running ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]
Please upgrade to Ruby 2.2.2 or newer to continue.
Ruby已經(jīng)安裝了2.3.1,可是還是提示版本低于2.2.2晃听,然后就發(fā)現(xiàn)了ruby -v
與rbenv version
結果不一致:
wangpingsheng% ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]
wangpingsheng% rbenv version
2.3.1 (set by /Users/pswang/.ruby-version)
解決辦法
終于版本更新一致了百侧,繼續(xù)安裝rails:
wangpingsheng% ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]
wangpingsheng% rbenv version
2.3.1 (set by RBENV_VERSION environment variable)
wangpingsheng% sudo gem install rails
Done installing documentation for i18n, thread_safe, tzinfo, concurrent-ruby, activesupport, rack, rack-test, mini_portile2, nokogiri, loofah, rails-html-sanitizer, rails-dom-testing, builder, erubis, actionview, actionpack, activemodel, arel, activerecord, globalid, activejob, mime-types-data, mime-types, mail, actionmailer, nio4r, websocket-extensions, websocket-driver, actioncable, thor, method_source, railties, bundler, sprockets, sprockets-rails, rails after 70 seconds
36 gems installed
這回終于安裝完了。能扒。佣渴。可是查看rails -v
又報錯了初斑,嚇我一大跳:
wangpingsheng% rails -v
Rails is not currently installed on this system. To get the latest version, simply type:
$ sudo gem install rails
You can then rerun your "rails" command.
然后才想到?jīng)]有執(zhí)行rbenv rehash
辛润,執(zhí)行之后就好了:
wangpingsheng% eval "$(rbenv init -)"
wangpingsheng% rbenv rehash
wangpingsheng% rails -v
Rails 5.0.1
到此終于結束安裝~??
總結
這次安裝真的是困難重重,中間一次ruby版本升級時在網(wǎng)上查到的是用RVM進行升級见秤,后來又查到RVM和rbenv不兼容砂竖,又卸載了RVM重安裝新版本,安完后ruby -v
卻沒有更新鹃答,在志愿者的幫忙下解決了問題乎澄,最終成功安裝了ruby、rails测摔,感謝大家~
下一步開始學習ruby語法置济,加油~