HTML이 아닌 파일을 템플릿으로 만들려면 ERB (Ruby의 템플릿 시스템)이 필요합니다.
(대신, 나는 그런 된 .java, .cs, 같은 소스 파일을 사용할 ...)명령 줄에서 웹 서버없이 루비 템플릿 파일 (ERB)을 어떻게 실행합니까?
?
HTML이 아닌 파일을 템플릿으로 만들려면 ERB (Ruby의 템플릿 시스템)이 필요합니다.
(대신, 나는 그런 된 .java, .cs, 같은 소스 파일을 사용할 ...)명령 줄에서 웹 서버없이 루비 템플릿 파일 (ERB)을 어떻게 실행합니까?
?
ruby / bin 디렉토리에 필요한 모든 것이 있어야합니다. 내 (WINXP, 루비 1.8.6) 시스템에서, 정말 erb your_erb_file.erb
가 STDOUT에 결과를 작성해야 ruby/bin/erb.bat
erb.bat [switches] [inputfile]
-x print ruby script
-n print ruby script with line number
-v enable verbose mode
-d set $DEBUG to true
-r [library] load a library
-K [kcode] specify KANJI code-set
-S [safe_level] set $SAFE (0..4)
-T [trim_mode] specify trim_mode (0..2, -)
-P ignore lines which start with "%"
있습니다.
:
(EDIT. 창 erb.bat 및 다만 보통 "ERB"가 .bat 파일은 내가 어떤 OS에서 동일한 거의 동일한 명령 작업을해야한다 생각 ERB에 대한 래퍼입니다)prag prog book 토론을 참조하십시오 (페이지의 절반 정도 아래에서 시작).
또한 Jack Herrington은 Ruby/ERB를 사용하는 코드 생성에 대해 a whole book을 작성했습니다.
이렇게하는 루비 스크립트를 작성하십시오. API 설명서는 여기에 있습니다 : 예를 들어 http://www.ruby-doc.org/stdlib/libdoc/erb/rdoc/
가 :
template = ERB.new File.read("path/to/template.erb"), nil, "%"
template.result(binding)
(바인딩 템플릿 필요로하는 @vars 바인딩입니다.)
경고 - 일부 Ruby 버전은 Rails ERB의 다양한 기능을 지원하지 않습니다 (예 : 빈 줄 끝을 생략하십시오. – lzap
또 다른 옵션은 루비를 사용하는 것입니다 - e, ERB itslef는 매우 간단하기 때문에.
뭔가 같은 :. 그러나
ruby -rerb -e "puts ERB.new(File.read(<file name here>)).result"
, 내가 어떻게 그 상황을 얻기 위해 기대하고 당신이 당신이 템플릿을 렌더링하고자하는 상황을 가정 해? 예를 들어, 체크 아웃 :
ruby -rerb -e "hello = 'hello'; puts ERB.new('<%= hello %> world').result(binding)"
을에 "Hello World"를 출력 할 것이다, 바인딩, 당신은 hello
변수를 정의 최상위를 사용.
나는 이것에 대해 의견을 말하려고했지만 코멘트 링크를 사용할 수 없습니다.
I이 사용하고 있습니다 위의 포스팅에서
template = ERB.new File.new("path/to/template.erb").read, nil, "%"
template.result(binding)
:
내가 좋아하는 DOS 배치 파일을 만드는거야 :
와 나는이 문제가 될 수있다 생각 발견%JAVA_HOME%\bin\jar -xvf <%=inputfile%>...
그리고 이상한 것은 문제 발견 - 나는 위의 코드를 실행할 때이 얻을 :
Processing Template test.txt
erb):2:in `render': compile error (SyntaxError)
erb):2: syntax error, unexpected tSTRING_BEG, expecting $end
erbout.concat "\n"
^
from DBUser.rb:49:in `render'
from DBUser.rb:43:in `each'
from DBUser.rb:43:in `render'
from DBUser.rb:81
나는 다음을 시도하고, 내 특정 문제의 둘레에있어 -이 모든 사람에 대한 정답이 경우 Erubis에 ERB를 전환 할 수 있습니다 경우 문제 해결이하는 것만 큼 간단
template = ERB.new File.new("path/to/template.erb").read
template.result(binding)
... 확실하지 :
require 'erubis'
template = File.read("sample_file.erb")
template = Erubis::Eruby.new(template)
template.result(:your_variable => "sample")
이 좋은 기본 기사입니다 - http://rrn.dk/rubys-erb-templating-system 그리고 하나 더 - http://www.stuartellis.eu/articles/erb/
이 테하는 동안이 질문에 발견 내 인형 템플릿.
이 솔루션을 종료 : 함께foo.erb
foo.vars.erb
가 새 파일에 모든 템플릿 변수를 넣어 파일, 예를 들어, 작성 :
<% @my_param="foo bar" %>
<% @another_param=123 %>
또는 (동등한) :
<%
@my_param="foo bar"
@another_param=123
%>
명령 행에서이를 실행
cat foo.vars.erb foo.erb | erb
귀하 완전히 렌더링 템플릿은 이제 STD-아웃을 인쇄해야합니다. 거기에서 직접 출력을 확인하거나 diff (또는 다른 도구)를 사용하여 미리 렌더링 된 출력과 비교할 수 있습니다.
완벽한/감사합니다. 이것은 정확하게 내가 찾고 있던 유스 케이스 (꼭두각시 테스트) – JDS
좋아요! 나는 ** ** erb를 실행하려고했지만 (올바른지 모른 채) 실패했기 때문에 직접 수행 할 수 없다고 생각했지만 대신 외부 라이브러리가 필요했습니다. 귀하의 회신 후, 나는 시스템 루비에 없었던 맞춤 루비 만 설치했다는 것을 깨달았습니다.) 감사합니다! –
ant 스크립트 (모든 플랫폼에서 실행해야 함)에 필요합니다. 나는 Linux에서 여기에 (확장자가없는) erb를 가지고 있지만, erb.bat에 대해서는 언급했다. (그래서 나는 윈도우 아래에 확장자가없는 erb가 없다고 가정한다.) 다중 플랫폼 방식으로 erb를 시작하는 방법을 제안 해 주시겠습니까? –
위와 같은 변수를 주입 할 수 있습니다 : erb <(echo -n '<% somevar = "yay"%>'; cat your.erb) –