나는 건물에있는 Cms에 대한 테마를로드하고 싶습니다. name_of_theme.themespec이라는 파일을 가지고 있다고 생각했습니다.이 파일을로드 할 것이고 Bundler가 gemspecs와 회비를 지불하는 것과 비슷합니다. 이 파일 안에 내가 좋아하는 뭔가를 할 것이다 :루비로드에서 반환 값을 캡처하려면 어떻게해야합니까?
Theme.new do |t|
t.value = 'hi'
end
내가 스크립트 .. 난 그냥 파일의 내용을 잡아 그들을 평가 후면 하는가를로드 한 후이 주제 인스턴스를 캡처하고 싶습니다? 이것은 파일을로드하는 것과 .. eval'ing을 읽는 것 사이에 어떤 차이가 있는지에 대한 후속 질문으로 이어집니다. 나는 'eval'이 종종 파괴의 선구자로 여겨진다는 것을 알고 있습니다. 아마도이 유스 케이스 괜찮아?
evaluationContext = Fiber.new {$SAFE = 4; Fiber.yield binding}.resume
=> #<Binding:0x007f85fc8a0fc8>
a = evaluationContext.eval('puts $SAFE')
=> 0
감사 @Linuxios, 당신은 여기에서 시작하는 나에게 충분한 정보를 제공했고 나는 더 많은 내용을 알고하지 않았다 충분히 개념을 생각한다 이 영역 .. 나는 스레드의 안전 수준을 인식하지 못했습니다. 감사합니다. – Inc1982
@ Inc1982 : 물론. 궁금한 점이 있으면 의견을 남기십시오. 해리 주제이며 실제로 샌드 박싱 코드를 작성하는 동안 이것을 발견했습니다. – Linuxios
나는 당신의 대답에 기초하여 나의 질문에 후속 조치를 추가했다. 당신이 그것을 볼 수 있다면 궁금하다. 왜 $ SAFE가 광섬유의 바인딩 컨텍스트에서 실행 함에도 불구하고 0을 말하고 있는가? – Inc1982