Module: Virtus

Defined in:
lib/virtus.rb,
lib/virtus/model.rb,
lib/virtus/builder.rb,
lib/virtus/coercer.rb,
lib/virtus/version.rb,
lib/virtus/attribute.rb,
lib/virtus/extensions.rb,
lib/virtus/value_object.rb,
lib/virtus/attribute_set.rb,
lib/virtus/class_methods.rb,
lib/virtus/configuration.rb,
lib/virtus/attribute/hash.rb,
lib/virtus/support/options.rb,
lib/virtus/attribute/strict.rb,
lib/virtus/class_inclusions.rb,
lib/virtus/instance_methods.rb,
lib/virtus/attribute/boolean.rb,
lib/virtus/attribute/builder.rb,
lib/virtus/attribute/coercer.rb,
lib/virtus/module_extensions.rb,
lib/virtus/support/equalizer.rb,
lib/virtus/attribute/accessor.rb,
lib/virtus/attribute/coercible.rb,
lib/virtus/support/type_lookup.rb,
lib/virtus/attribute/collection.rb,
lib/virtus/builder/hook_context.rb,
lib/virtus/attribute/lazy_default.rb,
lib/virtus/attribute/default_value.rb,
lib/virtus/attribute/nullify_blank.rb,
lib/virtus/attribute/embedded_value.rb,
lib/virtus/const_missing_extensions.rb,
lib/virtus/attribute/default_value/from_symbol.rb,
lib/virtus/attribute/default_value/from_callable.rb,
lib/virtus/attribute/default_value/from_clonable.rb

Overview

Builds a module for…modules

Examples:


module Common
  include Virtus.module

  attribute :name, String
  attribute :age,  Integer
end

class User
  include Common
end

class Admin
  include Common
end

Returns:

  • (Module)

Defined Under Namespace

Modules: ClassInclusions, ClassMethods, ConstMissingExtensions, Extensions, InstanceMethods, Model, ModuleExtensions, Options, TypeLookup, ValueObject Classes: Attribute, AttributeSet, Builder, Coercer, CoercionError, Configuration, Equalizer, ModelBuilder, ModuleBuilder, PendingAttribute, TypeDefinition, ValueObjectBuilder

Constant Summary collapse

EXTRA_CONST_ARGS =
(RUBY_VERSION < '1.9' ? [] : [ false ]).freeze
Undefined =
Object.new.freeze
VERSION =
'1.0.5'.freeze

Class Method Summary collapse

Class Method Details

.coerceObject



109
110
111
# File 'lib/virtus.rb', line 109

def self.coerce
  configuration.coerce
end

.coerce=(value) ⇒ Object



99
100
101
102
# File 'lib/virtus.rb', line 99

def self.coerce=(value)
  configuration.coerce = value
  self
end

.coercer(&block) ⇒ Object



88
89
90
# File 'lib/virtus.rb', line 88

def self.coercer(&block)
  configuration.coercer(&block)
end

.config {|configuration| ... } ⇒ Object

Yields:



123
124
125
126
# File 'lib/virtus.rb', line 123

def self.config(&block)
  yield configuration if block_given?
  configuration
end

.configurationObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Global configuration instance

@ return [Configuration]



206
207
208
# File 'lib/virtus.rb', line 206

def self.configuration
  @configuration ||= Configuration.new
end

.finalizeArray

Finalize pending attributes

Examples:

class User
  include Virtus.model(:finalize => false)

  attribute :address, 'Address'
end

class Address
  include Virtus.model(:finalize => false)

  attribute :user, 'User'
end

Virtus.finalize # this will resolve constant names

Returns:

  • (Array)

    array of finalized models



230
231
232
233
234
# File 'lib/virtus.rb', line 230

def self.finalize
  Builder.pending.each do |klass|
    klass.attribute_set.finalize
  end
end

.model(options = {}, &block) ⇒ Object



151
152
153
# File 'lib/virtus.rb', line 151

def self.model(options = {}, &block)
  ModelBuilder.call(options, &block)
end

.module(options = {}, &block) ⇒ Object



177
178
179
# File 'lib/virtus.rb', line 177

def self.module(options = {}, &block)
  ModuleBuilder.call(options, &block)
end

.value_object(options = {}, &block) ⇒ Module

Builds a module for value object models

Examples:


class GeoLocation
  include Virtus.value_object

  values do
    attribute :lat, Float
    attribute :lng, Float
  end
end

Returns:

  • (Module)


197
198
199
# File 'lib/virtus.rb', line 197

def self.value_object(options = {}, &block)
  ValueObjectBuilder.call(options, &block)
end

.warn(msg) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



237
238
239
# File 'lib/virtus.rb', line 237

def self.warn(msg)
  Kernel.warn(msg)
end