12/08/2018, 10:45

Make your own Ruby gem

1.RubyGems, So what is it? #### gem "GEM_NAME" in Gemfile <=> gem install GEM_NAME (what 's different between them) 2.Gem command basic 3.My first gem. Let's get started 1. RubyGems, So what is it? gem là một package managercủa Ruby. Quản lý các thư viện của Ruby. ...

1.RubyGems, So what is it?

  • ####gem "GEM_NAME" in Gemfile <=> gem install GEM_NAME (what 's different between them)

2.Gem command basic

3.My first gem.

Let's get started

1. RubyGems, So what is it?

  • gem là một package managercủa Ruby.
  • Quản lý các thư viện của Ruby.
  • Tương tự :
    • npm (Javascript)
    • apt-get (Linux)
    • yum (Cenos)
    • activator (Scala)
    • composer (PHP)
  • Bản thânRails hay (Ruby on Rails) cũng là một gem của Ruby (rails lằm trong thư mục gem)

Kiểm tra :

$ which rails
$ # => /home/leminhtuan/.rvm/gems/ruby-2.2.0/bin/rails

$ gem list | grep rails
$ # => rails (4.2.1)
  • Từ Ruby version 1.9 thì gem là một phần trong thư viện chuẩn của Ruby (install song Ruby là thấy gem luôn)
$ which gem
$ # => /home/leminhtuan/.rvm/rubies/ruby-2.2.0/bin/gem

  • gem cũng như các tool trên, được tạo ra với mục đích đơn giản hóa việc install/remove các plugin in trong một Ruby project.
  • Khi làm việc trong một project lớn với nhiều coder và sử dụng nhiều thư viện thậm chí phải quan tâm đến nguồn và version của thư viện vậy làm thế nào để việc sử dụng thư viện được thống nhất trong cả project, gem sẽ giải quyết vấn đề đó.
  • Bạn sẽ thấy rõ hơn gem rất hữa dụng khi làm trên một project có nhiều team cùng code và sử dụng nhiều plugin (thư viện).
  • gem không phải là một plugin mà là chương trình quản lý các plugin (version, source, install, remove)

gem "GEM_NAME" in Gemfile <===> gem install GEM_NAME

  • Khi install 1 gem bằng cách dùng lệnh gem install GEM_NAME là ta cài thêm 1 gem vào thư mục gem của bạn, ví dụ: /home/leminhtuan/.rvm/gems/ruby-2.2.0/bin/
  • Khi thêm dòng "gem "GEM_NAME"" vào file Gemfile và sau đó chạy "bundle" thực chất là ta cũng sẽ gọi tới lệnh gem install GEM_NAME và cài vào thư mục tưowng tự, nếu đã cài gem rồi thì khi chạy bundle thì rails sẽ không cài lại mà chỉ check xem có đúng version không, nếu không mới cài lại.

2. Gem command basic

  • Install a gem
  • gem install mygem
  • Show list of gem which is installed
    • gem list --local / gem list. Check a gem is installed or not (gem list | grep gem_name)
  • Uninstall a gem
    • gem uninstall mygem
  • Build a gem
    • gem build hola.gemspec

**Tip : Check a gem be installed or not **

 $ ruby -e "puts(require('[gem_name]'))"
 $ true
 $ gem list | grep [gem_name]
 $ gem_name (0.0.0)

3. My first gem.

  • I will create a "Hello world!" gem.

STEP 1 : Tạo một thư mục có cấu truc như bên dưới, tất nhiên đổi tên "mygem" thành tên gem của bạn.

$ mkdir mygem
$ cd mygem
$ touch mygem.gemspec
$ mkdir lib
$ cd lib
$ touch mygem.rb

  • Sau khi tạo song thư mục, bạn sẽ kiểm tra và thấy cấu trúc như sau.

    • Thư mục lib chứa tất cả các code Ruby mà bạn code trong gem của bạn.
    • Trong thư mục lib bạn có thể có rất nhiều file .rb nhưng phải có một file trùng tên với tên gem, bởi vì nó phải thế (theo convention), file này sẽ được gọi (load) khi bạn chạy câu lệnh require 'mygem'
    • File trùng tên với tên gem trong thư muc lib có nhiệm vụ setting cho gem. (giống file main).
  • mygem.gemspec là file có mục đích mô tả thông tin gem của bạn

    • tác giả
    • vesion
    • name
    • date

STEP 2: Implement Code gem của bạn.

  • Code trong file lib/mygem.rb (File này trùng tên với tên gem)
class Mygem
    def self.hi
        puts "Hello world!"
    end
end

Step 3: Defines what’s in the gem

  • Ta định nghĩa thông tin của Gem trong file mygem.gemspec
Gem::Specification.new do |s|
  s.name        = 'mygem'
  s.version     = '0.0.0'
  s.date        = '2010-04-28'
  s.summary     = "My gem!"
  s.description = "A simple hello world gem"
  s.authors     = ["Nick tuan"]
  s.email       = 'leminhtuan2015@gmail.com'
  s.files       = ["lib/mygem.rb"]
  s.homepage    = 'http://rubygems.org/gems/mygem'
  s.license     = 'MIT'
end

STEP 4: Build you gem

$ gem build mygem.gemspec

  • Kết quả.

Screenshot from 2015-07-13 16:15:06.png

  • Sau khi build bạn sẽ thấy xuất hiện một file mới trong thư mục gem của bạn có tên là mygem-0.0.0.gem
  • Đây chính là một ruby gem mà bạn đã tạo được.
  • Tất nhiên bây giờ bạn có thể install gem này và dùng giống như các thư viên khác.

STEP 5: Install your gem

$ gem install mygem-0.0.0.gem

Screenshot from 2015-07-13 16:16:38.png

Step 6: Use Gem

$ irb
$ require "mygem"
$ Mygem.hi

Many thanks.

Thank you so much for reading. please leave a comment or give me feedbacks so that i can better myself.

0