Module: Mobility
- Defined in:
- lib/mobility.rb,
lib/mobility/util.rb,
lib/mobility/loaded.rb,
lib/mobility/sequel.rb,
lib/mobility/backend.rb,
lib/mobility/plugins.rb,
lib/mobility/version.rb,
lib/mobility/wrapper.rb,
lib/mobility/backends.rb,
lib/mobility/attributes.rb,
lib/mobility/translates.rb,
lib/mobility/active_model.rb,
lib/mobility/active_record.rb,
lib/mobility/backends/null.rb,
lib/mobility/configuration.rb,
lib/mobility/plugins/cache.rb,
lib/mobility/plugins/dirty.rb,
lib/mobility/backends/jsonb.rb,
lib/mobility/backends/table.rb,
lib/mobility/plugins/sequel.rb,
lib/mobility/backends/column.rb,
lib/mobility/backends/hstore.rb,
lib/mobility/backends/sequel.rb,
lib/mobility/plugins/default.rb,
lib/mobility/backend_resetter.rb,
lib/mobility/plugins/presence.rb,
lib/mobility/plugins/fallbacks.rb,
lib/mobility/backends/key_value.rb,
lib/mobility/sequel/translation.rb,
lib/mobility/backends/serialized.rb,
lib/mobility/backends/hash_valued.rb,
lib/mobility/plugins/active_model.rb,
lib/mobility/plugins/sequel/dirty.rb,
lib/mobility/backend/orm_delegator.rb,
lib/mobility/backends/sequel/jsonb.rb,
lib/mobility/backends/sequel/table.rb,
lib/mobility/plugins/active_record.rb,
lib/mobility/sequel/column_changes.rb,
lib/mobility/backends/active_record.rb,
lib/mobility/backends/sequel/column.rb,
lib/mobility/backends/sequel/hstore.rb,
lib/mobility/backends/sequel/pg_hash.rb,
lib/mobility/sequel/backend_resetter.rb,
lib/mobility/sequel/text_translation.rb,
lib/mobility/backend/stringify_locale.rb,
lib/mobility/plugins/locale_accessors.rb,
lib/mobility/sequel/model_translation.rb,
lib/mobility/active_record/translation.rb,
lib/mobility/backends/sequel/key_value.rb,
lib/mobility/sequel/string_translation.rb,
lib/mobility/backends/sequel/serialized.rb,
lib/mobility/plugins/active_model/dirty.rb,
lib/mobility/plugins/active_record/dirty.rb,
lib/mobility/backends/active_record/jsonb.rb,
lib/mobility/backends/active_record/table.rb,
lib/mobility/active_model/backend_resetter.rb,
lib/mobility/backends/active_record/column.rb,
lib/mobility/backends/active_record/hstore.rb,
lib/mobility/backends/sequel/query_methods.rb,
lib/mobility/plugins/fallthrough_accessors.rb,
lib/mobility/active_record/backend_resetter.rb,
lib/mobility/active_record/text_translation.rb,
lib/mobility/backends/active_record/pg_hash.rb,
lib/mobility/active_record/attribute_methods.rb,
lib/mobility/active_record/model_translation.rb,
lib/mobility/active_record/string_translation.rb,
lib/mobility/backends/active_record/key_value.rb,
lib/mobility/plugins/cache/translation_cacher.rb,
lib/mobility/backends/active_record/serialized.rb,
lib/mobility/active_record/uniqueness_validator.rb,
lib/rails/generators/mobility/install_generator.rb,
lib/mobility/backends/sequel/jsonb/query_methods.rb,
lib/mobility/backends/sequel/table/query_methods.rb,
lib/mobility/backends/active_record/query_methods.rb,
lib/mobility/backends/sequel/column/query_methods.rb,
lib/mobility/backends/sequel/hstore/query_methods.rb,
lib/mobility/backends/sequel/postgres_query_methods.rb,
lib/mobility/backends/sequel/key_value/query_methods.rb,
lib/rails/generators/mobility/translations_generator.rb,
lib/mobility/backends/sequel/serialized/query_methods.rb,
lib/rails/generators/mobility/backend_generators/base.rb,
lib/mobility/backends/active_record/jsonb/query_methods.rb,
lib/mobility/backends/active_record/table/query_methods.rb,
lib/mobility/backends/active_record/column/query_methods.rb,
lib/mobility/backends/active_record/hstore/query_methods.rb,
lib/mobility/backends/active_record/key_value/query_methods.rb,
lib/mobility/backends/active_record/serialized/query_methods.rb,
lib/rails/generators/mobility/backend_generators/table_backend.rb,
lib/rails/generators/mobility/backend_generators/column_backend.rb,
lib/rails/generators/mobility/active_record_migration_compatibility.rb
Overview
Mobility is a gem for storing and retrieving localized data through attributes on a class. The Mobility module includes all necessary methods and modules to support defining backend accessors on a class.
To enable Mobility on a class, simply include or extend the Mobility module,
and define any attribute accessors using Translates#mobility_accessor (aliased to the
value of Mobility.accessor_method, which defaults to translates).
class MyClass
extend Mobility
translates :title, backend: :key_value
end
When defining this module, Mobility attempts to require various gems (for
example, active_record and sequel) to evaluate which are loaded. Loaded
gems are tracked with dynamic subclasses of the Loaded module and referenced
in backends to define gem-dependent behavior.
Defined Under Namespace
Modules: ActiveModel, ActiveRecord, ActiveRecordMigrationCompatibility, Backend, BackendGenerators, Backends, ClassMethods, InstanceMethods, Loaded, Plugins, Sequel, Translates, Util Classes: Attributes, BackendRequired, BackendResetter, Configuration, InstallGenerator, InvalidLocale, TranslationsGenerator, VersionNotSupportedError, Wrapper
Constant Summary collapse
- VERSION =
"0.2.2"
Locale Accessors collapse
-
.locale ⇒ Symbol
Mobility locale.
-
.locale=(locale) ⇒ Symbol
Sets Mobility locale.
-
.with_locale(locale) {|Symbol| ... } ⇒ Object
Sets Mobility locale around block.
Configuration Methods collapse
-
.accessor_method ⇒ Symbol
Alias for mobility_accessor (defaults to
translates) (see Mobility::Configuration#query_method). -
.config ⇒ Mobility::Configuration
Mobility configuration.
-
.configure {|Mobility::Configuration| ... } ⇒ Object
Configure Mobility.
-
.default_accessor_locales ⇒ Hash
Default set of options.
-
.default_backend ⇒ Symbol, Class
Default backend to use (can be symbol or actual backend class).
-
.default_fallbacks ⇒ I18n::Locale::Fallbacks
Default fallbacks instance.
-
.default_options ⇒ Hash
Default set of options.
-
.plugins ⇒ Hash
Default set of options.
-
.query_method ⇒ Symbol
Alias for mobility_accessor (defaults to
translates) (see Mobility::Configuration#query_method).
Class Method Summary collapse
-
.enforce_available_locales!(locale) ⇒ Object
Raises InvalidLocale exception if the locale passed in is present but not available.
- .extended(model_class) ⇒ Object
-
.included(model_class) ⇒ Object
Extends model with this class so that
include Mobilityis equivalent toextend Mobility(butextendis preferred). -
.normalize_locale(locale = Mobility.locale) ⇒ String
(also: normalized_locale)
Return normalized locale.
-
.normalize_locale_accessor(attribute, locale = Mobility.locale) ⇒ String
Return normalized locale accessor name.
-
.storage ⇒ RequestStore
Request store.
Class Method Details
.accessor_method ⇒ Symbol
Alias for mobility_accessor (defaults to translates)
(see Mobility::Configuration#query_method)
|
|
# File 'lib/mobility.rb', line 147
|
.config ⇒ Mobility::Configuration
Returns Mobility configuration.
143 144 145 |
# File 'lib/mobility.rb', line 143 def config @configuration ||= Mobility::Configuration.new end |
.configure {|Mobility::Configuration| ... } ⇒ Object
Configure Mobility
179 180 181 |
# File 'lib/mobility.rb', line 179 def configure yield config end |
.default_accessor_locales ⇒ Hash
Default set of options. These will be merged with any backend options
when defining translated attributes (with translates). Default options
may not include the keys 'backend' or 'model_class'.
(see Mobility::Configuration#plugins)
(see Mobility::Configuration#default_accessor_locales)
167 168 169 170 171 |
# File 'lib/mobility.rb', line 167 %w[accessor_method query_method default_backend default_options plugins default_accessor_locales].each do |method_name| define_method method_name do config.public_send(method_name) end end |
.default_backend ⇒ Symbol, Class
Default backend to use (can be symbol or actual backend class)
|
|
# File 'lib/mobility.rb', line 156
|
.default_fallbacks ⇒ I18n::Locale::Fallbacks
Default fallbacks instance
|
|
# File 'lib/mobility.rb', line 153
|
.default_options ⇒ Hash
Default set of options. These will be merged with any backend options
when defining translated attributes (with translates). Default options
may not include the keys 'backend' or 'model_class'.
(see Mobility::Configuration#plugins)
(see Mobility::Configuration#default_accessor_locales)
167 168 169 170 171 |
# File 'lib/mobility.rb', line 167 %w[accessor_method query_method default_backend default_options plugins default_accessor_locales].each do |method_name| define_method method_name do config.public_send(method_name) end end |
.enforce_available_locales!(locale) ⇒ Object
Raises InvalidLocale exception if the locale passed in is present but not available.
213 214 215 216 217 |
# File 'lib/mobility.rb', line 213 def enforce_available_locales!(locale) if I18n.enforce_available_locales raise Mobility::InvalidLocale.new(locale) unless (I18n.locale_available?(locale) || locale.nil?) end end |
.extended(model_class) ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/mobility.rb', line 80 def extended(model_class) return if model_class.respond_to? :mobility_accessor model_class.include(InstanceMethods) model_class.extend(ClassMethods) if translates = Mobility.config.accessor_method model_class.singleton_class.send(:alias_method, translates, :mobility_accessor) end if Loaded::ActiveRecord model_class.include(ActiveRecord) if model_class < ::ActiveRecord::Base model_class.include(ActiveRecord::AttributeMethods) if model_class.ancestors.include?(::ActiveRecord::AttributeMethods) end if Loaded::Sequel model_class.include(Sequel) if model_class < ::Sequel::Model end end |
.included(model_class) ⇒ Object
Extends model with this class so that include Mobility is equivalent to
extend Mobility (but extend is preferred).
103 104 105 |
# File 'lib/mobility.rb', line 103 def included(model_class) model_class.extend self end |
.locale ⇒ Symbol
Returns Mobility locale.
109 110 111 |
# File 'lib/mobility.rb', line 109 def locale read_locale || I18n.locale end |
.locale=(locale) ⇒ Symbol
Sets Mobility locale
118 119 120 |
# File 'lib/mobility.rb', line 118 def locale=(locale) set_locale(locale) end |
.normalize_locale(locale = Mobility.locale) ⇒ String Also known as: normalized_locale
Return normalized locale
192 193 194 |
# File 'lib/mobility.rb', line 192 def normalize_locale(locale = Mobility.locale) "#{locale.to_s.downcase.sub("-", "_")}".freeze end |
.normalize_locale_accessor(attribute, locale = Mobility.locale) ⇒ String
Return normalized locale accessor name
206 207 208 |
# File 'lib/mobility.rb', line 206 def normalize_locale_accessor(attribute, locale = Mobility.locale) "#{attribute}_#{normalize_locale(locale)}".freeze end |
.plugins ⇒ Hash
Default set of options. These will be merged with any backend options
when defining translated attributes (with translates). Default options
may not include the keys 'backend' or 'model_class'.
(see Mobility::Configuration#plugins)
(see Mobility::Configuration#default_accessor_locales)
167 168 169 170 171 |
# File 'lib/mobility.rb', line 167 %w[accessor_method query_method default_backend default_options plugins default_accessor_locales].each do |method_name| define_method method_name do config.public_send(method_name) end end |
.query_method ⇒ Symbol
Alias for mobility_accessor (defaults to translates)
(see Mobility::Configuration#query_method)
|
|
# File 'lib/mobility.rb', line 147
|
.storage ⇒ RequestStore
Returns Request store.
137 138 139 |
# File 'lib/mobility.rb', line 137 def storage RequestStore.store end |
.with_locale(locale) {|Symbol| ... } ⇒ Object
Sets Mobility locale around block
125 126 127 128 129 130 131 132 133 |
# File 'lib/mobility.rb', line 125 def with_locale(locale) previous_locale = read_locale begin set_locale(locale) yield(locale) ensure set_locale(previous_locale) end end |