이것은 Rails 플러그인과 처음으로 상호 작용하는 것이며 이것이 어떻게 작동하는지에 대해 머리를 감쌀 수는 없습니다. 레일스 플러그인 / 엔진을 만들 것입니다. 이 플러그인을 Rails 애플리케이션 (다른 프로젝트)에 포함하고 싶습니다. 어떻게해야합니까? 나는 이것을 제안하는 것을 발견 했다.
이 새로운 엔진 디렉토리의 루트에는 plugin_name.gemspec 파일이 있습니다. 나중에 애플리케이션에 엔진을 포함 할 때 Rails 애플리케이션의 Gemfile에서 다음 줄을 사용하여 수행합니다.
gem 'plugin_name', path: 'engines/plugin_name'
제 질문은 정확히 어떻게해야하나요? 레일스 애플리케이션을 만들 때 engines
폴더 구조에서 디렉토리를 찾지 못한다는 의미 입니다. 또한 플러그인 프로젝트의 어떤 디렉토리를 디렉토리에 배치해야 engines/
합니까?
나는 수행하여 플러그인을 만들었습니다.
rails plugin new plugin_name --mountable
다음 파일 / 디렉토리를 생성했습니다.
|-app/
|-bin/
|-config/
|-demo_project.gemspec
|-Gemfile
|-Gemfile.lock
|-lib/
|-MIT-LICENSE
|-Rakefile
|-README.md
|-test
|-dummy
|-(contains a rails application)
이제이 플러그인으로 작업을 마치면 다른 Rails 애플리케이션에 어떻게 포함 할 수 있습니까? engines/
gemfile에 플러그인을 포함하는 것 외에도 어떤 디렉토리 를 추가해야합니까?
이 외에도 다음이 나타내는 내용에 대한 정보도 필요합니다.
또한이
--mountable
옵션은test/dummy
에있는 더미 애플리케이션의 경로 파일에 다음을 추가하여 에있는 더미 테스트 애플리케이션 내부에 엔진을 마운트하도록 생성기에 지시합니다test/dummy/config/routes.rb
.
mount PluginName::Engine => "/plugin_name"
마운트 지점은 무엇을 나타내며 플러그인이 Rails 애플리케이션에 포함되면 그 역할은 무엇입니까?
Rails 엔진은 메인 앱 내부에 마운트되는 격리 된 레일 앱입니다. 엔진을 만드는 두 가지 주된 이유는 애플리케이션 부분의 격리 (앱을 조각으로 분할하려는 의도가 있음)와 코드 재사용 (여러 앱에서 동일한 엔진을 사용할 때)입니다.
기술적으로는 루비 보석이지만 종종 엔진은 자체 저장소, 보석 게시 등으로 완전히 추출되지 않고 더 큰 앱의 격리 된 부분으로 시작 (및 라이브)됩니다. 예를 들어 admin
앱의 일부가 있는 경우 다음을 만들 수 있습니다. 그것은 엔진 :
# in gemfile:
gem 'admin', path: 'engines/admin'
# routes:
mount Admin::Engine => '/admin'
# engine's routes:
resources :foo # => because of being in an engine this will be /admin/foo
디렉토리 구조는 다음과 같습니다.
|-app/
|-bin/
|-...
|-config/
|-application.rb
|-routes.rb
|-engines/
|-admin_engine/
|-app/
|-controllers/admin/
|- foo_controller.rb
|-config/
|-routes.rb # <- this is engine's routes
|-lib/
|-admin/
|-engine.rb
|- admin.gemspec
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다