У меня запущена установка Redmine 3.4.4, в которой используются Ruby 2.2.5-p319 и Rails 4.2.8. Мы хотим обновить его до последней версии Redmine (в настоящее время 4.0.4), для которой требуется Rails 5.
Я запускаю новый сервер, используя 4.0.4, используя Ruby 2.6.3-p62 и Rails 5.2.3. В целом все в порядке, но у нас установлено несколько плагинов, которые мы хотели бы перенести. У многих из них были проблемы из-за устаревания в Rails 5. Мне удалось разобраться с 8 из 9 плагинов, хотя я раньше не писал Ruby on Rails, но я застрял на последнем и просто не могу понять.
Плагин является плагином настройки моей страницы, и когда я пытаюсь перенести базу данных и плагины, я получаю эту ошибку:
[centos@redmine]$ bundle exec rake db:migrate RAILS_ENV=production
rake aborted!
NoMethodError: undefined method `alias_method_chain' for ActivitiesController:Class
Did you mean? alias_method
/usr/local/src/redmine-4.0.4/plugins/redmine_my_page/lib/my_page_patches/activities_controller_patch.rb:11:in `block in included'
/usr/local/src/redmine-4.0.4/plugins/redmine_my_page/lib/my_page_patches/activities_controller_patch.rb:7:in `class_eval'
/usr/local/src/redmine-4.0.4/plugins/redmine_my_page/lib/my_page_patches/activities_controller_patch.rb:7:in `included'
/usr/local/src/redmine-4.0.4/plugins/redmine_my_page/init.rb:30:in `include'
/usr/local/src/redmine-4.0.4/plugins/redmine_my_page/init.rb:30:in `block (2 levels) in <top (required)>'
Итак, ясно, что проблема здесь в устаревшем 'alias_method_chain'
. После некоторого поиска я нашел много ссылок в Интернете, таких как этот тот, который хорош и понятен, но я просто не могу написать работающий код - я продолжаю получать синтаксические ошибки и не могу понять, что я делаю неправильно.
Это оригинальный фрагмент из activities_controller_patch.rb:
module ActivitiesControllerPatch
def self.included(base) # :nodoc:
base.send(:include, InstanceMethods)
base.class_eval do
unloadable
helper :issues
helper :queries
alias_method_chain :index, :esi
end
end
Мы хотели бы сохранить этот плагин, если сможем, хотя он официально не поддерживает Redmine 4. Я надеюсь, что кто-то с лучшим знанием Ruby сможет помочь.