Hướng dẫn tự tạo gem và public lên rubygems
Table of contents
Xây dựng Ruby Gem
Trước tiên để bắt đầu tạo Gem, bạn cần sử dụng Gem Bundler
$ gem install bundler
Cấu trúc thư mục của Gem
Để tạo ra một Gem, ta sử dụng command dưới đây, helpers_view
là tên của Gem, bạn có thể sử dụng một cái tên bất kỳ cho nó.
bundle gem helpers_view
Gem của chúng ta sẽ được tạo ra với các thư mục tối thiểu:
$ tree helpers_view
helpers_view
├── bin
└── lib
├── helpers_view
│ └── version.rb
└── helpers_view.rb
├── .gitignore
├── Gemfile
├── LICENSE.txt
├── README.md
├── Rakefile
├── helpers_view.gemspec
bin: Chứa các bash script để tự động hoá các tác vụ khi người dùng cài đặt một Gem.
lib: Nơi chứa code chính của Gem.
test: Phục vụ cho việc viết test cho Gem
Gemfile: Khi bạn muốn sử dụng lại một thư viện sẵn có thì đây là nơi bạn sẽ điền các Gem mong muốn vào. Hoạt động tương tự như ở rails, nó sẽ tự động tải các Gem có trong này về máy để có đủ môi trường sử dụng cho ứng dụng của bạn.
Rakefile: Khi bạn muốn thực hiện những tác vụ tự động với gem như việc run test.
.gemspec
: File mô tả Gem của bạn, ví dụ như mô tả, tác giả, phiên bản,... của Gemhelpers_view.gemspec
là file cung cấp cho ta thông tin về Gem như: tên, mô tả, tác giả, bản quyền và những cài đặt phụ thuộc khác cần thiết cho Gem hoạt động.
# coding: utf-8
# frozen_string_literal: true
require_relative 'lib/helpers_view/version'
Gem::Specification.new do |spec|
spec.name = 'helpers_view' # tên gem
spec.version = HelpersView::VERSION
spec.authors = ['devhoanglv92'] # tên tác giả, có thể truyền vào mảng
spec.email = ['devhoanglv92@gmail.com'] # email, có thể truyền vào mảng
spec.summary = 'Gem helpers for view support render html'
spec.description = 'Gem helpers for view support render html'
spec.homepage = 'https://github.com/hoangdev92/helpers_view'
spec.license = 'MIT'
spec.required_ruby_version = '>= 2.6' # phiên bản ruby yêu cầu
spec.metadata['allowed_push_host'] = 'https://rubygems.org'
spec.metadata['homepage_uri'] = spec.homepage
spec.metadata['source_code_uri'] = 'https://github.com/hoangdev92/helpers_view'
spec.metadata['changelog_uri'] = 'https://github.com/hoangdev92/helpers_view/blob/master/CHANGELOG.md'
# Specify which files should be added to the gem when it is released.
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
spec.files = Dir.chdir(__dir__) do
`git ls-files -z`.split("\x0").reject do |f|
(File.expand_path(f) == __FILE__) ||
f.start_with?(*%w[bin/ test/ spec/ features/ .git appveyor Gemfile])
end
end
spec.bindir = 'exe'
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
spec.require_paths = ['lib']
# spec.executables << 'run'
# Uncomment to register a new dependency of your gem
# spec.add_dependency "example-gem", "~> 1.0"
# For more information and examples about making a new gem, check out our
# guide at: https://bundler.io/guides/creating_gem.html
end
- Tiếp theo hãy nhìn vào file
lib/helpers_view/version.rb
. File này cung cấp số phiên bản đóng gói trong, nó sẽ được phản ảnh trênRubyGems.org
module HelpersView
VERSION = "0.0.1"
end
- File cần quan tâm tiếp theo là
lib/helpers_view.rb
. Đây là file được mặc định nạp vào đầu tiên của Gem khiBundler
được chạy.
require "helpers_view/version"
module HelpersView
# Your code goes here...
end
# example:
# class Railtie < ::Rails::Railtie
# initializer 'helpers_view.rails_html' do
# ActiveSupport.on_load(:action_view) do
# def render_hello_world
# 'Hello World'
# end
# end
# end
# end
- Các file còn lại, ít khi thay đổi, nên tôi cũng không nhắc đến ở đây.
Release gem
Trước khi release, bạn cần kiểm tra version.rb
đã phản ánh đúng number version mà bạn muốn chưa. 0.0.1
sẽ là lựa chọn tốt khi bắt đầu
Tiếp theo, bạn nên commit code của mình lên Github, vì Bundler
sẽ mặc định làm việc với một vài git repository
, phổ biến nhất là Github
. Để release lên rubygems, bạn cần tạo tài khoản trước đã. Sau khi tạo tài khoản, bạn có thể sử dụng lệnh sau để build Gem của mình.
$ bundle gem build
# kết quả sẽ như thế này:
# Successfully built RubyGem
# Name: helpers_view
# Version: 0.0.1
# File: helpers_view-0.0.1.gem
Bây giờ bạn có thể chia sẻ lên cộng đồng Ruby. Việc xuất bản gem của bạn ra RubyGems.org chỉ cần một lệnh, với điều kiện là bạn có tài khoản trên trang web. Để thiết lập máy tính của bạn với tài khoản RubyGems, bạn có thể chạy lệnh bên dưới (trong đó bạn nên thay thế bằng Email, Mật khẩu và OTP của riêng bạn (nếu được bật)):
$ gem signin
Enter your RubyGems.org credentials.
Don't have an account yet? Create one at https://rubygems.org/sign_up
Email: (your-email-address@example.com)
Password: (your password for RubyGems.org)
API Key name [host-user-20220102030405]:
Please select scopes you want to enable for the API key (y/n)
index_rubygems [y/N]: n
push_rubygem [y/N]: y
yank_rubygem [y/N]: n
add_owner [y/N]: n
remove_owner [y/N]: n
access_webhooks [y/N]: n
show_dashboard [y/N]: n
You have enabled multi-factor authentication. Please enter OTP code.
Code: 123456
Signed in with API key: host-user-20220102030405.
sau đó push gem lên
gem push helpers_view-0.0.1.gem
# kết quả:
# Pushing gem to RubyGems.org...
# Successfully registered gem: helpers_view (0.0.1)
Và đây là thành quả helpers_view
Subscribe to my newsletter
Read articles from Lê Văn Hoàng directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by