Обновите безопасный способ добавить действие контроллера в Redmine 4 - PullRequest
0 голосов
/ 26 марта 2020

У меня есть задача добавить пользовательскую функциональность в модуль проектов в Redmine 4. Я попытался добавить в core app / project_controller.rb.Можно ли вы помочь мне с правильным способом добавления нового метода безопасным способом обновления.

Ответы [ 2 ]

0 голосов
/ 29 марта 2020

Я согласен с ответом Александра . Но я бы добавил несколько заметок:

  • Я уверен, что для этого нужно запустить плагин
  • Учитывая все возможности расширения Redmine, Tutorial очень неполный
  • Я бы позаботился перед тем, как приступить к обучению. У меня были некоторые проблемы, кажется устаревшие , но все еще полезная ссылка
  • Вы можете найти или опубликовать sh плагины на Redmine , но эта страница немного странная

Сначала я нашел Документы о Redmine, которые очень полезны для всего видения кода. К сожалению, в Redmine есть немного комментариев к коду, большая ошибка на мой взгляд.

Я думаю, вам нужно использовать следующую структуру:

Файл init.rb вашего плагина должен внедрить код в Project Redmine или любую модель / класс, которую вам нужно переопределить, например, так: :

require 'redmine'

# code injection
ActionDispatch::Reloader.to_prepare do
  require 'my_file'   # but the file is actually lib/my_file.rb
  Project.send :include, MyFile
end

Redmine::Plugin.register :myproject do
name 'My New Project Plugin'
# ... the rest of your config
end

Как только вам потребуется 'my_file' в init.rb , он должен находиться в каталоге lib (lib / my_file.rb) . Итак, дерево вашего плагина должно быть:

   -myproject
     -app
     -config
     -db
     -lib
       my_file.rb
     -test

'my_file' - это модуль, подобный следующему:

module MyFile
  extend ActiveSupport::Concern

  included do
    # put your code here

  end
end

Ваш модуль может переопределять методы в Project. Если вы : включите модуль с тем же методом в модель Project, ваш код перезапишет код ядра.

Существует устаревший способ переопределить методы, которые я рекомендую в качестве справочной информации, хотя мне нужно исправить это в моем плагине: alias_method_chain .

Что ж, кодирование Ruby, Ruby на Rails и плагинах для Redmine - это что-то новое для меня и немного проблем, поэтому я предлагаю вам посчитать это хорошим советом, которого у меня никогда не было!

И последнее, но не менее важное: зарегистрируйтесь на https://www.redmine.org и пользуйтесь форумами. Прочитайте все ссылки в https://www.redmine.org/projects/redmine/wiki/Developer_Guide.

Хорошая работа.

0 голосов
/ 27 марта 2020

Правильный способ добавить новые методы в Redmine - создать для него плагины.

Разработка плагинов описана в вики проекта:

https://www.redmine.org/projects/redmine/wiki/Plugin_Tutorial

Если вы создаете плагин, если он может быть полезным для открытия, Исходное сообщество, вы можете опубликовать sh на github и указать в каталоге плагинов Redmine:

https://www.redmine.org/plugins

...