2011-02-22 2 views
1

제 목표는 ERB 템플릿으로 구동되는 Rails (3) 앱에서 정적 HTML, 자바 스크립트 및 이미지 파일의 디렉토리를 생성하는 것입니다. 다음 템플릿 파일 ..fromRails와 ERB를 사용하여 템플릿 파일의 디렉토리에서 파일 디렉토리를 생성하는 가장 적절한 방법은 무엇입니까?

#{Rails.root}/public/products/baseball.html 
#{Rails.root}/public/products/football.js 

:

#{Rails.root}/product_templates/baseball.html.erb 
#{Rails.root}/product_templates/football.js.erb 

가 이상적으로 템플릿 내 응용 프로그램의 레일 환경에 액세스 할 수있는 것을 (예를 들어, 개발자로서 나는 이러한 파일을 생성/업데이트 할 수 있습니다 URL 헬퍼, 헬퍼보기, 부분 검색 등).

이 작업을 수행하는 가장 최신의 방법은 무엇입니까?

맞춤 레일스 생성기로 실험했지만 ERB가 아닌 파일을 건너 뛰고 파일 이름을 바꾸는 등의 사용자 지정 논리를 작성해야한다는 것을 알았습니다. 더 좋은 방법이 있어야합니다.

+0

그 템플릿 파일에 대한 데이터가 어디에서 온 것인가? 모든 데이터 집합과 많은 템플릿입니까?그렇지 않다면 어떻게 데이터를 분리하고 템플릿과 일치 시키거나 어떻게 할 생각입니까? – ctcherry

+0

템플릿 파일은 개발시 편집되고 처리 된 다음 출력 된 결과가 대상 디렉토리로 이동합니다. 이 경우 브라우저 확장으로 패키지되는 파일이 생성됩니다. API 문서 생성 (변경 될 수도 있지만 동적 일 필요가 없음)은 또 다른 예가 될 것이라고 생각합니다. –

답변

0

이렇게하면 비슷한 결과를 얻을 수 있습니다. 소스 및 대상 디렉토리를 받아들이고 대상을 지우고 ERB 처리 파일을 대상에 배치하거나 단순히 복사 (ERB 파일의 경우)합니다. 디렉토리를 재귀 적으로 처리하기 위해 수정해야합니다.

는 그래서 같은 레이크 작업에서 호출 :

DirectoryGenerator.new.generate(Rails.root.join('src'), Rails.root.join('public', 'dest')) 


class DirectoryGenerator 
    include Rails.application.routes.url_helpers 
    include ActionView::Helpers::TagHelper 
    default_url_options[:host] = 'www.example.com' 

    def generate(source, destination) 
    FileUtils.rmtree(destination) 
    FileUtils.mkdir_p(destination) 

    Dir.glob(File.join(source, '*')).each do |path| 
     pathname = Pathname.new(path) 
     if pathname.extname == '.erb' 
     File.open(destination.join(pathname.basename.sub(/\.erb$/, '')), 'w') do |file| 
      file.puts(ERB.new(File.read(path)).result(binding)) 
     end 
     else 
     FileUtils.cp(pathname, File.join(destination, pathname.basename)) 
     end 
    end 
    end 
end 
0

레일 템플릿을 살펴 보셨습니까?

예를 들어

http://m.onkey.org/rails-templates ..

회원님이 정확히에서 점점 .. 당신이 최종 목표를 .. 몇 가지 매개 변수를 제공하여 클라이언트 사이트를 생성하는 노력이 무엇 있는지? 여기에 더 나은 해답을 제공 할 수 있지만, 난 당신이 정확하게 뭘 하려는지 모르겠어요

1

는, 몇 가지 유용한 정보입니다 :

직접 ERB로 호출 할 수 있습니다,이에 대한 몇 가지 정보가 여기에있는 아마 이미하고있다 : 템플릿의 목록

http://www.ruby-doc.org/stdlib/libdoc/erb/rdoc/classes/ERB.html

쉬운 Dir.glob이 그들을 통해 쉽고 루프 특정 파일을 찾을 수 있도록 할 수 있어야 파일 :

http://ruby-doc.org/core/classes/Dir.html#M000629

내가 조언하는 방법을 모르겠다면 헬퍼와 레일스가 제공하는 다른 것들에 액세스 할 수 있습니다. 당신이 작성한 도우미는 모듈 일 뿐이므로 이들을 혼합 할 수 있습니다. 내장 된 레일 도우미로 이와 비슷한 것을 만들 수 있습니다.


이 흥미와 관련이 있지만 대신 ERB의 액체 템플릿 엔진을 사용하기 때문에 직접 귀하의 질문에 대답하지 않지만, 그렇지 않으면 당신에 대해 얘기하는 정적 사이트 생성을 일부 수행합니다

https://github.com/mojombo/jekyll

관련 문제