2012-01-04 13 views
6

Tôi có file YAML mà cần phải mất một biến như một đầu vào:Làm cách nào để sử dụng các biến trong tệp YAML?

outputters: 
    - type  : DateFileOutputter 
     name  : logfile 
     level  : DEBUG 
     date_pattern: '%Y%m%d' 
     trunc  : 'false' 
     dirname  : "/home/sameera/workspace/project/log" 
     filename : "message.log" 
     formatter : 
     date_pattern: '%m/%d/%Y %H:%M:%S' 
     pattern  : '%d %l - %m' 
     type  : PatternFormatter 

Tôi muốn vượt qua dirname như một tham số, một cái gì đó như:

 dirname  : "<%= LOGFILE_PATH%>" 

My LOGFILE_PATH được định nghĩa trong một tập tin gọi init.rb.

Trả lời

17

Bạn có thể sử dụng ERB.

Ví dụ:

template = ERB.new File.new("path/to/config.yml.erb").read 
processed = YAML.load template.result(binding) 

Bạn có thể đọc thêm về ràng buộc ở đây: ruby metaprogramming.

+1

Hi @Sergio Tulentsev, Nó đã hoạt động, Nhưng vì tôi muốn có một giải pháp yml tinh khiết, tôi đã cố gắng làm tương tự với .yml nhưng không có may mắn, cảm ơn câu trả lời và xin lỗi vì sự chậm trễ không đăng bất kỳ bản cập nhật nào sameera – sameera207

+0

@Sergio Tulentsev bạn đã khắc phục vấn đề này theo bất kỳ cách nào khác không? (tức là dựa trên yml) –

+0

@ManivannanJeganathan: Tôi không thử :) –

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