Sử dụng ERB trong file YAML

Các file cấu hình YAML được sử dụng thường xuyên trong các ứng dụng Rails, ví dụ file config.yml thông thường

# config/config.yml  
development:  
    key1: vccloud
    key2: vccloud is awesome
...  

File này không tránh được việc bị lặp thông tin (vccloud). Với số lần lặp quá lớn đi kèm với các môi trường triển khai khác nhau, việc sửa đổi đoạn text vccloud thành Cloud Solutions sẽ rất tốn thời gian và công sức.

Một phương pháp mới đưa ra để giải quyết tình trạng này là sử dụng code ERB trong file YAML.

Cách thông thường:
# config/initializers/load_config.rb
APP_CONFIG = YAML.load_file("#{Rails.root}/config/config.yml")[Rails.env]
Cách mới:
# config/initializers/load_config.rb
APP_CONFIG = YAML.load(ERB.new(File.read("#{Rails.root}/config/config.yml")).result)[Rails.env]

Theo cách mới này, thay vì load file trực tiếp, module YAML sẽ load chuỗi trả về từ module ERB. Từ đó file config.yml có thể sửa lại như sau để tránh lặp thông tin:

# config/config.yml
<% name = vccloud %>
development:  
    key1: <%= name %>
    key2: <%= name %> is awesome
...

Việc sử dụng ERB trong file YAML sẽ giúp nhiệm vụ quản lý và sửa đổi YAML cho từng trường hợp triển khai giờ đây đơn giản hơn bao giờ hết.