Redmine – Ruby – Buscando el valor de un campo personalizado

Revisé IRC en busca de redmine y no pude obtener ayuda. Estaba en conflicto con el clima para pegar esto en Superusuario, ServerFault o aquí, pero como mi problema está orientado técnicamente a la progtwigción, decidí buscar ayuda aquí.

Tenemos un sistema de repository Mercurial con un diseño basado en proyectos que responden a nuestras necesidades. Escribí algunos scripts de shell que funcionan deliciosamente para administrar el repository y colocarlos en lugares correctos, etc. Estoy intentando llamar a estos scripts y pasar los parámetros de Redmine. Estoy editando la aplicación / controllers / projects_controller.rb (líneas 75 -> 87)

He logrado extraer los parámetros del proyecto y el usuario actual, pero tengo dos campos personalizados que agregué (usando los campos personalizados en la Administración de Redmine) y estoy tratando de acceder a los valores de estos campos personalizados. ¿Alguien tiene alguna idea de cómo puedo obtener estos?

Mi statement de prueba de trabajo actual está abajo:

system "echo '#{@project.identifier}, #{User.current}' >> /tmp/rm.log" 

Utilice el modelo CustomField. Por ejemplo,

  # Find the first Custom Field cf = CustomField.first # Get the name puts cf.name # Find out if this Custom Field is for all projects cf.is_for_all? # If not, find out which projects are using it cf.projects 

Para resolver esto, acabo de instalar Redmine-1.0.0 y hurgué en la fuente y el script / consola.

 use DBI; $dbServer=''; $user=''; $pass=''; $ident=$ARGV[0]; my $dsn = "dbi:mysql:database=redmine;host=$dbServer;port=3306"; my $dbh = DBI->connect($dsn, "$user","$pass") or die "Can't connet to the Database: $DBI::errstr\n"; my $sth = $dbh->prepare("SELECT value FROM custom_values c INNER JOIN projects p ON c.customized_id=p.id WHERE p.identifier='$ident' LIMIT 1"); $sth -> execute(); my @row=$sth->fetchrow_array(); my $serverParams=@row[0]; 

Al llamar a la secuencia de comandos anterior (en lugar de hacer eco en el original) y luego pasar el identificador del proyecto que ya tenemos, el parámetro personalizado se puede usar de cualquier forma nessacary. Este código es para capturar un único campo personalizado (solo estaba usando uno).