Computer >> Máy Tính >  >> Lập trình >> Ruby

Các phần tử bên trong của một RubyGem

Tập hợp những đứa trẻ lại và để ông nội kể lại những cách ngày xưa khi cuộc sống còn nhiều khó khăn, và việc lắp đá quý là một thử thách đau đầu, giật tóc, nghiến răng.

Quay lại khi tôi chỉ mới bắt đầu trong Ruby, không có Bundler và các viên ngọc phải được cài đặt một cách khó khăn. Trong Rails, điều này có nghĩa là chạy rake gems:install một triệu lần, sửa các lỗi xảy ra trong quá trình thực hiện, cho đến khi lệnh được thông qua mà không có lỗi. Hôm nay, chúng ta sẽ tạo đá quý theo cách cũ, sau khi xem xét đá quý là gì và cách chúng hoạt động.

Đá quý, Chúng là gì?

RubyGems là một cách dễ dàng để mở rộng mã của riêng bạn với chức năng do người khác viết. Ví dụ:thay vì viết mã xác thực / ủy quyền của riêng bạn, bạn có thể sử dụng Devise hoặc nếu bạn muốn thay đổi kích thước hình ảnh đã tải lên, bạn có thể sử dụng CarrierWave. Điều này cho phép bạn viết mã có thể sử dụng lại mà bạn có thể chia sẻ với người khác.

Nhưng chúng hoạt động như thế nào?

Ở dạng cơ bản nhất của nó, một viên ngọc không gì khác hơn là một thư mục nén chứa mã và một <name>.gemspec tập tin. .gemspec này tệp chứa siêu dữ liệu về đá quý như tên của nó, tệp nào cần tải và các phụ thuộc của nó.

gem install hoặc bundle lệnh tải xuống tệp zip từ nguồn và giải nén nó vào ổ cứng của bạn. Bạn có thể tìm ra nơi đặt viên ngọc bằng cách chạy bundle info <gem name> hoặc bằng cách mở trực tiếp thư mục gem bằng cách chạy bundle open <gem name> .

Để tải đá quý vào ứng dụng của bạn, Rubygems khỉ sẽ vá require trong Kernel lớp. Đầu tiên, nó cố gắng đọc tệp từ đĩa và nếu điều đó không hiệu quả, nó sẽ cố gắng giải quyết tệp trong từng viên ngọc trên hệ thống của bạn. Khi nó tìm thấy tệp trong một viên đá quý, nó sẽ "kích hoạt" viên đá quý đó bằng cách thêm nó vào đường dẫn tải.

Nếu bạn sử dụng Bundler, nó sẽ thêm từng viên ngọc cụ thể vào đường dẫn tải trong quá trình setup cuộc gọi. Điều này giúp Rubygems đỡ rắc rối khi cố gắng giải quyết các đường dẫn. Nó cũng ngăn Ruby tải một phiên bản đá quý khác với phiên bản được chọn trong Gemfile (.lock).

Làm cách nào để tạo thành một?

Cách dễ nhất để tạo đá quý của riêng bạn là sử dụng Bundler để tạo một dàn đá quý. Điều này bao gồm cấu trúc thư mục thích hợp, giấy phép, quy tắc ứng xử và môi trường thử nghiệm cho gem.

Tuy nhiên, hôm nay chúng ta sẽ tạo gem tối giản của riêng mình chỉ với hai tệp, một tệp chứa mã và một tệp gemspec tệp có chứa siêu dữ liệu. Đá quý của chúng tôi sẽ chào đón người dùng khi được gọi. Hãy bắt đầu bằng cách tạo một thư mục cho đá quý của chúng ta.

mkdir howdy
cd howdy

Trong thư mục này, chúng tôi sẽ tạo một lib thư mục sẽ chứa mã và howdy.gemspec tệp sẽ chứa siêu dữ liệu. Nó sẽ trông giống như thế này:

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

Đá quý howdy của chúng tôi có mã sau:

lib / howdy.rb

class Howdy
  def greet
    "howdy!"
  end
end

Một howdy.gemspec tối giản tệp chứa thông tin về phiên bản, tác giả, v.v. Nó cũng chỉ định các tệp cần giữ lại khi xây dựng một viên ngọc. Điều này ngăn người dùng gem khỏi phải tải xuống các tệp không cần thiết như bài kiểm tra và các tệp khác không cần thiết để chạy mã 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

Để tạo đá quý, chúng ta có thể sử dụng gem build howdy.gemspec yêu cầu. Nó tạo ra một howdy-0.0.1.gem tệp chứa mã của bạn. Để cung cấp đá quý cho người khác, bạn có thể xuất bản nó lên rubygems.org với gem publish lệnh.

Tóm tắt lại

Đây là những bước cần thiết để tạo và xuất bản một viên ngọc rất cơ bản. Chúng tôi hy vọng bạn thích chúng tôi đi sâu vào khảo cổ học về đá quý, và cách chế tạo chúng theo trường phái cũ. Như đã đề cập trước đây là vì mục đích giáo dục; chúng tôi khuyên bạn nên sử dụng Bundler để tạo khung đá quý trong thế giới ngày nay.

Hòa bình đi, các bạn trẻ! Nếu bạn có bất kỳ ý tưởng, câu hỏi hoặc nhận xét nào, vui lòng cho chúng tôi biết.