레일 템플릿 부분으로 구성된 루비 보석을 만드는 것이 합리적입니까?

StackOverflow https://stackoverflow.com/questions/1623628

  •  06-07-2019
  •  | 
  •  

문제

나는 루비 보석에서 무엇을하고 작동하지 않는지 이해하려고 노력하고 있습니다 (주로 한 프로젝트에서 다음 프로젝트로 기능을 재사용 할 수있는 직접 만들기위한 관점에서).

Ruby Gem을 만들 때 Ruby 기능 만 포함하거나 Rails 템플릿, CSS 파일 및 Javascripts로 구성된 보석을 만들 수 있습니까?

그렇다면 GEM 사용자가 Rails 프로젝트에서 해당 리소스에 어떻게 액세스 할 수 있습니까 (환경에 'config gem'문을 추가하는 것 외에도 RB 파일은?

도움이 되었습니까?

해결책

아니요. 보석은 정적 파일이 아닌 코드 라이브러리입니다.

보석을로드하면 파일을 공개 디렉토리로 이동하지 않습니다. 루비 파일을로드하고 모듈에 액세스 할 수 있습니다. 따라서 루비 코드 만 실행할 수 있습니다.
그러나 Ruby 코드는 예를 들어 디자인을 쉽게 구축 할 수 있도록 몇 가지 도우미를 제공 할 수 있습니다.

각 Ruby 프로젝트에 정적 파일 리소스를 포함시키려면 두 가지 솔루션이 표시됩니다.

  • 매번 사용하는 모든 CSS, JavaScript 등을 포함한 템플릿 프로젝트를 만듭니다. 당신은 가져갈 수 있습니다 멜빵 이것의 예로서.

  • 이 모든 정적 파일이 포함 된 새 저장소를 만들고 하위 모듈로 추가하십시오 ( git 또는 SVN) 그리고 각 프로젝트에 포함하십시오.

첫 번째 솔루션은 제가 가장 좋아하는 솔루션이지만 다른 솔루션을 가져 가고 싶을 수도 있습니다.

다른 팁

Dmathieu가 언급 한 것처럼 보석은 프로젝트 디렉토리에 들어가는 것이 아니라 시스템로드 경로에 설치된 Ruby 라이브러리 용입니다. 그러나 Rails Project Skeleton을 보석으로 패키지하려면 골격 프로젝트 트리를 대상 디렉토리로 복사하기위한 발전기 역할을하는 작은 루비 실행 파일을 갖는 것이 간단합니다. 그런 다음 모든 것을 보석에 포장 할 수 있습니다. 골격 파일은 보석 디렉토리에 앉을 수 있으며 말할 수 있습니다. generate_new_project someproject 새 프로젝트 디렉토리에 복사합니다.

~할 수 있다 부분 및 기타 Haml, Builder 또는 ERB보기를 쉽게 추가하십시오. 다음 구조가 작동해야합니다.

# in my_gem/rails/init.rb
ActionController::Base.append_view_path(File.expand_path(File.join(File.dirname(__FILE__), '..', 'views')))

# in my_gem/views/my_gem/_some_partial.html.erb
This is a partial from MyGem!

# in your_rails_app/views/some_controller/some_view.html.erb:
<%= render :partial => '/my_gem/some_partial' -%>

그러나 정적 파일에 대한 귀하의 질문에 직접 대답하지는 않습니다. 가장 좋은 방법은 종종 CSS, JS 및 기타 파일을 공개 디렉토리에 복사하는 생성기입니다. 또는 a를 사용할 수 있습니다 StaticFilesController 정적 파일을 해당보기 디렉토리에 넣습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top