Tôi đã viết Gem đầu tiên của mình như thế nào?

2201

Lý do

Mỗi lần tạo mới một Rails project, do là người thích sự hoàn hảo, nên mình thường dành ra một chút thời gian để beautify lại Gemfile,
Lúc ban đầu tạo một project thì Gemfile sẽ như thế này:

Lúc đó, trước khi code mỗi project mình thường phải tự beautify lại Gemfile này. Nó bao gồm các công việc như:

  • Xóa các dòng comment
  • Thay thế dấu ' bằng "
  • Remove các dòng trống

Lặp đi lặp lại các công việc nhàm chán đó là điều không mấy thú vị.
Vào một ngày đẹp trời, chán việc phải chỉnh bằng tay, mình chợt nảy ra ý tưởng viết một Gem để thực hiện công việc này một cách tự động, và thế là gem gf_beauty ra đời.

Thực hiện

Gemspec

Đầu tiên chúng ta cần tạo một file gemspec như sau:

Trong đó:

  • name là tên của gem mình muốn tạo. Chú ý là tên này không được trùng lặp với gem trên trang http://guides.rubygems.org
  • version là version của gem
  • date là ngày tháng tạo gem
  • summary , description là tóm tắt về chức năng của gem
  • authors, email là thông tin về tác giả của gem
  • files đây là danh sách các file dùng để xây dựng gem
  • executables vì gem của mình viết dùng để chạy bằng command line nên cần phải đưa vào tên của command line mà tôi mình để người dùng có thể chạy (hơi lan man, phần sau mình sẽ hướng dẫn kĩ hơn)
  • homepage, license các thông tin thêm cho gem

Sau khi tạo được xong file gemspec chúng ta sẽ đến phần viết implement chức năng cho gem.

lib/gf_beauty.rb

Do gem của mình sau khi người dùng cài đặt, họ có thể chạy bằng Command Line như thế này:

Vậy nên, mình phải tạo một executable file thực hiện.

bin/gf_beauty

Công việc của file này rất đơn giản, nó sẽ gọi đến thư viện mà chúng ta đã viết ở trên.

Dùng lệnh chmod để file này có thể thực thi từ Command Line

Đến bước này, cơ bản là chúng ta đã hoàn thành gem file của mình.

Publish

Đầu tiên chúng ta cần tạo một tài khoản ở trên trang https://rubygems.org để có thể publish gem lên trên đó.
Sau khi tạo tài khoản xong, đăng nhập ở local bằng Command Line:

Nhập account mà bạn vừa đăng kí vào. Đến đây bạn có thể publish gem từ local lên https://rubygems.org bằng Command Line được rồi.

Tiếp theo, chúng ta cần build gemspec

Sau đó là push lên https://rubygems.org bằng:

Đến đây, bạn có thể sử dụng gem của mình vừa publish lên rồi.

Bùm, file Gemfile của bạn sạch sẽ tinh tươm.

Kết luận

Tuy là gem đơn giản, phục vụ mục đích cá nhân là nhiều, nhưng qua đây mình học được cách đưa gem chính chủ của mình lên https://rubygems.org để người khác có thể sử dụng.
Toàn bộ source mình publish lên để các bạn có thể theo dõi, nhớ star cho repo của mình nếu cảm thấy có ích nhé (honho)
https://github.com/namtx/gf_beauty
Happy coding 😉

Techtalk Via Viblo