2012-06-29 21 views
6

Làm thế nào để phiên bản kiểm soát các chức năng map/reduce của tôi cho CouchDB? Tôi muốn có thể kiểm tra chúng vào git/github để các đồng đội của tôi có thể dễ dàng áp dụng chúng vào môi trường thử nghiệm cục bộ của họ. Tôi biết có các tính năng tái tạo trong CouchDB, nhưng tôi muốn giữ các khung nhìn db với nguồn cho dự án.Versioning couchdb map-reduce functions

+0

Tôi không hiểu câu hỏi. Nó không phải là trường hợp các quan điểm được định nghĩa trong một số ngôn ngữ cấp cao, javascript hay khác? Trong trường hợp đó, bạn có thể lưu trữ chúng trong một tệp nguồn thông thường và phiên bản chúng như bạn sẽ phiên bản bất kỳ mô-đun nguồn nào. Bí quyết còn lại duy nhất là cách lấy chúng từ nguồn của tệp văn bản và vào CouchDB. Nhưng điều này cũng dễ dàng: Giả sử chúng là các hàm Javascript, nếu bạn có một công cụ Javascript, bạn có thể nhận được biểu diễn chuỗi các hàm, JSONify chúng và tải chúng vào CouchDB động với một PUT tới URL thích hợp. – Cheeso

+0

Tôi đã đi xuống con đường này, nhưng có vẻ như nó phức tạp hơn mức cần thiết. Lý tưởng nhất, tôi muốn chỉ cần nhập/xuất JS cho khung nhìn từ hệ thống tệp để tôi có thể cam kết với git. –

Trả lời

5

Những gì bạn cần là một trong nhiều (nhiều) công cụ couchapp. Về cơ bản, tất cả chúng đều lập bản đồ một loạt các tệp js trong các cấu trúc khác nhau cho bố cục doc thiết kế được CouchDB sử dụng và thường cung cấp một số cơ chế đẩy/kéo đơn giản để có được những thứ này trong và ngoài.

Sau đó, bạn có thể git init trong thư mục chính & đảm bảo bạn đang phiên bản tài liệu thiết kế đã tải lên của mình.

Có một lời giải thích khá tốt http://mindeavor.com/blog/the-anatomy-of-a-couchapp chỉ bỏ qua nhà cung cấp/thảo luận cho thời điểm này, không bắt buộc.

Nếu bạn là một người của JS/node, hãy thử https://github.com/mikeal/node.couchapp.js/ hoặc kanso http://kan.so/ thật tuyệt vời nhưng nó còn nhiều hơn nữa; bạn có thể thấy bạn cần thêm Couch-fu trước khi vào nó. Thật tuyệt vời tuy nhiên, bạn có thể nhận được chỉ bằng cách sử dụng kanso push để bắt đầu.

Nếu bạn chỉ muốn bắt đầu, hãy sử dụng couchapp http://github.com/couchapp/couchapp là công cụ python, có thể là công cụ gốc.

+0

Cảm ơn vì điều này! Tuy nhiên, một số liên kết của bạn dường như đã chết. Kanso có vẻ như sẽ truy cập https://kanso.app.medicmobile.org/ ngay bây giờ và liên kết giải thích có thể truy cập http://web.archive.org/web/20121024014059/http://mindeavor.com/ blog/giải phẫu-of-a-couchapp - Tôi đã tweet tại tác giả (@mindeavor) để hỏi xem có URL nào tốt hơn không. –

1

Chúng tôi (và tôi chắc chắn hầu hết các nhóm) làm chính xác như bạn đã nói. Chúng tôi giữ quan điểm của chúng tôi, vv, trong cây nguồn của chúng tôi và cam kết git. Ứng dụng của chúng tôi là một ứng dụng nút, do đó chúng tôi đặc biệt đơn giản để chúng tôi có thể lưu vào nguồn và lưu chúng vào DB, nhưng điều này khá đơn giản bằng bất kỳ ngôn ngữ nào - chỉ cần đưa ra một lược đồ đặt tên, lưu trữ các tệp JS trong một đặt và đọc các tệp và lưu trữ dữ liệu trong cấu trúc khóa thích hợp trong _design/document thích hợp trong DB của bạn.