Rails 플러그인 개발 과정
- 플러그인 초기화 및 설정:
rails plugin new yaffle명령으로 플러그인 스켈레톤을 생성하고gemspec파일의 필수 정보를 업데이트합니다.bundle install후bin/test를 통해 초기 환경이 올바르게 설정되었는지 확인합니다.
String클래스 확장 예시 (to_squawk메서드):- 테스트 주도 개발(TDD) 방식으로
yaffle/test/core_ext_test.rb에 실패 테스트를 먼저 작성합니다. yaffle/lib/yaffle.rb에require "yaffle/core_ext"를 추가하고,yaffle/lib/yaffle/core_ext.rb파일에String클래스의to_squawk인스턴스 메서드를 구현합니다.bin/test로 테스트 통과를 확인하고,bin/rails console에서 실제 동작을 검증합니다.
- 테스트 주도 개발(TDD) 방식으로
Active Record모델 확장 (acts_as_yaffle패턴):acts_as_yaffle모듈 정의:ActiveSupport::Concern을 활용하여Yaffle::ActsAsYaffle모듈을 생성합니다. 이 모듈은acts_as_yaffle클래스 메서드를 통해 모델에yaffle_text_field설정을 제공하며, 기본값은:last_squawk입니다.- 테스트 모델 연동:
test/dummy앱에서 필요한Active Record모델(예:Hickwall,Wickwall)을 생성하고 마이그레이션을 수행합니다.ApplicationRecord에Yaffle::ActsAsYaffle을 포함시키고, 각 모델에서acts_as_yaffle을 호출하여 플러그인 기능을 활성화합니다. squawk메서드 구현:Yaffle::ActsAsYaffle모듈의included블록 내에squawk인스턴스 메서드를 구현하여yaffle_text_field에 값을 저장하는 로직을 추가합니다.bin/test를 실행하여acts_as_yaffle패턴에 대한 모든 테스트가 통과하는지 최종 확인합니다.
- 배포 및 문서화:
- 플러그인에
lib/generators디렉토리를 통해 제너레이터를 포함할 수 있습니다. - 개발 중인 플러그인은
Gemfile에서 Git 저장소 경로를 지정하여 공유할 수 있으며, 최종적으로bundle exec rake release명령을 통해 RubyGems에 정식 배포합니다. README파일을 상세히 작성하고,RDoc주석을 활용하여 코드 문서를 생성함으로써 사용자 편의성을 높입니다.
- 플러그인에