Pregunta

Quiero escribir un plugin para Redmine, que dependerá de un buen número de href="http://www.redmine.org/wiki/1/RedmineCustomFields" , así que me gustaría crear los campos personalizados de forma automática. Lo ideal sería que en el código del plugin, o si no mediante una secuencia de comandos que se puede ejecutar al instalar el plugin - yo realmente no quiero tener que crear 10 + campos a través de la interfaz web cuando lo configuran, sobre todo cuando se trata de una lista con un buen número de valores.

Puede alguien decirme si hay alguna manera estándar de hacer esto?

También hay una buena forma de exportar los campos personalizados de una instalación existente?

¿Fue útil?

Solución

Debe utilizar migrar scripts. Ponga sus guiones en #{PLUGIN_ROOT}/db/migrate y llame .create allí. Las fuentes Redmine contienen muchos guiones similares.

Por ejemplo, la secuencia de comandos puede tener un nombre:. 001_populate_custom_fields.rb

Contenido:

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

Otros consejos

Los campos personalizados en esencia son más o menos implementan como un recurso (sin embargo no hay una ruta recurso para custom_fields). No veo una razón por la cual no debería ser capaz de utilizar simplemente CustomField.create / new para crear los campos que necesita su complemento. Del mismo modo que debería ser capaz de usar sólo find () para obtener todos los campos personalizados existentes. Sin embargo, tengo que decir que nunca he hecho esto antes y no sé si esta es la manera estándar. Pero, fuera de la mano, no puedo ver nada malo en hacerlo de esta manera.

Como respondió Andriy Lesyuk, poner su guión bajo #{PLUGIN_ROOT}/db/migrate y comprobarlo utilizando el comando para instalar / desinstalar el plugin.

Para instalar el plug-in utilizar el comando:

rake redmine:plugins:migrate

y para desinstalarlo:

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

Comprobar el funcionario para más detalles.

Por ejemplo, el 001_populate_custom_fields.rb guión podría ser algo como:

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

Esto creará / eliminar el campo personalizado "Un campo personalizado nuevo" de tipo "texto", después de comprobar su existencia a partir de los custom_fields tabla de base de Redmine.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top