Sha256: 53a6613d3c0a718d3271fcf33f6d4aa0a680b6c29ea52bf4f314443cee251d2f

Contents?: true

Size: 1.38 KB

Versions: 1

Compression:

Stored size: 1.38 KB

Contents

#!/usr/bin/env ruby

require "bundler/setup"
require "usable"

# You can add fixtures and/or initialization code here to make experimenting
# with your gem easier. You can also use a different console, if you like.

# (If you use this, don't forget to add pry to your Gemfile!)
# require "pry"
# Pry.start

module VersionMixin
  def save_version
    "Saving up to #{usables.max_versions} versions to #{usables.table_name}"
  end

  def destroy_version
    "Deleting versions from #{usables.table_name}"
  end
end

module Mixin
  extend Usable
  usables[:max_versions] = 20

  def name
    "defined by Mixin"
  end

  def from_mixin
    "always here"
  end

  # @description Usable will apply the :only to just the methods defined by this module
  module UsableSpec
    def from_spec
      "can be excluded"
    end

    def name
      "defined by UsableSpec"
    end
  end
end

class Model
  extend Usable

  usable VersionMixin, only: :save_version do
    max_versions 10
    table_name 'custom_versions'
  end

  def save
    usable_method(:save_version).call
  end
end

module PersistenceOverride
  def save
    'nope'
  end
end

module Nested
  module Extension
    def go
      'going'
    end
  end
end

class Example
  extend Usable
  usable Mixin
  usable VersionMixin do
    max_versions 10
  end
  usable Nested::Extension
end

Model.usable PersistenceOverride, method: 'prepend'

require "irb"

IRB.start

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
usable-2.0.0 bin/console