Tôi đang sử dụng số backup gem của meskyanichi. Bởi và lớn nó làm những gì tôi cần nó, nhưng tôi cần phải có nhiều bản sao lưu (ví dụ, hàng giờ, hàng ngày, hàng tuần). Các cấu hình chủ yếu là giống nhau nhưng có một vài khác biệt, vì vậy tôi cần phải có nhiều tệp cấu hình. Tôi gặp khó khăn khi tìm một cách lành mạnh để quản lý các bit cấu hình chung (tức là, không lặp lại các phần phổ biến).Đá quý sao lưu của Ruby - cấu hình được chia sẻ?
Tệp cấu hình sử dụng nhiều cấu trúc khối và từ những gì tôi có thể biết, mỗi bản sao lưu cần phải có tệp cấu hình riêng (ví dụ: config/backup/hourly.rb, config/backup/daily.rb, v.v.) . Tệp cấu hình điển hình trông giống như sau:
Backup::Model.new(:my_backup, 'My Backup') do
database MySQL do |db|
db.name = "my_database"
db.username = "foo"
db.password = "bar"
# etc
end
# similar for other config options
end
Sau đó, sao lưu được thực hiện la la bundle exec backup perform -t my_backup -c path/to/config.rb
.
swag đầu tiên của tôi tạo điều kiện cho một cấu hình chung là để xác định phương pháp mà tôi có thể gọi từ các khối:
def my_db_config db
db.name = "my_database"
# etc
end
Backup::Model.new(:my_backup, 'My Backup') do
database MySQL do |db|
my_db_config db
end
#etc
end
Nhưng điều này không thành công với một undefined method 'my_db_config' for #<Backup::Database::MySQL:0x10155adf0>
.
Ý định của tôi là làm cho tính năng này hoạt động và sau đó chia các chức năng cấu hình chung thành một tệp khác mà tôi có thể require
trong mỗi tệp cấu hình của mình. Tôi cũng đã cố gắng tạo ra một tập tin với mã config và require
ing nó vào trong khối mô hình định nghĩa:
# common.rb
database MySQL do |db|
db.name = "my_database"
#etc
end
# config.rb
Backup::Model.new(:my_backup, 'My Backup') do
require "common.rb" # with the right path, etc
end
này cũng không hoạt động, và từ nghiên cứu tiếp theo tôi đã phát hiện ra rằng đó chỉ là không phải là cách mà require
công trinh. Một cái gì đó phù hợp hơn với cách hoạt động của công cụ #include
của C/C++ (tức là, dán một cách mù quáng nội dung vào bất kỳ phạm vi nào được gọi từ) có thể hoạt động.
Bất kỳ ý tưởng nào?
Ý tưởng tuyệt vời! Cảm ơn! – dantswain