저는 크리스털을 처음 접했습니다 (루비는 사용하지 않았습니다). 그래서 무지를 사과드립니다! 나는 ecr docs을 보았지만 대답을 찾을 수없는 것 같습니다.템플릿에 임베디드 크리스탈 변수
Kemal의 동적 템플릿에 임베디드 크리스탈을 사용하고 있습니다. 확인해도됩니다 - 템플릿은 호출 범위에서 사용할 수있는 변수 만 렌더링하거나 템플릿 자체에서 메소드/함수 호출을 만들 수 있습니까? I.E. 템플릿 내에서 "악성"크리스탈 코드를 실행할 수있는 가능성이 있습니까? (이 경우 악성 코드는 I/O 또는 파일 액세스 등을 말합니다)?
는 케말의 문서에서 예제를 수행하려면 다음 뷰hello.ecr
에서
get "/:name" do |env|
name = env.params.url["name"]
render "src/views/hello.ecr"
end
이 - name
템플릿에서 사용할 수있는 유일한 항목, 또는 수 일 전화 File.delete("./foo")
예를 들어 템플릿 내에서?
빠른 응답을 위해 @asterite에게 감사드립니다. 내 관심사 변수가 코드를 포함하는 것이 아니라, 내가 외부에서 제공 한 html 템플릿 (그 내용은 미리 알지 못할 수도 있음)을 파싱하는 솔루션을 찾고 있었고 실행 가능성을 피하기를 원했습니다. 가능한 경우 기본 변수 및 제어 구조를 넘어서는 코드 (if, else, 등). "A 간단한 해결책이하는 것입니다 : – corkington
[이 조각은] (https://groups.google.com/forum/#!topic/crystal-lang/jX_dRFSdh78)는 꽤 오래된하지만, 내가 무엇을 찾고 있었다 사항 당신이 임의의 코드를 실행할 수없는 템플릿 시스템을 가지고 있다면 반복 실행을위한 일종의 작업을 수행 할 수 있습니다. 그런 다음 런타임에 그 템플릿을 해석 할 것입니다. 값이 포함 된 해시 또는 구조체 일 수 있습니다 ... " 이 경우 런타임 해석이 필요하지만이 경우에는 충분합니다. 어떤 아이디어? – corkington
@corkington with ECR 임의의 코드의 런타임 실행이 Crystal에서는 불가능하기 때문에 임의의 코드를 실행할 수있는 방법은 전혀 없습니다. – asterite