2012-07-15 32 views
6

Cách tạo túi dữ liệu từ công thức và tránh ngoại lệ khi túi dữ liệu đó đã tồn tại?Tạo túi dữ liệu đầu bếp từ công thức

Các tài liệu cho thấy rằng việc tạo một túi dữ liệu được thực hiện như thế này:

new_databag = Chef::DataBag.new 
new_databag.name('unique_name') 
new_databag.save 

này hoạt động khi databag chưa hề tồn tại, nhưng làm thế nào để làm cho nó hoạt động nếu databag đã tồn tại vì vậy nó sẽ không phá vỡ đầu bếp chạy?

Trả lời

12

Hãy thử sử dụng các phương pháp list của Chef :: DataBag và kiểm tra xem tên của databag của bạn là hiện tại:

require 'chef/data_bag' 

unless Chef::DataBag.list.key?('unique_name') 
    new_databag = Chef::DataBag.new 
    new_databag.name('unique_name') 
    new_databag.save 
end 

Tôi sử dụng này để làm cho công thức nấu ăn của tôi mạnh mẽ hơn, hoặc ném một lỗi thân thiện hơn nếu một databag dự kiến không thể tìm thấy trên máy chủ Chef.

+0

Tôi nghĩ rằng "nếu Chef :: DataBag.list.key?" thử nghiệm phải là một trừ khi. Trong trường hợp đó, bạn chỉ tạo databag mới nếu nó đã tồn tại để vượt qua bài kiểm tra đó. Chính xác? Cảm ơn bạn đã chỉ ra mẫu mặc dù: D –

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