2014-06-05 2 views
1

Ruby로 작성된 Vagrant 파일에 정의 된 구성을 파싱하고 자바 코드의 다른 곳에서 설정을 사용해야합니다. jRubyParser를 탐색하려고 시도했지만 사용법을 정의하는 문서를 발견하지 못했습니다.자바 내부의 방해물 파싱

Ruby에 대한 사전 경험이 없으므로, 해당 지역의 Vagrant Repo를 로컬에서 복제했지만 코드를 검색해도 도움이되지 않습니다. Vagrant는 파일에 정의 된 구성을 어떻게 읽습니까? 어떤 입력?

답변

0

Vagrantfile은 일반적인 Ruby 스크립트입니다. 즉, Ruby intepreter가 설정 파일로 읽는 것 이상의 의미가 있습니다.

더 열심히 일을하게하려면, 일부 구성 옵션은 Vagrantfile에서 최고 수준의 변수로 선언 아니라 "config.vm.provider".

같은 일부 함수 호출에서 개체의 속성 (같은 방법에 따라되지 않습니다 복잡한 구성이 있다면, 필자는 줄 단위로 파일을 읽고 고려해야 할 정규 표현식을 사용하여 필요한 변수를 얻습니다. 가장 우아한 해결책은 아니지만 대안보다 구현 방법이 빠릅니다.

당신의 공급자는 항상 동일합니다, VirtualBox를 말하세요, 아마도 당신이 거기에서 당신의 구성 중 일부를 얻을 수 있습니다.이 경우 어딘가에있는 파일을 읽을 필요가있을 것입니다. "Virtu alBox VMs "디렉토리 (Mac에서는"$ HOME/VirtualBox VM "에 있습니다). XML 파일이므로 Java XML 파서 중 하나를 사용하여 필요한 것을 얻을 수 있습니다.

+0

방글라데시가 Vagrantfile 구성을 내부적으로 처리해야하는 방법에 대한 간단한 개요를 알려 줄 수 있습니까? VirtualBox와 같은 공급자의 입력으로 사용하기 위해 내부 개체 구조에 이러한 설정을 매핑하는 방법에 대해 확신하지 못합니다. 방랑자가 그다지 신경 쓰지 않는 루비 같은 것이 었습니까? 방황하는 사람이 어쨌든 나에게 도움이 될이 방글라데시 파일로 무엇이든 할 수 있습니까? 그렇지 않으면 필자는 확실히 Java에서 자체 파서를 구현할 것입니다. 신속한 답변에 감사드립니다. – akskap

+0

코드가 Virtualbox에 제약을받지 않을 것입니다. 그렇지 않으면 XML 파일에 관한 입력 내용이 훌륭하게 작동했을 것입니다. 그러나 해당 파일은 VBox에서 이미 생성 된 컴퓨터에서만 사용할 수 있습니다. VagrantFile에 정의되었지만 아직 제공자에 배포 된 다른 컴퓨터의 경우 파일 내용을 대신 처리해야합니다. – akskap

+0

불행히도 Vagrant의 내부 구조에 대해서는 알지 못합니다. 빠른보기는 [loader.rb] (https://github.com/mitchellh/vagrant/blob/master/lib/vagrant/vagrantfile.rb) 및 [vagrantfile.rb] (https : // github .com/mitchellh/vagrant/blob/master/lib/vagrant/vagrantfile.rb). Vagrant는 아마도 Ruby의 블록과 procs를 사용하여 설정 파일을 평가합니다. – kamituel