#ruby #proc #prawn
#рубиновый #прок #креветки
Вопрос:
Я пытаюсь создать репозиторий с моими шаблонами Prawn и другим, который будет создавать PDF-файлы Prawn.
Представьте себе что-то вроде этого:
# Repo A
require 'template_from_repo_b'
p = get_my_proc # from repo b
Prawn::Document.new(amp;p).render
# Repo B
def get_my_proc
proc do
text 'hello world'
end
end
И это работает. Но как я могу передать данные в этот процесс? Возможно ли это?
Интересно, есть ли способ загрузить код в переменную, как в PHP.
# File to include
<?php
return 'abc';
# Usage
$abc = include 'include.php';
Таким образом, я мог бы загрузить процесс непосредственно в переменную. Я хочу иметь возможность максимально упростить шаблоны proc.
Спасибо!
Комментарии:
1.
new
однако не требует процесса;generate
может, поскольку он занимает блок.2. Это так. Я только что попробовал еще раз. Однако мне не хватало amp; перед процедурой в Document.new(amp;p).
Ответ №1:
Я нашел возможное решение. Это немного странно, поэтому я не уверен, буду ли я его использовать. Любое предложение будет оценено, я не профессионал ruby.
require 'prawn'
def make_proc(data)
proc do
text data[:greet]
end
end
data = { greet: 'Hello World' }
p = make_proc data
bytes = Prawn::Document.new(amp;p).render
open('test.pdf', 'wb') { |f| f.puts bytes }
Комментарии:
1. В этом нет ничего странного; вот как вы передаете proc как неявный блок.