Redmine의 사용자 정의 필드 생성 자동화
-
20-09-2019 - |
문제
나는 꽤 많은 것에 의존 할 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"유형의 "새로운 사용자 정의 필드"를 작성/제거합니다.