2010-01-15 31 views
17

Là một nhà phát triển Rails, tôi cảm thấy hơi ngớ ngẩn khi đặt câu hỏi này nhưng hy vọng tôi sẽ học được điều gì đó mới mẻ và ai đó có thể khiến tôi thất vọng! Trong các ứng dụng đường ray của tôi, tôi sử dụng các loại đá quý (những người khác) mọi lúc, tôi cũng sử dụng các plugin từ cộng đồng hoặc của riêng tôi.Xây dựng đá quý ruby ​​cho các ứng dụng Rails

Tôi hiểu lợi ích của việc sử dụng đá quý trên plugin vì chúng có thể phân đoạn, phân đoạn, hệ thống rộng, dễ quản lý và chia sẻ v.v ... nhưng tôi thực sự không biết cách tạo đá quý cho ứng dụng đường ray !?

Bạn có luôn bắt đầu bằng plugin và chuyển đổi nó thành đá quý không, tôi đã thấy từ 'đóng gói nó là Đá quý'. Ngoài ra viên ngọc tôi đang nghĩ đến việc xây dựng sẽ không tốt trong một chương trình ruby ​​bình thường, nó chỉ hữu ích để tạo ra các ứng dụng. Tôi thậm chí không chắc chắn nếu ngữ nghĩa của điều đó có ý nghĩa, 'RubyGem' mà sẽ chỉ làm việc trong một ứng dụng đường ray !?

Tôi muốn tạo một đá quý (nếu đó là những gì tôi nên sử dụng?) Cho một phần rời rạc của chức năng cho các ứng dụng đường ray của tôi. Nó sẽ cần phải thêm một di chuyển cơ sở dữ liệu, các tuyến mới và cung cấp bộ điều khiển và khung nhìn hoặc trình trợ giúp xem hữu ích. Tôi biết tôi có thể đạt được điều này thông qua một plug-in nhưng chỉ muốn biết làm thế nào/tại sao để làm điều đó như là một 'Ruby Gem'?

Trả lời

7

Để tránh rủi ro Over-engineering, tôi thường bắt đầu với tính năng tôi cần trực tiếp vào ứng dụng. Sau đó, ngay sau khi tôi cần sử dụng tính năng tương tự vào một dự án khác, tôi kiểm tra xem có nên trích xuất nó thành một plugin hay thậm chí một ứng dụng riêng biệt cung cấp API hay không.

Plugins và Gems thường có thể hoán đổi cho nhau. Đá quý cung cấp một số lợi thế đáng kể về khả năng sử dụng lại và khả năng bảo trì. Ở phía bên kia, có một số vấn đề đã biết cụ thể. Ví dụ, một ứng dụng Rails thực sự không thể tải các tác vụ rake được định nghĩa trong một plugin được đóng gói như một Gem.

Hầu hết mọi plugin Rails đều có thể được đóng gói dưới dạng Đá quý. Ví dụ: hãy sử dụng plugin tabs_on_rails của tôi.

Bạn có thể cài đặt nó dưới dạng Đá quý chỉ định phụ thuộc vào môi trường.rb. Hoặc bạn có thể sử dụng lệnh script/plugin install như bạn mong đợi.

Nếu bạn muốn đạt được kết quả tương tự, hãy đảm bảo thực hiện theo bố cục Gem chuẩn và cung cấp tập lệnh khởi chạy init.rb do Rails yêu cầu. Ngoài ra, bạn có thể muốn tạo một tệp install.rbuninstall.rb để bao gồm móc sau khi cài đặt và sau khi gỡ cài đặt khi plugin được cài đặt làm plugin Rails chuẩn.

Cuối cùng nhưng không kém phần quan trọng, nếu bạn đóng gói một plugin làm Gem, bạn có thể sử dụng lại nó trong các dự án không Rails và cung cấp các khởi tạo Rails cụ thể bằng cách sử dụng tệp init.rb. Các ứng dụng Non-Rails sẽ đơn giản bỏ qua nó.

+0

Bạn có thể sửa chữa các url để cắm tabs_on_rails của bạn? –

+0

Đã sửa lỗi! Cảm ơn bạn. –

+0

@SimoneCarletti - "Ứng dụng Rails thực sự không thể tải các tác vụ rake được định nghĩa vào một plugin đóng gói như một Gem" - Tôi không nghĩ rằng điều này vẫn đúng .. – Yarin

3

Nếu bạn muốn tạo plugin cho Rails, https://peepcode.com/products/rails-2-plugin-patterns mang đến cho bạn một khởi đầu tốt. Sau đó, làm cho các plugin thành một viên ngọc.

Để tạo đá quý, tài nguyên này http://railscasts.com/episodes/183-gemcutter-jeweler sẽ hữu ích.

+0

Cảm ơn nhận xét của bạn, tôi đã đọc cuốn sách plugin đó khi tôi đầu tiên đã viết một plugin rất hữu ích. "Tạo một plugin thành một viên ngọc" có vẻ là câu trả lời. – tsdbrown

2

Hãy xem Jeweler. Jeweler cung cấp cho bạn một bộ các nhiệm vụ cào để làm cho phiên bản đá quý và xây dựng rất dễ dàng.

Các vấn đề liên quan