gpt4 book ai didi

ruby - 如何将 redmine 插件升级到 rails 5,现在不推荐使用 alias_method_chain

转载 作者:数据小太阳 更新时间:2023-10-29 08:56:24 24 4
gpt4 key购买 nike

故事模式

刚开始学习 RoR,但在短时间内我需要添加类似于 Loading images from LDAP 的功能(不兼容的版本)到我们的项目中。项目被放弃,我找不到任何相关信息/文档,所以我在这里寻求帮助。解决方案、教程,任何东西都可以。

错误日志

$ ruby bin/rake redmine:plugins RAILS_ENV="production"
rake aborted!
NoMethodError: undefined method `alias_method_chain' for ApplicationHelper:Module
Did you mean? alias_method
...

需要更新的猴子补丁

插件\redmine_gemavatar\lib\application_helper_gemavatar_patch.rb:

require 'application_helper'

module GemAvatarPlugin
module ApplicationAvatarPatch
def self.included(base)
base.send(:include, InstanceMethods)
base.class_eval do
alias_method_chain :avatar, :gemavatar
end
end
module InstanceMethods
def avatar_with_gemavatar(user, options = { })
if Setting.gravatar_enabled? && user.is_a?(User)
options.merge!({:ssl => (defined?(request) && request.ssl?), :default => Setting.gravatar_default})
options[:size] = "64" unless options[:size]
avatar_url = url_for :controller => :pictures, :action => :delete, :user_id => user
return "<img class=\"gravatar\" width=\"#{options[:size]}\" height=\"#{options[:size]}\" src=\"#{avatar_url}\" />".html_safe
else
''
end
end
end
end
end

我的尝试/文章

我在这里找到了好文章 How To Replace alias_method_chain ,但我不太确定如何将 prepend 样式应用于 redmine 插件的猴子补丁。只是无法让它工作:/

最佳答案

这与this plugin有关吗? ?

如果是这样,我会这样做:

  • init.rb 文件中,更改:
RedmineApp::Application.config.after_initialize do
ApplicationHelper.send(:include, GemAvatarPlugin::ApplicationAvatarPatch)
end

对此:

RedmineApp::Application.config.after_initialize do
ApplicationHelper.prepend(GemAvatarPlugin::ApplicationAvatarPatch)
end
  • lib/application_helper_gemavatar_patch.rb 中,更改:
require 'application_helper'

module GemAvatarPlugin
module ApplicationAvatarPatch

def self.included(base)
base.send(:include, InstanceMethods)
base.class_eval do
alias_method_chain :avatar, :gemavatar
end
end

module InstanceMethods

def avatar_with_gemavatar(user, options = { })
# method content omitted for clarity
end

end
end
end

为此:

module GemAvatarPlugin
module ApplicationAvatarPatch

def avatar(user, options = { })
# method content omitted for clarity
end

end
end

我会删除 require 'application_helper' 因为我不明白为什么需要它

关于ruby - 如何将 redmine 插件升级到 rails 5,现在不推荐使用 alias_method_chain,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55867376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com