Need help with extending a plugin

hey folks

I’ve installed the plugin acts_as_taggable_on_steroids (henceforth
aatos), and i already have some tagging functionality set up, using the
same approach (ie a Tag and a Tagging class with associated tables) as
aatos.

So, i want my existing Tag and Taggings methods, plus some other methods
i have in a module which i include with the taggable classes (ie the
ones that would call acts_as_taggable now) to be overlaid on top of the
aatos ones (i’ll probably end up deleting some of them because they
replicate aatos methods).

I’ve got part of the way there by basically moving my own methods into a
lib file (taggable_extensions.rb) which mirrors the acts_as_x plugin
setup, and so in my taggable classes i now say

acts_as_taggable
include TaggableExtensions

This is fine for those classes, although it would be nice if there was
some way i could get aatos to automatically use these exensions without
going in and hacking the plugin.

However, i’m not sure what to do with my Tag and Tagging class methods.
Should i put those in the same module, in taggable_extensions? If so
then how do i get them to be loaded? I guess these two questions are
the same, ie “Can i push some modules into a plugin on startup without
changing the plugin code?”

I have the feeling i’m missing something obvious and i can just push
everything in taggable_extensions into the aatos plugin, from inside
taggable_extensions. I just don’t know how.

Here’s what my current taggable_extensions.rb looks like

module ActiveRecord
module Acts

module TaggableExtras
  def self.included(base)
    base.extend(ClassMethods)
  end

  module ClassMethods
    def acts_as_taggable_extras(options = {})
      include ActiveRecord::Acts::TaggableExtras::InstanceMethods
      extend ActiveRecord::Acts::TaggableExtras::SingletonMethods
    end
  end

  module SingletonMethods
    #nothing here yet
  end

  module InstanceMethods
    #...some instance methods here, added to taggables
  end

end

end
end

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs