Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

อวัยวะภายในของ RubyGem

รวบรวมเด็ก ๆ และให้ปู่เล่าถึงวิถีชีวิตในสมัยก่อนเมื่อชีวิตยากลำบาก และการติดตั้งอัญมณีเป็นความเจ็บปวดที่ทำให้ปวดหัว ดึงผม และกัดฟัน

ย้อนกลับไปเมื่อฉันเพิ่งเริ่มต้นใน Ruby ไม่มี Bundler และต้องติดตั้งอัญมณีด้วยวิธีที่ยาก ใน Rails นี่หมายถึงการรัน rake gems:install ล้านครั้ง แก้ไขข้อผิดพลาดที่เกิดขึ้นระหว่างทาง จนกว่าคำสั่งจะผ่านไปโดยไม่มีข้อผิดพลาด วันนี้เราจะมาสร้างอัญมณีในแบบฉบับของโรงเรียน หลังจากที่ได้พิจารณาว่าอัญมณีคืออะไรและทำงานอย่างไร

อัญมณี พวกมันคืออะไร

RubyGems เป็นวิธีที่ง่ายในการขยายโค้ดของคุณเองด้วยฟังก์ชันที่เขียนโดยบุคคลอื่น ตัวอย่างเช่น แทนที่จะเขียนรหัสการตรวจสอบสิทธิ์/การให้สิทธิ์ คุณสามารถใช้ Devise หรือหากคุณต้องการปรับขนาดภาพที่อัปโหลดใหม่ คุณสามารถใช้ CarrierWave ได้ วิธีนี้ทำให้คุณสามารถเขียนโค้ดที่ใช้ซ้ำได้ซึ่งคุณสามารถแชร์กับผู้อื่นได้

แต่ทำงานอย่างไร?

ในรูปแบบพื้นฐานที่สุด gem ไม่มีอะไรมากไปกว่าไดเร็กทอรี zipped-up ที่มีโค้ดและ <name>.gemspec ไฟล์. .gemspec นี้ file มีข้อมูลเมตาเกี่ยวกับ gem เช่น ชื่อ ไฟล์ที่จะโหลด และการอ้างอิง

gem install หรือ bundle คำสั่งดาวน์โหลดไฟล์ zip จากแหล่งที่มาและแตกไฟล์ไปยังฮาร์ดไดรฟ์ของคุณ คุณสามารถค้นหาตำแหน่งของอัญมณีได้โดยเรียกใช้ bundle info <gem name> หรือโดยการเปิดไดเร็กทอรี gem โดยตรงโดยเรียกใช้ bundle open <gem name> .

ในการโหลดอัญมณีลงในแอปพลิเคชันของคุณ Rubygems monkey-patches require ฟังก์ชันใน Kernel ระดับ. อันดับแรกจะพยายามอ่านไฟล์จากดิสก์ และหากไม่ได้ผล จะพยายามแก้ไขไฟล์ในแต่ละ gems ในระบบของคุณ เมื่อพบไฟล์ในอัญมณีแล้ว จะ "เปิดใช้งาน" อัญมณีโดยเพิ่มไปยังเส้นทางการโหลด

หากคุณใช้ Bundler จะเพิ่มเจมเฉพาะแต่ละรายการไปยังเส้นทางการโหลดระหว่าง setup เรียก. วิธีนี้ช่วยลดความยุ่งยากในการพยายามแก้ไขเส้นทาง Rubygems นอกจากนี้ยังป้องกันไม่ให้ Ruby โหลดอัญมณีเวอร์ชันอื่นนอกเหนือจากที่เลือกไว้ใน Gemfile(.lock)

ฉันจะสร้างมันได้อย่างไร

วิธีที่ง่ายที่สุดในการสร้างอัญมณีของคุณเองคือการใช้ Bundler เพื่อสร้างฐานอัญมณี ซึ่งรวมถึงโครงสร้างไดเรกทอรีที่เหมาะสม ใบอนุญาต จรรยาบรรณ และสภาพแวดล้อมการทดสอบอัญมณี

อย่างไรก็ตาม วันนี้เราจะมาสร้างเกมแนวมินิมอลของเราเองด้วยไฟล์เพียงสองไฟล์ ไฟล์หนึ่งประกอบด้วยโค้ดและ gemspec ไฟล์ที่มีข้อมูลเมตา อัญมณีของเราจะทักทายผู้ใช้เมื่อถูกเรียก เริ่มต้นด้วยการสร้างไดเร็กทอรีสำหรับอัญมณีของเรา

mkdir howdy
cd howdy

ในไดเรกทอรีนี้ เราจะสร้าง lib โฟลเดอร์ที่จะบรรจุโค้ดและ howdy.gemspec ไฟล์ที่จะมีข้อมูลเมตา ควรมีลักษณะดังนี้:

tree
.
├── howdy.gemspec
└── lib
    └── howdy.rb

ฮาวดี้เจมของเรามีรหัสดังต่อไปนี้:

lib/howdy.rb

class Howdy
  def greet
    "howdy!"
  end
end

howdy.gemspec ที่เรียบง่าย file มีข้อมูลเกี่ยวกับรุ่น ผู้แต่ง ฯลฯ นอกจากนี้ยังระบุไฟล์ที่จะเก็บไว้เมื่อสร้างอัญมณี ซึ่งจะป้องกันไม่ให้ผู้ใช้ gem ดาวน์โหลดไฟล์ที่ไม่จำเป็น เช่น การทดสอบ และไฟล์อื่นๆ ที่ไม่จำเป็นเพื่อเรียกใช้โค้ด gem

Gem::Specification.new do |spec|
  spec.name          = "howdy"
  spec.version       = "0.0.1"
  spec.authors       = ["Robert Beekman"]
  spec.email         = ["robert@example.com"]
 
  spec.summary       = %(Greets the user)
  spec.description   = %(Howdy is a gem that greets the user when called)
  spec.license       = "MIT"
 
  spec.files         = ["lib/howdy.rb"]
end

ในการสร้างอัญมณี เราสามารถใช้ gem build howdy.gemspec สั่งการ. มันสร้าง howdy-0.0.1.gem ไฟล์ที่มีรหัสของคุณ หากต้องการเผยแพร่อัญมณีให้กับผู้อื่น คุณสามารถเผยแพร่ไปที่ rubygems.org ด้วย gem publish คำสั่ง

สรุป

นี่คือขั้นตอนที่จำเป็นในการสร้างและเผยแพร่อัญมณีพื้นฐาน เราหวังว่าคุณจะสนุกกับการดำน้ำในโบราณคดีของอัญมณี และวิธีการสร้างอัญมณีแบบโรงเรียนเก่า ดังที่กล่าวไว้ก่อนหน้านี้เพื่อการศึกษา เราขอแนะนำให้ใช้ Bundler เพื่อสร้างร้านอัญมณีในโลกปัจจุบัน

ใจเย็นๆวัยรุ่น! หากคุณมีความคิด คำถาม หรือความคิดเห็น โปรดแจ้งให้เราทราบ