문제

나는 꽤 많은 것에 의존 할 Redmine 용 플러그인을 쓰고 싶습니다. 맞춤형 필드, 그래서 사용자 정의 필드를 자동으로 만들고 싶습니다. 이상적으로 플러그인 코드 내에서 또는 스크립트가 아닌 경우 플러그인을 설치할 때 실행할 수 있습니다. 특히 목록을 설정할 때 웹 인터페이스를 통해 10+ 필드를 만들고 싶지 않습니다. 상당히 값이 있습니다.

이 작업을 수행하는 표준 방법이 있는지 말해 줄 수 있습니까?

또한 기존 설치에서 사용자 정의 필드를 내보낼 수있는 좋은 방법이 있습니까?

도움이 되었습니까?

해결책

마이그레이션 스크립트를 사용해야합니다. 스크립트를 넣으십시오 #{PLUGIN_ROOT}/db/migrate 그리고 전화 .create 거기. Redmine 소스에는 많은 유사한 스크립트가 포함되어 있습니다.

예를 들어, 스크립트의 이름은 다음과 같습니다. 001_populate_custom_fields.rb.

콘텐츠:

class PopulateCustomFields < ActiveRecord::Migration
    def self.up
        CustomField.create ...
    end
    def self.down
    end
end

다른 팁

사용자 정의 필드는 본질적으로 자원으로 거의 구현됩니다 (그러나 Custom_Fields에는 리소스 경로가 없습니다). Customfield.Create/New를 사용하여 플러그인 요구 사항을 생성 할 수 없어야 할 이유가 없습니다. 마찬가지로 기존 사용자 정의 필드를 얻기 위해 find ()를 사용해야합니다. 그러나 나는 전에 이것을 한 번도 해본 적이 없으며 이것이 표준 방법인지 모른다고 말해야합니다. 그러나 손에서, 나는 이런 식으로 그렇게하는 것에 잘못된 것을 볼 수 없습니다.

Andriy Lesyuk가 대답하면서 스크립트를 아래에 올려 놓으십시오 #{PLUGIN_ROOT}/db/migrate 플러그인을 설치/제거하기 위해 명령을 사용하여 테스트하십시오.

플러그인을 설치하려면 명령을 사용합니다.

rake redmine:plugins:migrate

그리고 그것을 제거하기 위해 :

rake redmine:plugins:migrate NAME=<your plugin name> VERSION=0

공무원을 확인하십시오 선적 서류 비치 자세한 내용은.

예를 들어, 스크립트입니다 001_populate_custom_fields.rb 다음과 같은 것일 수 있습니다.

class PopulateCustomFields < ActiveRecord::Migration
  # method called when installing the plugin
  def self.up
    if CustomField.find_by_name('A New Custom Field').nil?
      CustomField.create(name: 'A New Custom Field', field_format: 'text')
    end
  end

  # method called when uninstalling the plugin
  def self.down
    CustomField.find_by_name('A New Custom Field').delete unless CustomField.find_by_name('A New Custom Field').nil?
  end
end

이렇게하면 Redmine 데이터베이스 테이블 Custom_Fields에서 존재를 확인한 후 "Text"유형의 "새로운 사용자 정의 필드"를 작성/제거합니다.

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