mongoid_money 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE.txt +20 -0
 - data/README.rdoc +19 -0
 - data/lib/mongoid_money/conversions.rb +24 -0
 - data/lib/mongoid_money/money.rb +180 -0
 - data/lib/mongoid_money.rb +2 -0
 - data/spec/conversion_spec.rb +34 -0
 - data/spec/money_spec.rb +111 -0
 - data/spec/spec_helper.rb +32 -0
 - data/spec/support/dummy_money.rb +7 -0
 - metadata +191 -0
 
    
        data/LICENSE.txt
    ADDED
    
    | 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Copyright (c) 2011 Jeff Bozek
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Permission is hereby granted, free of charge, to any person obtaining
         
     | 
| 
      
 4 
     | 
    
         
            +
            a copy of this software and associated documentation files (the
         
     | 
| 
      
 5 
     | 
    
         
            +
            "Software"), to deal in the Software without restriction, including
         
     | 
| 
      
 6 
     | 
    
         
            +
            without limitation the rights to use, copy, modify, merge, publish,
         
     | 
| 
      
 7 
     | 
    
         
            +
            distribute, sublicense, and/or sell copies of the Software, and to
         
     | 
| 
      
 8 
     | 
    
         
            +
            permit persons to whom the Software is furnished to do so, subject to
         
     | 
| 
      
 9 
     | 
    
         
            +
            the following conditions:
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            The above copyright notice and this permission notice shall be
         
     | 
| 
      
 12 
     | 
    
         
            +
            included in all copies or substantial portions of the Software.
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
         
     | 
| 
      
 15 
     | 
    
         
            +
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         
     | 
| 
      
 16 
     | 
    
         
            +
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
         
     | 
| 
      
 17 
     | 
    
         
            +
            NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
         
     | 
| 
      
 18 
     | 
    
         
            +
            LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
         
     | 
| 
      
 19 
     | 
    
         
            +
            OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         
     | 
| 
      
 20 
     | 
    
         
            +
            WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         
     | 
    
        data/README.rdoc
    ADDED
    
    | 
         @@ -0,0 +1,19 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            = mongoid_money
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Description goes here.
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            == Contributing to mongoid_money
         
     | 
| 
      
 6 
     | 
    
         
            +
             
         
     | 
| 
      
 7 
     | 
    
         
            +
            * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
         
     | 
| 
      
 8 
     | 
    
         
            +
            * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
         
     | 
| 
      
 9 
     | 
    
         
            +
            * Fork the project
         
     | 
| 
      
 10 
     | 
    
         
            +
            * Start a feature/bugfix branch
         
     | 
| 
      
 11 
     | 
    
         
            +
            * Commit and push until you are happy with your contribution
         
     | 
| 
      
 12 
     | 
    
         
            +
            * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
         
     | 
| 
      
 13 
     | 
    
         
            +
            * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            == Copyright
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            Copyright (c) 2011 Jeff Bozek. See LICENSE.txt for
         
     | 
| 
      
 18 
     | 
    
         
            +
            further details.
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,24 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Mongoid
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Extensions
         
     | 
| 
      
 3 
     | 
    
         
            +
                module Money
         
     | 
| 
      
 4 
     | 
    
         
            +
                  module Conversions
         
     | 
| 
      
 5 
     | 
    
         
            +
                    def set(value)
         
     | 
| 
      
 6 
     | 
    
         
            +
                      return nil if value.blank?
         
     | 
| 
      
 7 
     | 
    
         
            +
                      begin
         
     | 
| 
      
 8 
     | 
    
         
            +
                        value.cents
         
     | 
| 
      
 9 
     | 
    
         
            +
                      rescue
         
     | 
| 
      
 10 
     | 
    
         
            +
                        value
         
     | 
| 
      
 11 
     | 
    
         
            +
                      end
         
     | 
| 
      
 12 
     | 
    
         
            +
                    end
         
     | 
| 
      
 13 
     | 
    
         
            +
                    def get(value)
         
     | 
| 
      
 14 
     | 
    
         
            +
                      return nil if value.blank?
         
     | 
| 
      
 15 
     | 
    
         
            +
                      begin
         
     | 
| 
      
 16 
     | 
    
         
            +
                        self.new_from_cents value
         
     | 
| 
      
 17 
     | 
    
         
            +
                      rescue
         
     | 
| 
      
 18 
     | 
    
         
            +
                        nil
         
     | 
| 
      
 19 
     | 
    
         
            +
                      end
         
     | 
| 
      
 20 
     | 
    
         
            +
                    end
         
     | 
| 
      
 21 
     | 
    
         
            +
                  end
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,180 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class Money < Numeric
         
     | 
| 
      
 2 
     | 
    
         
            +
              extend Mongoid::Extensions::Money::Conversions
         
     | 
| 
      
 3 
     | 
    
         
            +
              include Comparable
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              attr_reader :cents
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              def self.new_from_dollars(value)
         
     | 
| 
      
 8 
     | 
    
         
            +
                case value
         
     | 
| 
      
 9 
     | 
    
         
            +
                  when Fixnum
         
     | 
| 
      
 10 
     | 
    
         
            +
                    Money.new(value * 100)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  when BigDecimal
         
     | 
| 
      
 12 
     | 
    
         
            +
                    Money.new((value * 100).fix)
         
     | 
| 
      
 13 
     | 
    
         
            +
                  when Float
         
     | 
| 
      
 14 
     | 
    
         
            +
                    Money.new((BigDecimal.new(value.to_s) * 100).fix)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  when Numeric
         
     | 
| 
      
 16 
     | 
    
         
            +
                    Money.new((BigDecimal.new(value.to_s) * 100).fix)
         
     | 
| 
      
 17 
     | 
    
         
            +
                  when String
         
     | 
| 
      
 18 
     | 
    
         
            +
                    Money.new((BigDecimal.new(value.to_s) * 100).fix)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  else
         
     | 
| 
      
 20 
     | 
    
         
            +
                    raise ArgumentError, "#{value} must be a numeric object or a string representation of a number."
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
              def self.new_from_cents(cents)
         
     | 
| 
      
 25 
     | 
    
         
            +
                Money.new cents.round.to_i
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
              def initialize(cents)
         
     | 
| 
      
 29 
     | 
    
         
            +
                @cents = cents.round.to_i
         
     | 
| 
      
 30 
     | 
    
         
            +
              end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
              def dollars
         
     | 
| 
      
 33 
     | 
    
         
            +
                (BigDecimal.new(cents.to_s) / 100 ).to_f
         
     | 
| 
      
 34 
     | 
    
         
            +
              end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
              def ==(other_money)
         
     | 
| 
      
 37 
     | 
    
         
            +
                if other_money.respond_to?(:to_money)
         
     | 
| 
      
 38 
     | 
    
         
            +
                  other_money = other_money.to_money
         
     | 
| 
      
 39 
     | 
    
         
            +
                  cents == other_money.cents
         
     | 
| 
      
 40 
     | 
    
         
            +
                else
         
     | 
| 
      
 41 
     | 
    
         
            +
                  false
         
     | 
| 
      
 42 
     | 
    
         
            +
                end
         
     | 
| 
      
 43 
     | 
    
         
            +
              end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
              def eql?(other_money)
         
     | 
| 
      
 46 
     | 
    
         
            +
                self == other_money
         
     | 
| 
      
 47 
     | 
    
         
            +
              end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
              def hash
         
     | 
| 
      
 50 
     | 
    
         
            +
                cents.hash
         
     | 
| 
      
 51 
     | 
    
         
            +
              end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
              def <=>(other_money)
         
     | 
| 
      
 54 
     | 
    
         
            +
                if other_money.respond_to?(:to_money)
         
     | 
| 
      
 55 
     | 
    
         
            +
                  other_money = other_money.to_money
         
     | 
| 
      
 56 
     | 
    
         
            +
                  cents <=> other_money.cents
         
     | 
| 
      
 57 
     | 
    
         
            +
                else
         
     | 
| 
      
 58 
     | 
    
         
            +
                  raise ArgumentError, "Comparison of #{self.class} with #{other_money.inspect} failed"
         
     | 
| 
      
 59 
     | 
    
         
            +
                end
         
     | 
| 
      
 60 
     | 
    
         
            +
              end
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
              def +(other_money)
         
     | 
| 
      
 63 
     | 
    
         
            +
                Money.new(cents + other_money.cents)
         
     | 
| 
      
 64 
     | 
    
         
            +
              end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
              def -(other_money)
         
     | 
| 
      
 67 
     | 
    
         
            +
                Money.new(cents - other_money.cents)
         
     | 
| 
      
 68 
     | 
    
         
            +
              end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
              def *(value)
         
     | 
| 
      
 71 
     | 
    
         
            +
                if value.is_a?(Money)
         
     | 
| 
      
 72 
     | 
    
         
            +
                  raise ArgumentError, "Can't multiply a Money by a Money"
         
     | 
| 
      
 73 
     | 
    
         
            +
                else
         
     | 
| 
      
 74 
     | 
    
         
            +
                  Money.new(cents * value)
         
     | 
| 
      
 75 
     | 
    
         
            +
                end
         
     | 
| 
      
 76 
     | 
    
         
            +
              end
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
              def /(value)
         
     | 
| 
      
 79 
     | 
    
         
            +
                if value.is_a?(Money)
         
     | 
| 
      
 80 
     | 
    
         
            +
                  (cents / BigDecimal.new(value.cents.to_s)).to_f
         
     | 
| 
      
 81 
     | 
    
         
            +
                else
         
     | 
| 
      
 82 
     | 
    
         
            +
                  Money.new(cents / value)
         
     | 
| 
      
 83 
     | 
    
         
            +
                end
         
     | 
| 
      
 84 
     | 
    
         
            +
              end
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
              def div(value)
         
     | 
| 
      
 87 
     | 
    
         
            +
                self / value
         
     | 
| 
      
 88 
     | 
    
         
            +
              end
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
              def divmod(val)
         
     | 
| 
      
 91 
     | 
    
         
            +
                if val.is_a?(Money)
         
     | 
| 
      
 92 
     | 
    
         
            +
                  a = self.cents
         
     | 
| 
      
 93 
     | 
    
         
            +
                  b = val.cents
         
     | 
| 
      
 94 
     | 
    
         
            +
                  q, m = a.divmod(b)
         
     | 
| 
      
 95 
     | 
    
         
            +
                  return [q, Money.new(m)]
         
     | 
| 
      
 96 
     | 
    
         
            +
                else
         
     | 
| 
      
 97 
     | 
    
         
            +
                  return [self.div(val), Money.new(self.cents.modulo(val))]
         
     | 
| 
      
 98 
     | 
    
         
            +
                end
         
     | 
| 
      
 99 
     | 
    
         
            +
              end
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
              def modulo(val)
         
     | 
| 
      
 102 
     | 
    
         
            +
                self.divmod(val)[1]
         
     | 
| 
      
 103 
     | 
    
         
            +
              end
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
              def %(val)
         
     | 
| 
      
 106 
     | 
    
         
            +
                self.modulo(val)
         
     | 
| 
      
 107 
     | 
    
         
            +
              end
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
              def remainder(val)
         
     | 
| 
      
 110 
     | 
    
         
            +
                a, b = self, val
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
                a_sign, b_sign = :pos, :pos
         
     | 
| 
      
 113 
     | 
    
         
            +
                a_sign = :neg if a.cents < 0
         
     | 
| 
      
 114 
     | 
    
         
            +
                b_sign = :neg if (b.is_a?(Money) and b.cents < 0) or (b < 0)
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
                return a.modulo(b) if a_sign == b_sign
         
     | 
| 
      
 117 
     | 
    
         
            +
                a.modulo(b) - (b.is_a?(Money) ? b : Money.new(b))
         
     | 
| 
      
 118 
     | 
    
         
            +
              end
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
              def abs
         
     | 
| 
      
 121 
     | 
    
         
            +
                Money.new(self.cents.abs)
         
     | 
| 
      
 122 
     | 
    
         
            +
              end
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
              def zero?
         
     | 
| 
      
 125 
     | 
    
         
            +
                cents == 0
         
     | 
| 
      
 126 
     | 
    
         
            +
              end
         
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
      
 128 
     | 
    
         
            +
              def nonzero?
         
     | 
| 
      
 129 
     | 
    
         
            +
                cents != 0 ? self : nil
         
     | 
| 
      
 130 
     | 
    
         
            +
              end
         
     | 
| 
      
 131 
     | 
    
         
            +
             
     | 
| 
      
 132 
     | 
    
         
            +
              def to_money
         
     | 
| 
      
 133 
     | 
    
         
            +
                self
         
     | 
| 
      
 134 
     | 
    
         
            +
              end
         
     | 
| 
      
 135 
     | 
    
         
            +
             
     | 
| 
      
 136 
     | 
    
         
            +
              def inspect
         
     | 
| 
      
 137 
     | 
    
         
            +
                to_s
         
     | 
| 
      
 138 
     | 
    
         
            +
              end
         
     | 
| 
      
 139 
     | 
    
         
            +
             
     | 
| 
      
 140 
     | 
    
         
            +
              def odd?
         
     | 
| 
      
 141 
     | 
    
         
            +
                @cents%2 > 0
         
     | 
| 
      
 142 
     | 
    
         
            +
              end
         
     | 
| 
      
 143 
     | 
    
         
            +
             
     | 
| 
      
 144 
     | 
    
         
            +
              def even?
         
     | 
| 
      
 145 
     | 
    
         
            +
                @cents%2 == 0
         
     | 
| 
      
 146 
     | 
    
         
            +
              end
         
     | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
      
 148 
     | 
    
         
            +
              def to_s
         
     | 
| 
      
 149 
     | 
    
         
            +
                dollars.to_s
         
     | 
| 
      
 150 
     | 
    
         
            +
              end
         
     | 
| 
      
 151 
     | 
    
         
            +
             
     | 
| 
      
 152 
     | 
    
         
            +
              def to_f
         
     | 
| 
      
 153 
     | 
    
         
            +
                dollars
         
     | 
| 
      
 154 
     | 
    
         
            +
              end
         
     | 
| 
      
 155 
     | 
    
         
            +
             
     | 
| 
      
 156 
     | 
    
         
            +
              def coerce(other)
         
     | 
| 
      
 157 
     | 
    
         
            +
                return other, to_f
         
     | 
| 
      
 158 
     | 
    
         
            +
              end
         
     | 
| 
      
 159 
     | 
    
         
            +
             
     | 
| 
      
 160 
     | 
    
         
            +
            end
         
     | 
| 
      
 161 
     | 
    
         
            +
             
     | 
| 
      
 162 
     | 
    
         
            +
            class Numeric
         
     | 
| 
      
 163 
     | 
    
         
            +
             
     | 
| 
      
 164 
     | 
    
         
            +
              def dollar
         
     | 
| 
      
 165 
     | 
    
         
            +
                dollars
         
     | 
| 
      
 166 
     | 
    
         
            +
              end
         
     | 
| 
      
 167 
     | 
    
         
            +
             
     | 
| 
      
 168 
     | 
    
         
            +
              def dollars
         
     | 
| 
      
 169 
     | 
    
         
            +
                Money.new_from_dollars self
         
     | 
| 
      
 170 
     | 
    
         
            +
              end
         
     | 
| 
      
 171 
     | 
    
         
            +
             
     | 
| 
      
 172 
     | 
    
         
            +
              def cent
         
     | 
| 
      
 173 
     | 
    
         
            +
                cents
         
     | 
| 
      
 174 
     | 
    
         
            +
              end
         
     | 
| 
      
 175 
     | 
    
         
            +
             
     | 
| 
      
 176 
     | 
    
         
            +
              def cents
         
     | 
| 
      
 177 
     | 
    
         
            +
                Money.new_from_cents self
         
     | 
| 
      
 178 
     | 
    
         
            +
              end
         
     | 
| 
      
 179 
     | 
    
         
            +
             
     | 
| 
      
 180 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,34 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe Mongoid::Extensions::Money::Conversions do
         
     | 
| 
      
 4 
     | 
    
         
            +
              
         
     | 
| 
      
 5 
     | 
    
         
            +
              describe 'when persisting a document with a Money datatype' do
         
     | 
| 
      
 6 
     | 
    
         
            +
              
         
     | 
| 
      
 7 
     | 
    
         
            +
                it 'should be persisted normally when set as dollars' do
         
     | 
| 
      
 8 
     | 
    
         
            +
                  dummy = DummyMoney.new
         
     | 
| 
      
 9 
     | 
    
         
            +
                  dummy.price = 10.dollars
         
     | 
| 
      
 10 
     | 
    
         
            +
                  dummy.save.should eq true
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
                
         
     | 
| 
      
 13 
     | 
    
         
            +
                it 'should be persisted normally when set as cents' do
         
     | 
| 
      
 14 
     | 
    
         
            +
                  dummy = DummyMoney.new
         
     | 
| 
      
 15 
     | 
    
         
            +
                  dummy.price = 99.cents
         
     | 
| 
      
 16 
     | 
    
         
            +
                  dummy.save.should eq true
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
                
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
              
         
     | 
| 
      
 21 
     | 
    
         
            +
              describe 'when accessing a document from the datastore with a Money datatype' do
         
     | 
| 
      
 22 
     | 
    
         
            +
                
         
     | 
| 
      
 23 
     | 
    
         
            +
                before(:each) do
         
     | 
| 
      
 24 
     | 
    
         
            +
                  DummyMoney.create(:description => "Test", :price => 9.dollars)
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
                
         
     | 
| 
      
 27 
     | 
    
         
            +
                it 'should have a Money value that matches the money value that was initially persisted' do
         
     | 
| 
      
 28 
     | 
    
         
            +
                  dummy = DummyMoney.first
         
     | 
| 
      
 29 
     | 
    
         
            +
                  dummy.price.should eq 9.dollars
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
                
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/money_spec.rb
    ADDED
    
    | 
         @@ -0,0 +1,111 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe Money do
         
     | 
| 
      
 4 
     | 
    
         
            +
              
         
     | 
| 
      
 5 
     | 
    
         
            +
              describe "#==" do
         
     | 
| 
      
 6 
     | 
    
         
            +
                it 'should identify equal dollar values correctly' do
         
     | 
| 
      
 7 
     | 
    
         
            +
                  (10.dollars == Money.new_from_dollars(10)).should eq true
         
     | 
| 
      
 8 
     | 
    
         
            +
                  (10.dollars == 10.dollars).should eq true
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
                
         
     | 
| 
      
 11 
     | 
    
         
            +
                it 'should identify equal monetary values correctly' do
         
     | 
| 
      
 12 
     | 
    
         
            +
                  (10.dollars == Money.new_from_cents(10 * 100)).should eq true
         
     | 
| 
      
 13 
     | 
    
         
            +
                  (10.dollars == 1000.cents).should eq true
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
              
         
     | 
| 
      
 17 
     | 
    
         
            +
              describe "#eql?" do
         
     | 
| 
      
 18 
     | 
    
         
            +
                it 'should identify equal dollar values correctly' do
         
     | 
| 
      
 19 
     | 
    
         
            +
                  (10.dollars.eql?(Money.new_from_dollars(10))).should eq true
         
     | 
| 
      
 20 
     | 
    
         
            +
                  (10.dollars.eql?(10.dollars)).should eq true
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
                
         
     | 
| 
      
 23 
     | 
    
         
            +
                it 'should identify equal monetary values correctly' do
         
     | 
| 
      
 24 
     | 
    
         
            +
                  (10.dollars.eql?(Money.new_from_cents(10 * 100))).should eq true
         
     | 
| 
      
 25 
     | 
    
         
            +
                  (10.dollars.eql?(1000.cents)).should eq true
         
     | 
| 
      
 26 
     | 
    
         
            +
                end
         
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
              
         
     | 
| 
      
 29 
     | 
    
         
            +
              describe "#<=>" do
         
     | 
| 
      
 30 
     | 
    
         
            +
                it 'should find that 10 dollars is greater than 5 dollars' do
         
     | 
| 
      
 31 
     | 
    
         
            +
                  (10.dollars <=> 5.dollars).should eq 1
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
                
         
     | 
| 
      
 34 
     | 
    
         
            +
                it 'should find that 5 dollars is less than 10 dollars' do
         
     | 
| 
      
 35 
     | 
    
         
            +
                  (5.dollars <=> 10.dollars).should eq -1
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
                
         
     | 
| 
      
 38 
     | 
    
         
            +
                it 'should raise an error when Money is compared to non-money' do
         
     | 
| 
      
 39 
     | 
    
         
            +
                  expect{ 5.dollars <=> 500}.to raise_error(ArgumentError, "Comparison of Money with 500 failed")
         
     | 
| 
      
 40 
     | 
    
         
            +
                end
         
     | 
| 
      
 41 
     | 
    
         
            +
              end
         
     | 
| 
      
 42 
     | 
    
         
            +
              
         
     | 
| 
      
 43 
     | 
    
         
            +
              describe "#+" do
         
     | 
| 
      
 44 
     | 
    
         
            +
                it 'should add 10 dollars and 5 dollars and get 15 dollars' do
         
     | 
| 
      
 45 
     | 
    
         
            +
                  (10.dollars + 5.dollars).should eq 15.dollars
         
     | 
| 
      
 46 
     | 
    
         
            +
                end
         
     | 
| 
      
 47 
     | 
    
         
            +
                
         
     | 
| 
      
 48 
     | 
    
         
            +
                it 'should add 10 dollars and 200 cents and get 12 dollars' do
         
     | 
| 
      
 49 
     | 
    
         
            +
                  (10.dollars + 200.cents).should eq 12.dollars
         
     | 
| 
      
 50 
     | 
    
         
            +
                end
         
     | 
| 
      
 51 
     | 
    
         
            +
                
         
     | 
| 
      
 52 
     | 
    
         
            +
                it 'should add 50 cents and 200 cents and get 250 cents' do
         
     | 
| 
      
 53 
     | 
    
         
            +
                  (50.cents + 200.cents).should eq 250.cents
         
     | 
| 
      
 54 
     | 
    
         
            +
                end
         
     | 
| 
      
 55 
     | 
    
         
            +
              end
         
     | 
| 
      
 56 
     | 
    
         
            +
              
         
     | 
| 
      
 57 
     | 
    
         
            +
              describe "#-" do
         
     | 
| 
      
 58 
     | 
    
         
            +
                it 'should subtract 5 dollars from 15 dollars and get 10 dollars' do
         
     | 
| 
      
 59 
     | 
    
         
            +
                  (15.dollars - 5.dollars).should eq 10.dollars
         
     | 
| 
      
 60 
     | 
    
         
            +
                end
         
     | 
| 
      
 61 
     | 
    
         
            +
                
         
     | 
| 
      
 62 
     | 
    
         
            +
                it 'should subtract 200 cents from 12 dollars and get 10 dollars' do
         
     | 
| 
      
 63 
     | 
    
         
            +
                  (12.dollars - 200.cents).should eq 10.dollars
         
     | 
| 
      
 64 
     | 
    
         
            +
                end
         
     | 
| 
      
 65 
     | 
    
         
            +
                
         
     | 
| 
      
 66 
     | 
    
         
            +
                it 'should subtract 50 cents from 200 cents and get 150 cents' do
         
     | 
| 
      
 67 
     | 
    
         
            +
                  (200.cents - 50.cents).should eq 150.cents
         
     | 
| 
      
 68 
     | 
    
         
            +
                end
         
     | 
| 
      
 69 
     | 
    
         
            +
              end
         
     | 
| 
      
 70 
     | 
    
         
            +
              
         
     | 
| 
      
 71 
     | 
    
         
            +
              describe "#*" do
         
     | 
| 
      
 72 
     | 
    
         
            +
                it 'should multiply 10 dollars by 3 and get 30 dollars' do
         
     | 
| 
      
 73 
     | 
    
         
            +
                  (10.dollars * 3).should eq 30.dollars
         
     | 
| 
      
 74 
     | 
    
         
            +
                end
         
     | 
| 
      
 75 
     | 
    
         
            +
                
         
     | 
| 
      
 76 
     | 
    
         
            +
                it 'should raise an error when Money is multiplied by money' do
         
     | 
| 
      
 77 
     | 
    
         
            +
                  expect{ 5.dollars * 5.dollars}.to raise_error(ArgumentError, "Can't multiply a Money by a Money")
         
     | 
| 
      
 78 
     | 
    
         
            +
                end
         
     | 
| 
      
 79 
     | 
    
         
            +
              end
         
     | 
| 
      
 80 
     | 
    
         
            +
              
         
     | 
| 
      
 81 
     | 
    
         
            +
              describe "#/" do
         
     | 
| 
      
 82 
     | 
    
         
            +
                it 'should divide 10 dollars by 2 and get 5 dollars' do
         
     | 
| 
      
 83 
     | 
    
         
            +
                  (10.dollars / 2).should eq 5.dollars
         
     | 
| 
      
 84 
     | 
    
         
            +
                end
         
     | 
| 
      
 85 
     | 
    
         
            +
                
         
     | 
| 
      
 86 
     | 
    
         
            +
                it 'should divide 10 dollars by 5 dollars and get 2' do
         
     | 
| 
      
 87 
     | 
    
         
            +
                  (10.dollars / 5.dollars).should eq 2
         
     | 
| 
      
 88 
     | 
    
         
            +
                end
         
     | 
| 
      
 89 
     | 
    
         
            +
              end
         
     | 
| 
      
 90 
     | 
    
         
            +
              
         
     | 
| 
      
 91 
     | 
    
         
            +
              describe "#div" do
         
     | 
| 
      
 92 
     | 
    
         
            +
                it 'should divide 10 dollars by 2 and get 5 dollars' do
         
     | 
| 
      
 93 
     | 
    
         
            +
                  (10.dollars.div(2)).should eq 5.dollars
         
     | 
| 
      
 94 
     | 
    
         
            +
                end
         
     | 
| 
      
 95 
     | 
    
         
            +
                
         
     | 
| 
      
 96 
     | 
    
         
            +
                it 'should divide 10 dollars by 5 dollars and get 2' do
         
     | 
| 
      
 97 
     | 
    
         
            +
                  (10.dollars.div(5.dollars)).should eq 2
         
     | 
| 
      
 98 
     | 
    
         
            +
                end
         
     | 
| 
      
 99 
     | 
    
         
            +
              end
         
     | 
| 
      
 100 
     | 
    
         
            +
              
         
     | 
| 
      
 101 
     | 
    
         
            +
              describe "#abs" do
         
     | 
| 
      
 102 
     | 
    
         
            +
                it 'should return the abs value of -10 dollars as 10 dollars' do
         
     | 
| 
      
 103 
     | 
    
         
            +
                  -10.dollars.abs.should eq 10.dollars
         
     | 
| 
      
 104 
     | 
    
         
            +
                end
         
     | 
| 
      
 105 
     | 
    
         
            +
                
         
     | 
| 
      
 106 
     | 
    
         
            +
                it 'should return the abs value of 10 dollars as 10 dollars' do
         
     | 
| 
      
 107 
     | 
    
         
            +
                  10.dollars.abs.should eq 10.dollars
         
     | 
| 
      
 108 
     | 
    
         
            +
                end
         
     | 
| 
      
 109 
     | 
    
         
            +
              end
         
     | 
| 
      
 110 
     | 
    
         
            +
              
         
     | 
| 
      
 111 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/spec_helper.rb
    ADDED
    
    | 
         @@ -0,0 +1,32 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'mongoid'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'database_cleaner'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'mongoid_money'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            Dir["./spec/support/**/*.rb"].each {|f| require f}
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            RSpec.configure do |config|
         
     | 
| 
      
 9 
     | 
    
         
            +
              
         
     | 
| 
      
 10 
     | 
    
         
            +
              Mongoid.configure do |mconfig|
         
     | 
| 
      
 11 
     | 
    
         
            +
                name = "monogid_money_test"
         
     | 
| 
      
 12 
     | 
    
         
            +
                host = "localhost"
         
     | 
| 
      
 13 
     | 
    
         
            +
                port = 27017
         
     | 
| 
      
 14 
     | 
    
         
            +
                mconfig.database = Mongo::Connection.new.db(name)
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
              
         
     | 
| 
      
 17 
     | 
    
         
            +
              DatabaseCleaner.strategy = :truncation
         
     | 
| 
      
 18 
     | 
    
         
            +
              
         
     | 
| 
      
 19 
     | 
    
         
            +
              config.before(:each) do
         
     | 
| 
      
 20 
     | 
    
         
            +
                DatabaseCleaner.clean
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              # == Mock Framework
         
     | 
| 
      
 24 
     | 
    
         
            +
              #
         
     | 
| 
      
 25 
     | 
    
         
            +
              # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
         
     | 
| 
      
 26 
     | 
    
         
            +
              #
         
     | 
| 
      
 27 
     | 
    
         
            +
              # config.mock_with :mocha
         
     | 
| 
      
 28 
     | 
    
         
            +
              # config.mock_with :flexmock
         
     | 
| 
      
 29 
     | 
    
         
            +
              # config.mock_with :rr
         
     | 
| 
      
 30 
     | 
    
         
            +
              config.mock_with :rspec
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,191 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification 
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: mongoid_money
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version 
         
     | 
| 
      
 4 
     | 
    
         
            +
              prerelease: 
         
     | 
| 
      
 5 
     | 
    
         
            +
              version: 0.1.0
         
     | 
| 
      
 6 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 7 
     | 
    
         
            +
            authors: 
         
     | 
| 
      
 8 
     | 
    
         
            +
            - Jeff Bozek
         
     | 
| 
      
 9 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 10 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 11 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            date: 2011-03-22 00:00:00 -05:00
         
     | 
| 
      
 14 
     | 
    
         
            +
            default_executable: 
         
     | 
| 
      
 15 
     | 
    
         
            +
            dependencies: 
         
     | 
| 
      
 16 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 17 
     | 
    
         
            +
              name: bundler
         
     | 
| 
      
 18 
     | 
    
         
            +
              requirement: &id001 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 19 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 20 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 21 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 22 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 23 
     | 
    
         
            +
                    version: 1.0.0
         
     | 
| 
      
 24 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 25 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 26 
     | 
    
         
            +
              version_requirements: *id001
         
     | 
| 
      
 27 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 28 
     | 
    
         
            +
              name: jeweler
         
     | 
| 
      
 29 
     | 
    
         
            +
              requirement: &id002 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 30 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 31 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 32 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 33 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 34 
     | 
    
         
            +
                    version: 1.5.2
         
     | 
| 
      
 35 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 36 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 37 
     | 
    
         
            +
              version_requirements: *id002
         
     | 
| 
      
 38 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 39 
     | 
    
         
            +
              name: rspec
         
     | 
| 
      
 40 
     | 
    
         
            +
              requirement: &id003 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 41 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 42 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 43 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 44 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 45 
     | 
    
         
            +
                    version: "0"
         
     | 
| 
      
 46 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 47 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 48 
     | 
    
         
            +
              version_requirements: *id003
         
     | 
| 
      
 49 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 50 
     | 
    
         
            +
              name: shoulda
         
     | 
| 
      
 51 
     | 
    
         
            +
              requirement: &id004 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 52 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 53 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 54 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 55 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 56 
     | 
    
         
            +
                    version: "0"
         
     | 
| 
      
 57 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 58 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 59 
     | 
    
         
            +
              version_requirements: *id004
         
     | 
| 
      
 60 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 61 
     | 
    
         
            +
              name: mongo
         
     | 
| 
      
 62 
     | 
    
         
            +
              requirement: &id005 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 63 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 64 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 65 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 66 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 67 
     | 
    
         
            +
                    version: "1.1"
         
     | 
| 
      
 68 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 69 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 70 
     | 
    
         
            +
              version_requirements: *id005
         
     | 
| 
      
 71 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 72 
     | 
    
         
            +
              name: mongo_ext
         
     | 
| 
      
 73 
     | 
    
         
            +
              requirement: &id006 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 74 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 75 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 76 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 77 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 78 
     | 
    
         
            +
                    version: "0"
         
     | 
| 
      
 79 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 80 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 81 
     | 
    
         
            +
              version_requirements: *id006
         
     | 
| 
      
 82 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 83 
     | 
    
         
            +
              name: mongoid
         
     | 
| 
      
 84 
     | 
    
         
            +
              requirement: &id007 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 85 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 86 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 87 
     | 
    
         
            +
                - - "="
         
     | 
| 
      
 88 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 89 
     | 
    
         
            +
                    version: 2.0.0.rc.7
         
     | 
| 
      
 90 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 91 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 92 
     | 
    
         
            +
              version_requirements: *id007
         
     | 
| 
      
 93 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 94 
     | 
    
         
            +
              name: bson_ext
         
     | 
| 
      
 95 
     | 
    
         
            +
              requirement: &id008 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 96 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 97 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 98 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 99 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 100 
     | 
    
         
            +
                    version: "1.2"
         
     | 
| 
      
 101 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 102 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 103 
     | 
    
         
            +
              version_requirements: *id008
         
     | 
| 
      
 104 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 105 
     | 
    
         
            +
              name: database_cleaner
         
     | 
| 
      
 106 
     | 
    
         
            +
              requirement: &id009 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 107 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 108 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 109 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 110 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 111 
     | 
    
         
            +
                    version: "0"
         
     | 
| 
      
 112 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 113 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 114 
     | 
    
         
            +
              version_requirements: *id009
         
     | 
| 
      
 115 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 116 
     | 
    
         
            +
              name: mongo
         
     | 
| 
      
 117 
     | 
    
         
            +
              requirement: &id010 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 118 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 119 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 120 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 121 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 122 
     | 
    
         
            +
                    version: "1.1"
         
     | 
| 
      
 123 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 124 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 125 
     | 
    
         
            +
              version_requirements: *id010
         
     | 
| 
      
 126 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 127 
     | 
    
         
            +
              name: mongoid
         
     | 
| 
      
 128 
     | 
    
         
            +
              requirement: &id011 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 129 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 130 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 131 
     | 
    
         
            +
                - - "="
         
     | 
| 
      
 132 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 133 
     | 
    
         
            +
                    version: 2.0.0.rc.7
         
     | 
| 
      
 134 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 135 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 136 
     | 
    
         
            +
              version_requirements: *id011
         
     | 
| 
      
 137 
     | 
    
         
            +
            description: Money datatype for Mongoid. Inspired by Ruby Money. Makes handling money simple. Stores the value in the db as cents. Currently handles USD.
         
     | 
| 
      
 138 
     | 
    
         
            +
            email: jeff.bozek@gmail.com
         
     | 
| 
      
 139 
     | 
    
         
            +
            executables: []
         
     | 
| 
      
 140 
     | 
    
         
            +
             
     | 
| 
      
 141 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 142 
     | 
    
         
            +
             
     | 
| 
      
 143 
     | 
    
         
            +
            extra_rdoc_files: 
         
     | 
| 
      
 144 
     | 
    
         
            +
            - LICENSE.txt
         
     | 
| 
      
 145 
     | 
    
         
            +
            - README.rdoc
         
     | 
| 
      
 146 
     | 
    
         
            +
            files: 
         
     | 
| 
      
 147 
     | 
    
         
            +
            - lib/mongoid_money.rb
         
     | 
| 
      
 148 
     | 
    
         
            +
            - lib/mongoid_money/conversions.rb
         
     | 
| 
      
 149 
     | 
    
         
            +
            - lib/mongoid_money/money.rb
         
     | 
| 
      
 150 
     | 
    
         
            +
            - LICENSE.txt
         
     | 
| 
      
 151 
     | 
    
         
            +
            - README.rdoc
         
     | 
| 
      
 152 
     | 
    
         
            +
            - spec/conversion_spec.rb
         
     | 
| 
      
 153 
     | 
    
         
            +
            - spec/money_spec.rb
         
     | 
| 
      
 154 
     | 
    
         
            +
            - spec/spec_helper.rb
         
     | 
| 
      
 155 
     | 
    
         
            +
            - spec/support/dummy_money.rb
         
     | 
| 
      
 156 
     | 
    
         
            +
            has_rdoc: true
         
     | 
| 
      
 157 
     | 
    
         
            +
            homepage: http://github.com/jeffbozek/mongoid_money
         
     | 
| 
      
 158 
     | 
    
         
            +
            licenses: 
         
     | 
| 
      
 159 
     | 
    
         
            +
            - MIT
         
     | 
| 
      
 160 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 161 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 162 
     | 
    
         
            +
             
     | 
| 
      
 163 
     | 
    
         
            +
            require_paths: 
         
     | 
| 
      
 164 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 165 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 166 
     | 
    
         
            +
              none: false
         
     | 
| 
      
 167 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 168 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 169 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 170 
     | 
    
         
            +
                  hash: -1985478583530141391
         
     | 
| 
      
 171 
     | 
    
         
            +
                  segments: 
         
     | 
| 
      
 172 
     | 
    
         
            +
                  - 0
         
     | 
| 
      
 173 
     | 
    
         
            +
                  version: "0"
         
     | 
| 
      
 174 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 175 
     | 
    
         
            +
              none: false
         
     | 
| 
      
 176 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 177 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 178 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 179 
     | 
    
         
            +
                  version: "0"
         
     | 
| 
      
 180 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 181 
     | 
    
         
            +
             
     | 
| 
      
 182 
     | 
    
         
            +
            rubyforge_project: 
         
     | 
| 
      
 183 
     | 
    
         
            +
            rubygems_version: 1.5.3
         
     | 
| 
      
 184 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 185 
     | 
    
         
            +
            specification_version: 3
         
     | 
| 
      
 186 
     | 
    
         
            +
            summary: Money datatype for Mongoid. Inspired by Ruby Money.
         
     | 
| 
      
 187 
     | 
    
         
            +
            test_files: 
         
     | 
| 
      
 188 
     | 
    
         
            +
            - spec/conversion_spec.rb
         
     | 
| 
      
 189 
     | 
    
         
            +
            - spec/money_spec.rb
         
     | 
| 
      
 190 
     | 
    
         
            +
            - spec/spec_helper.rb
         
     | 
| 
      
 191 
     | 
    
         
            +
            - spec/support/dummy_money.rb
         
     |