Trong Capistrano sử dụng phần mở rộng Đa giai đoạn, tôi có hai môi trường: prod và testing.Capistrano Kiểm tra biến không xác định trong Task
Tôi cần một vài biến trong thử nghiệm.rb không cần thiết trong prod.rb và tôi muốn một số nhiệm vụ của mình có thể kiểm tra xem biến có được xác định hay không và sử dụng nó nếu có, nhưng bỏ qua nó nếu nó chưa được đặt.
Vì vậy, trong testing.rb tôi sẽ có cái gì đó như:
set :foo, 'bar'
prod.rb sẽ không có bất kỳ tham chiếu đến: foo vì nó không cần nó. Trong một trong những nhiệm vụ của tôi, tôi muốn làm một cái gì đó như:
if defined?(foo)
# do something with foo
else
# do something without foo
end
Nhưng tôi vẫn gặp lỗi:
undefined local variable or method 'foo'
Có cách nào để kiểm tra các biến toàn cục không xác định trong nhiệm vụ? Hoặc tôi có phải làm điều gì đó như:
set :foo, ''
Trong tất cả các môi trường của tôi không cần biến: foo?
Để mở rộng điều này một chút: được xác định? phương thức nhận một ký hiệu (: foo) thay vì một biến (foo). Phương thức set không thực sự tạo các biến ruby thích hợp, nó chỉ giữ các giá trị trong một kho lưu trữ bên trong. Đó là lý do tại sao bạn cần sử dụng hàm fetch (: foo) để lấy giá trị. –
Điều đó có hiệu quả, cảm ơn. Tôi khá xa lạ với Ruby và tôi đã tìm ra một giải pháp dễ dàng như thế này nhưng Google đã thất bại và tôi đã bỏ lỡ nó trong tài liệu. Tôi đã tìm các biến đã được đặt khác nhau, vì vậy chúng cần được kiểm tra khác nhau nhưng không biết sử dụng tồn tại? Tôi hoàn toàn bối rối. Cảm ơn một lần nữa. – Jaymon
Điều này thật điên rồ! Tôi đã cố gắng xác định? –