Module: MoneyRails::Configuration

Included in:
MoneyRails
Defined in:
lib/money-rails/configuration.rb

Overview

MoneyRails configuration module. This is extended by MoneyRails to provide configuration settings.

Constant Summary collapse

@@include_validations =
true
@@amount_column =
{ postfix: '_cents', type: :integer, null: false, default: 0, present: true }
@@currency_column =
{ postfix: '_currency', type: :string, null: false, default: 'USD', present: true }
@@no_cents_if_whole =
nil
@@symbol =
nil
@@sign_before_symbol =
nil
@@default_format =
nil
@@raise_error_on_money_parsing =
false
@@preserve_user_input =
false

Instance Method Summary collapse

Instance Method Details

#configure {|_self| ... } ⇒ Object

Start a MoneyRails configuration block in an initializer.

example: Provide a default currency for the application

MoneyRails.configure do |config|
  config.default_currency = :eur
end

Yields:

  • (_self)

Yield Parameters:



17
18
19
# File 'lib/money-rails/configuration.rb', line 17

def configure
  yield self
end

#default_currencyObject

Configuration parameters



23
24
25
# File 'lib/money-rails/configuration.rb', line 23

def default_currency
  Money::Currency.new(Money.default_currency)
end

#default_currency=(currency_name) ⇒ Object

Set default currency of money library



28
29
30
31
32
# File 'lib/money-rails/configuration.rb', line 28

def default_currency=(currency_name)
  Money.default_currency = currency_name
  set_amount_column_for_default_currency!
  set_currency_column_for_default_currency!
end

#register_currency=(currency_options) ⇒ Object

Register a custom currency



35
36
37
# File 'lib/money-rails/configuration.rb', line 35

def register_currency=(currency_options)
  Money::Currency.register(currency_options)
end

#rounding_mode=(mode) ⇒ Object

Raises:

  • (ArgumentError)


48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/money-rails/configuration.rb', line 48

def rounding_mode=(mode)
  valid_modes = [
    BigDecimal::ROUND_UP,
    BigDecimal::ROUND_DOWN,
    BigDecimal::ROUND_HALF_UP,
    BigDecimal::ROUND_HALF_DOWN,
    BigDecimal::ROUND_HALF_EVEN,
    BigDecimal::ROUND_CEILING,
    BigDecimal::ROUND_FLOOR
  ]
  raise ArgumentError, "#{mode} is not a valid rounding mode" unless valid_modes.include?(mode)
  Money.rounding_mode = mode
end

#set_amount_column_for_default_currency!Object



39
40
41
# File 'lib/money-rails/configuration.rb', line 39

def set_amount_column_for_default_currency!
  amount_column.merge! postfix: "_#{default_currency.subunit.downcase.pluralize}" if default_currency.subunit
end

#set_currency_column_for_default_currency!Object



43
44
45
46
# File 'lib/money-rails/configuration.rb', line 43

def set_currency_column_for_default_currency!
  iso_code = default_currency.iso_code
  currency_column.merge! default: iso_code
end