- Published on
มาทำ Ruby Gems ใช้เอง กันเถอะ
- Authors
- Name
- Panuwat Boonrod
- @nilpanuwat
Disclamer
ก่อนอื่นแจ้งก่อนนะครับ หากใครต้องการจะ push gems ของตัวเองขึ้นไป เช็คก่อนว่า ชื่อ ที่เราจะใช้นั้นซ้ำหรือไม่ ในตัวอย่าง ผมได้ใช้ชื่อนี้ไปแล้วนะครับ เพราะฉะนั้นชื่อนี้ใช้ไม่ได้แล้ว ต้องหาชื่ออื่นนะครับ วิธีการเช็คก็ เข้าไปที่ rubygems.org แล้ว search ชื่อดูครับ ชื่อที่หาไม่เจอก็คือชื่อที่ยังไม่ได้ถูกสร้างนั้นเอง
Start
ก่อนอื่นให้ทำ โครงสร้างไฟล์ ให้เป็น แบบนี้ก่อน
-random_num
/lib
-random_num.rb
-random_num.gemspec
อธิบายคร่าวๆ
- /lib/random_num.rb จะเป็นไฟล์หลักในการรัน
- random_num.gemspec เป็นไฟล์ที่เอาไว้ ตั้ง config ต่าง ๆ เช่น version ของ gems, description ต่าง ๆ
เราจะมาลองสร้าง ไฟล์ random_number.rb กัน
class RandomNum
def self.rd(x, y)
rand(x..y)
end
end
สั้นๆ ง่ายๆ แค่นี้พอ ตั้งชื่อ method ว่า rd รับค่ามา 2 ตัว จะทำการสุ่ม เลขตั้งแต่ x จนถึง y เช่น 1..10 ก็จะสุ่มออกมาได้ 5,1,2,2 หรืออะไรก็ตาม
มาดูที่ random_number.gemspec
Gem::Specification.new do |s|
s.name = 'random_num'
s.version = '0.0.1'
s.date = '2020-03-17'
s.summary = "Rad!"
s.description = "A simple random number"
s.authors = ["your_name"]
s.email = 'your_email'
s.files = ["lib/random_num.rb"]
s.homepage = 'https://rubygems.org/gems/random_num'
s.license = 'MIT'
end
setup ตามด้านบนนี้
ลองทดสอบดูในเครื่องว่าใช้ได้ไหม
$ gem build random_num.gemspec
Successfully built RubyGem
Name: random_num
Version: 0.0.1
File: random_num-0.0.0.gem
ควรจะต้อง build ผ่าน
ลองทดสอบใน irb ดูก่อนใช้ได้ไหม
$ gem install random_num
Fetching random_num-0.0.1.gem
Successfully installed random_num-0.0.1
~ ✗ irb
2.5.7 :001 > require 'random_num'
=> true
2.5.7 :002 > RandomNum.rd(1, 10)
=> 10
2.5.7 :003 > RandomNum.rd(1, 10)
=> 2
Yeppp ใช้ได้
คราวนี้เราจะเอาgems ของเรามา push ขึ้น rubygems.org
ก่อนอื่นต้องสมัครสมาชิกก่อนนะ หลังจากสมัครแล้ว ให้ รัน คำสั่งตามนี้
curl -u your_user_name https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials; chmod 0600 ~/.gem/credentials
ส่วนที่ your_user_name ให้ใส่ username ของตัวเองลงไป, หลังจาก รัน จะต้องให้ใส่ password ด้วย
จากนั้นเราจะทำการ push gem ของเราที่ได้ขึ้นไป
gem push random_num-0.0.1.gem
Pushing gem to https://rubygems.org...
Successfully registered gem: random_num (0.0.1)
เมื่อ push ผ่าน ให้เราเข้าไปที่ dashboard ของเรา จะเห็น gems ของเราเพิ่มขึ้นมาครับ ถ้าจะใช้ก็ลงตามปกติเลย
gem install random_num
หากเราต้องการแก้ไข หรือ modify gems ของเรา ให้เราแก้ไขไฟล์ .gemspec ส่วนของ version ด้วยนะครับ เช่น 0.0.1 -> 0.0.2 แทน ไม่งั้นจะซ้ำนะครับ
เบื้องต้น ทำ gems ง่ายๆ ฝากไว้เท่านี้ก่อน ขอบคุณครับ
ref: https://guides.rubygems.org/make-your-own-gem/#your-first-gem