Có cách đơn giản để thoát các ký tự ma thuật được sử dụng để thay thế biến trong cấu hình buildout, sao cho chuỗi bị bỏ lại một mình. Nói cách khác, nơi tôi nói:Ngăn chặn thay thế biến xảy ra với việc xây dựng
[part]
attribute = ${variable}
Tôi không thực sự muốn nó để mở rộng $ {} biến nhưng để lại nó như là giá trị văn chương.
Trong thực tế, vấn đề cụ thể mà tôi gặp phải không nằm trong tệp cấu hình xây dựng, mà trong tệp mẫu được xử lý bởi công thức 'collective.recipe.template'. Điều này sử dụng cùng một công cụ thay thế biến từ buildout được sử dụng trong các tập tin cấu hình. Vấn đề là tệp tôi muốn sử dụng làm mẫu đã sử dụng cú pháp '$ {variable}' cho mục đích riêng của mình cùng với hệ thống cấu hình ứng dụng cuối cùng sẽ tiêu thụ tệp.
Cách duy nhất tôi đã tìm thấy để có được xung quanh vấn đề là sử dụng cái gì đó như:
[server-xml]
recipe = collective.recipe.template
input = templates/server.xml.in
output = ${product:build-directory}/conf/server.xml
dollar = $
Trong tập tin đầu vào mẫu sau đó có:
${dollar}{variable}
thay vì:
${variable}
rằng nó đã có.
Điều này đang làm là tìm kiếm thuộc tính 'đô la' so với phần sử dụng mẫu và thay thế bằng '$'.
Thay vì phải làm điều đó, đã loại hy vọng rằng người ta có thể làm:
\${variable}
hoặc thậm chí:
$${variable}
và loại bỏ sự cần thiết phải có để có một thuộc tính giả để lừa nó vào làm những gì tôi muốn.
Nhìn vào mã nguồn để xây dựng, cách nó khớp với thay thế biến dường như không cung cấp cơ chế thoát.
Nếu thực sự không có cách nào, thì có lẽ ai đó biết về công thức thay thế khuôn mẫu để xây dựng có thể mở rộng thay đổi, nhưng cung cấp cơ chế thoát cho bất kỳ cách nào nó chỉ ra biến, sao cho có thể tránh được vấn đề xung đột giữa cơ chế mở rộng hệ thống tạo khuôn mẫu và dữ liệu theo nghĩa đen trong tệp đang được tạo mẫu.