learnxinyminutes-docs/vi-vn/ruby-ecosystem-vi.html.markdown
2015-10-11 17:24:27 +07:00

149 lines
8.1 KiB
Ruby

---
category: tool
tool: ruby ecosystem
contributors:
- ["Jon Smock", "http://github.com/jonsmock"]
- ["Rafal Chmiel", "http://github.com/rafalchmiel"]
- ["Vinh Nguyen", "http://rubydaily.net"]
lang: vi-vn
---
Nhìn chung các lập trình viên Ruby luôn cách đ cài đt các phiên bản
Ruby khác nhau, quản các gói (hoặc gems), quản các thư viện.
## Trình quản lý Ruby
Một vài nền tảng phải Ruby đã đưc cài đt trước hoặc sẵn như một gói.
Số đông lập trình viên Ruby không sử dụng cái này, hoặc nếu , họ chỉ sử
dụng chúng đ bootstrap cài đt Ruby. Thay vào đó, các lập trình viên Ruby
xu hướng cài đt trình quản Ruby đ cài đt chuyển đi các phiên
bản của Ruby môi trường Ruby cho dự án của họ.
Dưới đây các trình quản môi trường Ruby nổi tiếng:
* [RVM](https://rvm.io/) - Cài đt chuyển đi các phiên bản Ruby. RVM cũng
các khái niệm về tập các gems đ quản môi trường dự án một
cách tốt nhất.
* [ruby-build](https://github.com/sstephenson/ruby-build) - Chỉ cài đt các
phiên bản Ruby. Sử dụng cái này giúp cho việc cài đt Ruby tốt hơn.
* [rbenv](https://github.com/sstephenson/rbenv) - Chỉ dùng đ chuyển đi các
phiên bản Ruby. Đưc sử dụng đi kèm với ruby-build. Tiện ích này sẽ giúp
cho việc dùng Ruby tốt hơn.
* [chruby](https://github.com/postmodern/chruby) - Chỉ dùng đ chuyển đi các
phiên bản Ruby. Tương tự như rbenv. Không quan tâm làm thế nào Ruby đưc
cài đt.
## Các phiên bản Ruby
Ruby đưc tạo ra bởi Yukihiro "Matz" Matsumoto, người đưc xem như một
[BDFL](https://en.wikipedia.org/wiki/Benevolent_Dictator_for_Life), mặc dầu gần
đây luôn thay đi. Kết quả , tham chiếu của Ruby đưc gọi MRI(Matz'
Reference Implementation), khi bạn biết về một phiên bản Ruby, đang
đưc tham chiếu đ phát hành một phiên bản của MRI.
ba phiên bản Ruby chính thức đưc dùng :
* 2.0.0 - Đưc phát hành vào tháng 2 năm 2013. Hầu hết các thư viện lớn,
nền tảng đu hỗ trợ 2.0.0.
* 1.9.3 - Đưc phát hành vào tháng 10 năm 2011. Đây phiên bản hầu hết các
lập trình viên Ruby đang dùng. [Nhưng đã không còn hỗ trợ](
https://www.ruby-lang.org/en/news/2015/02/23/support-for-ruby-1-9-3-has-ended
/)
* 1.8.7 - [Ruby 1.8.7 đã không còn được sử dụng](
http://www.ruby-lang.org/en/news/2013/06/30/we-retire-1-8-7/).
Sự thay đi giữa phiên bản 1.8.7 đến 1.9.x lớn hơn nhiều so với thay đi từ
1.9.3 đến 2.0.0. dụ, các phiên bản 1.9 giới thiệu các bảng một
byecote VM. các dự án vẫn đang 1.8.7, nhưng chúng chiếm một số lượng ít
, phần lớn cộng đng đã chuyển sang ít nhất 1.9.2 hoặc 1.9.3
## Các ứng dụng Ruby
Hệ sinh thái Ruby rất nhiều ng dụng, với mỗi thế mạnh đc đáo khả
năng tương thích. Đ ràng hơn, sự khác nhau giữa các ng dụng đưc viết
bằng các ngôn ngữ khác nhau, nhưng *chúng vẫn Ruby*.
Mỗi ng dụng các hook đc trưng những tính năng đc biệt, nhưng tất cả
đu chạy Ruby rất tốt. dụ, JRuby đưc viết bằng Java, nhưng bạn không
cần biết Java đ sử dụng.
Một số ng dụng nổi tiếng/tương thích cao:
* [MRI](https://github.com/ruby/ruby) - Đưc viết bằng C, đây ng dụng
tham chiếu của Ruby. tương thích 100%. Tất cả các phiên bản Ruby có khả
năng duy trì với MRI(xem [RubySpec](#rubyspec) bên dưới).
* [JRuby](http://jruby.org/) - Đưc viết bằng Java Ruby, ng dụng này khá
nhanh. Điểm mạnh quan trọng nhất của JRuby JVM/Java interop, tận dụng
các công cụ, dự án ngôn ngữ hiện của JVM.
* [Rubinius](http://rubini.us/) - Đưc viết bằng ngôn ngữ chính Ruby với
một C++ bytecode VM. Rất nhanh. Bởi đưc phát triển bằng chính Ruby.
Một số ng dụng khá nổi tiếng/tương thích:
* [Maglev](http://maglev.github.io/) - Đng đu Gemstone, một Smalltalk VM.
SmallTalk một vài tiện ích hấp dẫn, trong dự án này đã mang vào
môi trường Ruby.
* [RubyMotion](http://www.rubymotion.com/) - Mang Ruby đến việc phát triển iOS.
Một số ng dụng tốt/tương thích:
* [Topaz](http://topazruby.com/) - Đưc biết bằng RPython (sử dụng Pypy),
Topaz vẫn còn rất trẻ chưa hoàn toàn tương thích. hứa hẹn khả năng
trở thành một ng dụng Ruby tương thích cao.
* [IronRuby](http://ironruby.net/) - Đưc viết bằng C# hướng đến nền tảng .NET
, IronRuby dường như đã dừng hoạt đng kể từ khi Microsoft rút hỗ trợ.
Các ng dụng Ruby các phiên bản riêng của mình, nhưng chúng luôn luôn
hướng đến sự một phiên bản đc biệt của MRI cho sự tương thích. Nhiều ng
dụng khả năng đến các chế đ khác nhau ( dụ, 1.8 hoặc 1.9) đ hướng đến
phiên bản MRI.
## RubySpec
Hầu hết các ng dụng Ruby dựa vào [RubySpec](http://rubyspec.org/). Ruby không
thông báo chính thức, nhưng cộng đng đã viết những specs thực thi trong
Ruby đ kiểm tra sự tương thích với MRI.
## RubyGems
[RubyGems](http://rubygems.org/) một cộng đng quản các gói cho Ruby.
RubyGems đi kèm với Ruby, bởi vậy không cần cài đt riêng lẻ.
Các gói Ruby đưc gọi "gems", chúng đưc host bởi cộng đng tại
RubyGems.org. Một gem chứa nguồn của một vài tả, bao gồm những
thứ như phiên bản, các thư viện đc lập, các tác giả các loại giấy phép.
## Bundler
[Bundler](http://bundler.io/) một gem giải quyết đc lập. sử dụng một
Gemfile đ tìm kiếm các thư viện đc lập trong dự án, sau đó sẽ lấy về
các thư viện của các thư viện đc lập này. thực hiện cho đến khi việc
tải các thư viện hoàn tất, hoặc sẽ dừng nếu xuất hiện bất kỳ xung đt nào.
Bundler sẽ hiển thị lỗi nếu tìm thấy bất kỳ xung đt giữa các thư viện.
dụ, nếu như gem A yêu cầu gem Z phiên bản 3 hoặc cao hơn, nhưng gem B lại
yêu cầu gem Z phiên bản 2. Bundler sẽ thông báo cho bạn sự xung đt này.
Điều này đã rất hữu ích khi nhiều gem tham chiếu các các gem khác (trong
gem này lại tham chiếu đến các gem khác nữa), thể hình thành một đ thị
lớn đ nói.
# Kiểm thử
Kiểm thử một phần lớn của Ruby. Ruby mang đến một nền tảng kiểm thử theo
kiểu Unit đưc gọi minitest (hoặc TestUnit for phiên bản Ruby 1.8.x).
nhiều thư viện kiểm thử với các mục đích khác nhau.
* [TestUnit](http://ruby-doc.org/stdlib-1.8.7/libdoc/test/unit/rdoc/Test/
Unit.html) - Nền tảng kiểm thử theo kiểu Unit của Ruby 1.8.
* [minitest](http://ruby-doc.org/stdlib-2.0.0/libdoc/minitest
/rdoc/MiniTest.html) -Nền tảng kiểm thử đưc xây dựng cho Ruby 1.9/2.0
* [RSpec](http://rspec.info/) - Một nền tảng kiểm thử tập trung vào sự
hoạt đng.
* [Cucumber](http://cukes.info/) - Một nền tảng kiểm thử theo kiểu BDD dưới
đnh dạng Gherkin.
## Be Nice
Cộng đng Ruby tự hào một cộng đng mở, đa dạng chào đón tất cả mọi
người. Bản thân Matz một người cực kỳ thân thiện, các lập trình viên
Ruby rất tuyệt vời.