Module: Mobility::Backend

Includes:
Enumerable
Included in:
Mobility::Backends::Hash, Mobility::Backends::Null
Defined in:
lib/mobility/backend.rb

Overview

Defines a minimum set of shared components included in any backend. These are:

  • a reader returning the model on which the backend is defined (#model)

  • a reader returning the attribute for which the backend is defined (#attribute)

  • a constructor setting these two elements (model, attribute)

  • a setup method adding any configuration code to the model class (ClassMethods#setup)

On top of this, a backend will normally:

  • implement a read instance method to read from the backend

  • implement a write instance method to write to the backend

  • implement an each_locale instance method to iterate through available locales (used to define other Enumerable traversal and search methods)

  • implement a configure class method to apply any normalization to the options hash

  • call the setup method yielding attributes and options to configure the model class

Examples:

Defining a Backend

class MyBackend
  include Mobility::Backend

  def read(locale, options = {})
    # ...
  end

  def write(locale, value, options = {})
    # ...
  end

  def each_locale
    # ...
  end

  def self.configure(options)
    # ...
  end

  setup do |attributes, options|
    # Do something with attributes and options in context of model class.
  end
end

See Also:

Defined Under Namespace

Modules: ClassMethods Classes: Translation

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#attributeString (readonly)

Returns Backend attribute.

Returns:

  • (String)

    Backend attribute


58
59
60
# File 'lib/mobility/backend.rb', line 58

def attribute
  @attribute
end

#modelObject (readonly)

Returns Model on which backend is defined.

Returns:

  • (Object)

    Model on which backend is defined


61
62
63
# File 'lib/mobility/backend.rb', line 61

def model
  @model
end

Class Method Details

.included(base) ⇒ Object

Extend included class with setup method and other class methods


116
117
118
119
# File 'lib/mobility/backend.rb', line 116

def self.included(base)
  base.extend ClassMethods
  base.singleton_class.attr_reader :options, :model_class
end

Instance Method Details

#each {|Translation| ... } ⇒ Object

Yields translations to block

Yield Parameters:


90
91
92
# File 'lib/mobility/backend.rb', line 90

def each
  each_locale { |locale| yield Translation.new(self, locale) }
end

#each_locale {|Locale| ... } ⇒ Object

Yields locales available for this attribute.

Yield Parameters:

  • Locale (Symbol)

85
86
# File 'lib/mobility/backend.rb', line 85

def each_locale
end

#initialize(*args) ⇒ Object

Parameters:

  • model

    Model on which backend is defined

  • attribute (String)

    Backend attribute


66
67
68
69
# File 'lib/mobility/backend.rb', line 66

def initialize(*args)
  @model = args[0]
  @attribute = args[1]
end

#localesArray<Symbol>

List locales available for this backend.

Returns:

  • (Array<Symbol>)

    Array of available locales


96
97
98
# File 'lib/mobility/backend.rb', line 96

def locales
  map(&:locale)
end

#model_classClass

Returns name of model in which backend is used.

Returns:

  • (Class)

    Model class


# File 'lib/mobility/backend.rb', line 106

#optionsHash

Returns options.

Returns:

  • (Hash)

    options


111
112
113
# File 'lib/mobility/backend.rb', line 111

def options
  self.class.options
end

#present?(locale, options = {}) ⇒ TrueClass, FalseClass

Returns Whether translation is present for locale.

Parameters:

  • locale (Symbol)

    Locale to read

Returns:

  • (TrueClass, FalseClass)

    Whether translation is present for locale


102
103
104
# File 'lib/mobility/backend.rb', line 102

def present?(locale, options = {})
  Util.present?(read(locale, **options))
end