double_entry 1.0.1 → 2.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +432 -0
  3. data/README.md +36 -9
  4. data/double_entry.gemspec +20 -48
  5. data/lib/active_record/locking_extensions.rb +3 -3
  6. data/lib/active_record/locking_extensions/log_subscriber.rb +1 -1
  7. data/lib/double_entry/account.rb +38 -45
  8. data/lib/double_entry/account_balance.rb +18 -1
  9. data/lib/double_entry/errors.rb +13 -13
  10. data/lib/double_entry/line.rb +3 -2
  11. data/lib/double_entry/reporting.rb +26 -38
  12. data/lib/double_entry/reporting/aggregate.rb +43 -23
  13. data/lib/double_entry/reporting/aggregate_array.rb +16 -13
  14. data/lib/double_entry/reporting/line_aggregate.rb +3 -2
  15. data/lib/double_entry/reporting/line_aggregate_filter.rb +8 -10
  16. data/lib/double_entry/reporting/line_metadata_filter.rb +33 -0
  17. data/lib/double_entry/transfer.rb +33 -27
  18. data/lib/double_entry/validation.rb +1 -0
  19. data/lib/double_entry/validation/account_fixer.rb +36 -0
  20. data/lib/double_entry/validation/line_check.rb +22 -40
  21. data/lib/double_entry/version.rb +1 -1
  22. data/lib/generators/double_entry/install/install_generator.rb +7 -1
  23. data/lib/generators/double_entry/install/templates/migration.rb +27 -25
  24. metadata +33 -243
  25. data/.gitignore +0 -32
  26. data/.rspec +0 -2
  27. data/.travis.yml +0 -29
  28. data/.yardopts +0 -2
  29. data/Gemfile +0 -2
  30. data/Rakefile +0 -15
  31. data/script/jack_hammer +0 -210
  32. data/script/setup.sh +0 -8
  33. data/spec/active_record/locking_extensions_spec.rb +0 -110
  34. data/spec/double_entry/account_balance_spec.rb +0 -7
  35. data/spec/double_entry/account_spec.rb +0 -130
  36. data/spec/double_entry/balance_calculator_spec.rb +0 -88
  37. data/spec/double_entry/configuration_spec.rb +0 -50
  38. data/spec/double_entry/line_spec.rb +0 -80
  39. data/spec/double_entry/locking_spec.rb +0 -214
  40. data/spec/double_entry/performance/double_entry_performance_spec.rb +0 -32
  41. data/spec/double_entry/performance/reporting/aggregate_performance_spec.rb +0 -50
  42. data/spec/double_entry/reporting/aggregate_array_spec.rb +0 -123
  43. data/spec/double_entry/reporting/aggregate_spec.rb +0 -205
  44. data/spec/double_entry/reporting/line_aggregate_filter_spec.rb +0 -90
  45. data/spec/double_entry/reporting/line_aggregate_spec.rb +0 -39
  46. data/spec/double_entry/reporting/month_range_spec.rb +0 -139
  47. data/spec/double_entry/reporting/time_range_array_spec.rb +0 -169
  48. data/spec/double_entry/reporting/time_range_spec.rb +0 -45
  49. data/spec/double_entry/reporting/week_range_spec.rb +0 -103
  50. data/spec/double_entry/reporting_spec.rb +0 -181
  51. data/spec/double_entry/transfer_spec.rb +0 -93
  52. data/spec/double_entry/validation/line_check_spec.rb +0 -99
  53. data/spec/double_entry_spec.rb +0 -428
  54. data/spec/generators/double_entry/install/install_generator_spec.rb +0 -30
  55. data/spec/spec_helper.rb +0 -118
  56. data/spec/support/accounts.rb +0 -21
  57. data/spec/support/blueprints.rb +0 -43
  58. data/spec/support/database.example.yml +0 -21
  59. data/spec/support/database.travis.yml +0 -24
  60. data/spec/support/double_entry_spec_helper.rb +0 -27
  61. data/spec/support/gemfiles/Gemfile.rails-3.2.x +0 -8
  62. data/spec/support/gemfiles/Gemfile.rails-4.1.x +0 -6
  63. data/spec/support/gemfiles/Gemfile.rails-4.2.x +0 -5
  64. data/spec/support/gemfiles/Gemfile.rails-5.0.x +0 -5
  65. data/spec/support/performance_helper.rb +0 -26
  66. data/spec/support/reporting_configuration.rb +0 -6
  67. data/spec/support/schema.rb +0 -74
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 4d879d4baf12d4479b4533fb5032c27c0ef4968f
4
- data.tar.gz: dfeda86d6a9147c2cb99313c3136f1fe2bbe3ca3
2
+ SHA256:
3
+ metadata.gz: bd62c2e42e510db804162a1de625cc123d04c65c6183eb1e1004061eef376e46
4
+ data.tar.gz: ffde728e5768509bd391e4056971dbb63128ad46ef02a9780497facaaa31415e
5
5
  SHA512:
6
- metadata.gz: 4415c2eae26420297541d515cabf79eb2eb7833c10c4984724e391d9f3ebad20f86178837fad21ee91baebf9ee57332554c617a2ab3cb856375b21df9a92dc07
7
- data.tar.gz: 45c892f2e32784e8aefcbadb014372729e59ce9089c7ab5ebd075679b50be04a87bc5b81f9c00638dca4d79466cd18a6390f8b970a24ed9377d3eaabf89d83b3
6
+ metadata.gz: 3c30e7b10ebeac99660c122ecedfafccbb115f36ed309e9a7c0b41bc122ea5a86d51baac92c28c0a5bcff4850b752fa7ffd356a94267812cb79fa4c7ef029bfd
7
+ data.tar.gz: 145104fb048131b5f49d075f9a8e0b94d6e5fd73c5450cad0b4bdf522ecc9f6c311571e809457017383fa4b0d4576859a3a3e4aa991ff45d672189fd9434ff46
@@ -0,0 +1,432 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
6
+ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [2.0.0.beta1] - 2018-12-31
11
+
12
+ ### Added
13
+
14
+ - Added contributor credits to README.
15
+
16
+ - Added support for Ruby 2.3, 2.4, 2.5 and 2.6.
17
+
18
+ - Added support for Rails 5.0, 5.1 and 5.2
19
+
20
+ - Support passing an array of metadata values.
21
+
22
+ ```ruby
23
+ DoubleEntry.transfer(
24
+ Money.new(20_00),
25
+ :from => one_account,
26
+ :to => another_account,
27
+ :code => :a_business_code_for_this_type_of_transfer,
28
+ :metadata => { :key1 => ['value 1', 'value 2'], :key2 => 'value 3' },
29
+ )
30
+ ```
31
+
32
+ - Allow partner account to be specified for aggregates.
33
+
34
+ - Allow filtering aggregates by multiple metadata key/value pairs.
35
+
36
+ - Add index on the `double_entry_line_checks` table. This covers the query to
37
+ obtain the last line check.
38
+
39
+ Add this index to your database via a migration like:
40
+
41
+ ```ruby
42
+ def up
43
+ add_index "double_entry_line_checks", ["created_at", "last_line_id"], :name => "line_checks_created_at_last_line_id_idx"
44
+ end
45
+ ```
46
+
47
+ - Log account balance cache errors to the database when performing the line check:
48
+ `DoubleEntry::Validation::LineCheck::perform!`
49
+
50
+ ### Changed
51
+
52
+ - Replaced Machinist with Factory Bot in test suite.
53
+
54
+ - Implement `DoubleEntry::Transfer::Set` and `DoubleEntry::Account::Set` with
55
+ `Hash`es rather than `Array`s for performance.
56
+
57
+ - Reporting API now uses keyword arguments. Note these reporting classes are
58
+ marked API private: their interface is not considered stable.
59
+ - `DoubleEntry::Reporting::aggregate`
60
+ - `DoubleEntry::Reporting::aggregate_array`
61
+ - `DoubleEntry::Reporting::Aggregate::new`
62
+ - `DoubleEntry::Reporting::Aggregate::formatted_amount`
63
+ - `DoubleEntry::Reporting::AggregateArray::new`
64
+ - `DoubleEntry::Reporting::LineAggregateFilter::new`
65
+
66
+ - Loosened database string column contstraints to the default (255 characters).
67
+ Engineering teams can choose to apply this change, or apply their own column
68
+ length constraints specific to their needs. ([#152])
69
+
70
+ - Removed default values for the length checks on `code`, `account` and `scope`
71
+ ([#152]). These checks will now only be performed when configured with a value:
72
+
73
+ ```ruby
74
+ DoubleEntry.configure do |config|
75
+ config.code_max_length = 47
76
+ config.account_identifier_max_length = 31
77
+ config.scope_identifier_max_length = 23
78
+ end
79
+ ```
80
+ - Use `bigint` for monetary values in the database to avoid integer overflow
81
+ ([#154]). Apply changes via this migration:
82
+
83
+ ```ruby
84
+ change_column :double_entry_account_balances, :balance, :bigint, null: false
85
+
86
+ change_column :double_entry_line_aggregates, :amount, :bigint, null: false
87
+
88
+ change_column :double_entry_lines, :amount, :bigint, null: false
89
+ change_column :double_entry_lines, :balance, :bigint, null: false
90
+ ```
91
+ - On Rails version 5.1 and above, use `bigint` for foreign key values in the
92
+ database to avoid integer overflow ([#154]). Apply changes via this
93
+ migration:
94
+
95
+ ```ruby
96
+ change_column :double_entry_line_checks, :last_line_id, :bigint, null: false
97
+
98
+ change_column :double_entry_line_metadata, :line_id, :bigint, null: false
99
+
100
+ change_column :double_entry_lines, :partner_id, :bigint, null: true
101
+ change_column :double_entry_lines, :detail_id, :bigint, null: true
102
+ ```
103
+
104
+ - Line check validation no-longer performs corrections by default. The
105
+ `DoubleEntry::Validation::LineCheck::perform!` method will only log validation
106
+ failures in the database. To perform auto-correction pass the `fixer` option:
107
+ `LineCheck.perform!(fixer: DoubleEntry::Validation::AccountFixer.new)`
108
+
109
+ ### Removed
110
+
111
+ - Removed support for Ruby 1.9, 2.0, 2.1 and 2.2.
112
+
113
+ - Removed support for Rails 3.2, 4.0, and 4.1.
114
+
115
+ - Removed unneeded development dependencies from Gemspec.
116
+
117
+ - Removed spec and script files from gem package.
118
+
119
+ - Removed the `active_record_scope_identifier` method for configuring scoped accounts.
120
+
121
+ ```ruby
122
+ user_scope = accounts.active_record_scope_identifier(User)
123
+ ```
124
+
125
+ As a replacement, please define your own with a lambda:
126
+
127
+ ```ruby
128
+ user_scope = ->(user) do
129
+ raise 'not a User' unless user.class.name == 'User'
130
+ user.id
131
+ end
132
+ ```
133
+
134
+ ### Fixed
135
+
136
+ - Fixed more Ruby warnings.
137
+
138
+ - Use `double_entry` namespace when publishing to
139
+ `ActiveSupport::Notifications`.
140
+
141
+ - Fixed problem of Rails version number not being set in migration template for apps using Rails 5 or higher.
142
+
143
+ [#152]: https://github.com/envato/double_entry/pull/152
144
+ [#154]: https://github.com/envato/double_entry/pull/154
145
+
146
+ ## [1.0.1] - 2018-01-06
147
+
148
+ ### Removed
149
+
150
+ - Removed Rubocop checks and build step.
151
+
152
+ ### Fixed
153
+
154
+ - Use `Money#positive?` and `Money#negative?` rather than comparing to zero.
155
+ Resolves issues when dealing with multiple currencies.
156
+
157
+ - Fixed typo in jack_hammer documentation.
158
+
159
+ ## [1.0.0] - 2015-08-04
160
+
161
+ ### Added
162
+
163
+ - Record meta-data against transfers.
164
+
165
+ ```ruby
166
+ DoubleEntry.transfer(
167
+ Money.new(20_00),
168
+ :from => one_account,
169
+ :to => another_account,
170
+ :code => :a_business_code_for_this_type_of_transfer,
171
+ :metadata => { :key1 => 'value 1', :key2 => 'value 2' },
172
+ )
173
+ ```
174
+
175
+ This feature requires a new DB table. Please add a migration similar to:
176
+
177
+ ```ruby
178
+ class CreateDoubleEntryLineMetadata < ActiveRecord::Migration
179
+ def self.up
180
+ create_table "#{DoubleEntry.table_name_prefix}line_metadata", :force => true do |t|
181
+ t.integer "line_id", :null => false
182
+ t.string "key", :limit => 48, :null => false
183
+ t.string "value", :limit => 64, :null => false
184
+ t.timestamps :null => false
185
+ end
186
+
187
+ add_index "#{DoubleEntry.table_name_prefix}line_metadata",
188
+ ["line_id", "key", "value"],
189
+ :name => "lines_meta_line_id_key_value_idx"
190
+ end
191
+
192
+ def self.down
193
+ drop_table "#{DoubleEntry.table_name_prefix}line_metadata"
194
+ end
195
+ end
196
+ ```
197
+
198
+ ### Changed
199
+
200
+ - Raise `DoubleEntry::Locking::LockWaitTimeout` for lock wait timeouts.
201
+
202
+ ### Fixed
203
+
204
+ - Ensure that a range is specified when performing an aggregate function over
205
+ lines.
206
+
207
+ ## [0.10.3] - 2015-07-15
208
+
209
+ ### Added
210
+
211
+ - Check code format with Rubocop as part of the CI build.
212
+
213
+ ### Fixed
214
+
215
+ - More Rubocop code formatting issues fixed.
216
+
217
+ ## [0.10.2] - 2015-07-10
218
+
219
+ ### Fixed
220
+
221
+ - `DoubleEntry::Reporting::AggregateArray` correctly retreives previously
222
+ calculated aggregates.
223
+
224
+ ## [0.10.1] - 2015-07-06
225
+
226
+ ### Added
227
+
228
+ - Run CI build against Ruby 2.2.0.
229
+
230
+ - Added Rubocop and resolved code formatting issues.
231
+
232
+ ### Changed
233
+
234
+ - Reduced permutations of DB, Ruby and Rails in CI build.
235
+
236
+ - Build status badge displayed in README reports on just the master branch.
237
+
238
+ - Update RSpec configuration with latest recommended options.
239
+
240
+ ### Fixed
241
+
242
+ - Addressed Ruby warnings.
243
+
244
+ - Fixed circular arg reference.
245
+
246
+ ## [0.10.0] - 2015-01-09
247
+
248
+ ### Added
249
+
250
+ - Define accounts that can be negative only.
251
+
252
+ ```ruby
253
+ DoubleEntry.configure do |config|
254
+ config.define_accounts do |accounts|
255
+ accounts.define(
256
+ :identifier => :my_account_that_never_goes_positive,
257
+ :negative_only => true
258
+ )
259
+ end
260
+ end
261
+ ```
262
+
263
+ - Run CI build against Rails 4.2
264
+
265
+ ## [0.9.0] - 2014-12-08
266
+
267
+ ### Changed
268
+
269
+ - `DoubleEntry::Reporting::Agregate#formated_amount` no longer accepts
270
+ `currency` argument.
271
+
272
+ ## [0.8.0] - 2014-11-19
273
+
274
+ ### Added
275
+
276
+ - Log when we encounter deadlocks causing restart/retry.
277
+
278
+ ## [0.7.2] - 2014-11-18
279
+
280
+ ### Removed
281
+
282
+ - Removed `DoubleEntry::currency` method.
283
+
284
+ ## [0.7.1] - 2014-11-17
285
+
286
+ ### Fixed
287
+
288
+ - `DoubleEntry::balance` and `DoubleEntry::account` now raise
289
+ `DoubleEntry::AccountScopeMismatchError` if the scope provided is not of
290
+ the same type in the account definition.
291
+
292
+ - Speed up CI build.
293
+
294
+ ## [0.7.0] - 2014-11-12
295
+
296
+ ### Added
297
+
298
+ - Added support for currency. :money_with_wings:
299
+
300
+ ### Changed
301
+
302
+ - Require at least version 6.0 of Money gem.
303
+
304
+ ## [0.6.1] - 2014-10-10
305
+
306
+ ### Changed
307
+
308
+ - Removed use of Active Record callbacks in `DoubleEntry::Line`.
309
+
310
+ - Changed `DoubleEntry::Reporting::WeekRange` calculation to use
311
+ `Date#cweek`.
312
+
313
+ ## [0.6.0] - 2014-08-23
314
+
315
+ ### Fixed
316
+
317
+ - Fixed defect preventing locking a scoped and a non scoped account.
318
+
319
+ ## [0.5.0] - 2014-08-01
320
+
321
+ ### Added
322
+
323
+ - Added a convenience method for defining active record scope identifiers.
324
+
325
+ ```ruby
326
+ DoubleEntry.configure do |config|
327
+ config.define_accounts do |accounts|
328
+ user_scope = accounts.active_record_scope_identifier(User)
329
+ accounts.define(:identifier => :checking, :scope_identifier => user_scope)
330
+ end
331
+ end
332
+ ```
333
+
334
+ - Added support for SQLite.
335
+
336
+ ### Removed
337
+
338
+ - Removed errors: `DoubleEntry::RequiredMetaMissing` and
339
+ `DoubleEntry::UserAccountNotLocked`.
340
+
341
+ ### Fixed
342
+
343
+ - Fixed `Reporting::reconciled?` support for account scopes.
344
+
345
+ ## [0.4.0] - 2014-07-17
346
+
347
+ ### Added
348
+
349
+ - Added Yardoc documention to the `DoubleEntry::balance` method.
350
+
351
+ ### Changed
352
+
353
+ - Changed `Line#debit?` to `Line#increase?` and `Line#credit?` to
354
+ `Line#decrease?`.
355
+
356
+ ### Removed
357
+
358
+ - Removed the `DoubleEntry::Line#meta` attribute.
359
+
360
+ ## [0.3.1] - 2014-07-11
361
+
362
+ ### Fixed
363
+
364
+ - Obtain a year range array without prioviding a start date.
365
+
366
+ ## [0.3.0] - 2014-07-11
367
+
368
+ ### Added
369
+
370
+ - Add Yardoc to `Reporting` module.
371
+ - Allow reporting month and year time ranges without a start date.
372
+
373
+ ### Changed
374
+
375
+ - Use ruby18 hash syntax for configuration example in README.
376
+
377
+ ### Removed
378
+
379
+ - Removed `DoubleEntry::describe` and `DoubleEntry::Line#description`
380
+ methods.
381
+
382
+ ## [0.2.0] - 2014-06-28
383
+
384
+ ### Added
385
+
386
+ - Added a configuration class to define valid accounts and transfers.
387
+
388
+ ```ruby
389
+ DoubleEntry.configure do |config|
390
+ config.define_accounts do |accounts|
391
+ accounts.define(identifier: :savings, positive_only: true)
392
+ accounts.define(identifier: :checking)
393
+ end
394
+
395
+ config.define_transfers do |transfers|
396
+ transfers.define(from: :checking, to: :savings, code: :deposit)
397
+ transfers.define(from: :savings, to: :checking, code: :withdraw)
398
+ end
399
+ end
400
+ ```
401
+
402
+ ### Changed
403
+
404
+ - Move reporting classes into the `DoubleEntry::Reporting` namespace. Mark
405
+ this module as `@api private`: internal use only.
406
+
407
+ ## 0.1.0 - 2014-06-20
408
+
409
+ ### Added
410
+
411
+ - Library released as Open Source!
412
+
413
+ [Unreleased]: https://github.com/envato/double_entry/compare/v2.0.0.beta1...HEAD
414
+ [2.0.0.beta1]: https://github.com/envato/double_entry/compare/v1.0.1...v2.0.0.beta1
415
+ [1.0.1]: https://github.com/envato/double_entry/compare/v1.0.0...v1.0.1
416
+ [1.0.0]: https://github.com/envato/double_entry/compare/v0.10.3...v1.0.0
417
+ [0.10.3]: https://github.com/envato/double_entry/compare/v0.10.2...v0.10.3
418
+ [0.10.2]: https://github.com/envato/double_entry/compare/v0.10.1...v0.10.2
419
+ [0.10.1]: https://github.com/envato/double_entry/compare/v0.10.0...v0.10.1
420
+ [0.10.0]: https://github.com/envato/double_entry/compare/v0.9.0...v0.10.0
421
+ [0.9.0]: https://github.com/envato/double_entry/compare/v0.8.0...v0.9.0
422
+ [0.8.0]: https://github.com/envato/double_entry/compare/v0.7.2...v0.8.0
423
+ [0.7.2]: https://github.com/envato/double_entry/compare/v0.7.1...v0.7.2
424
+ [0.7.1]: https://github.com/envato/double_entry/compare/v0.7.0...v0.7.1
425
+ [0.7.0]: https://github.com/envato/double_entry/compare/v0.6.1...v0.7.0
426
+ [0.6.1]: https://github.com/envato/double_entry/compare/v0.6.0...v0.6.1
427
+ [0.6.0]: https://github.com/envato/double_entry/compare/v0.5.0...v0.6.0
428
+ [0.5.0]: https://github.com/envato/double_entry/compare/v0.4.0...v0.5.0
429
+ [0.4.0]: https://github.com/envato/double_entry/compare/v0.3.1...v0.4.0
430
+ [0.3.1]: https://github.com/envato/double_entry/compare/v0.3.0...v0.3.1
431
+ [0.3.0]: https://github.com/envato/double_entry/compare/v0.2.0...v0.3.0
432
+ [0.2.0]: https://github.com/envato/double_entry/compare/v0.1.0...v0.2.0
data/README.md CHANGED
@@ -3,8 +3,8 @@
3
3
 
4
4
  [![License MIT](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://github.com/envato/double_entry/blob/master/LICENSE.md)
5
5
  [![Gem Version](https://badge.fury.io/rb/double_entry.svg)](http://badge.fury.io/rb/double_entry)
6
- [![Build Status](https://travis-ci.org/envato/double_entry.svg?branch=1-stable)](https://travis-ci.org/envato/double_entry)
7
- [![Code Climate](https://codeclimate.com/github/envato/double_entry.png)](https://codeclimate.com/github/envato/double_entry)
6
+ [![Build Status](https://travis-ci.org/envato/double_entry.svg?branch=master)](https://travis-ci.org/envato/double_entry)
7
+ [![Code Climate](https://codeclimate.com/github/envato/double_entry/badges/gpa.svg)](https://codeclimate.com/github/envato/double_entry)
8
8
 
9
9
  ![Show me the Money](http://24.media.tumblr.com/tumblr_m3bwbqNJIG1rrgbmqo1_500.gif)
10
10
 
@@ -22,15 +22,16 @@ DoubleEntry uses the [Money gem](https://github.com/RubyMoney/money) to encapsul
22
22
  DoubleEntry is tested against:
23
23
 
24
24
  Ruby
25
- * 2.1.x
26
- * 2.2.x
27
25
  * 2.3.x
26
+ * 2.4.x
27
+ * 2.5.x
28
+ * 2.6.x
28
29
 
29
30
  Rails
30
- * 3.2.x
31
- * 4.1.x
32
31
  * 4.2.x
33
32
  * 5.0.x
33
+ * 5.1.x
34
+ * 5.2.x
34
35
 
35
36
  Databases
36
37
  * MySQL
@@ -134,7 +135,7 @@ DoubleEntry.transfer(
134
135
  :from => one_account,
135
136
  :to => another_account,
136
137
  :code => :a_business_code_for_this_type_of_transfer,
137
- :metadata => {:key1 => 'value 1', :key2 => 'value 2'},
138
+ :metadata => {:key1 => ['value 1', 'value 2'], :key2 => 'value 3'},
138
139
  )
139
140
  ```
140
141
 
@@ -195,7 +196,10 @@ require 'double_entry'
195
196
 
196
197
  DoubleEntry.configure do |config|
197
198
  config.define_accounts do |accounts|
198
- user_scope = accounts.active_record_scope_identifier(User)
199
+ user_scope = ->(user) do
200
+ raise 'not a User' unless user.class.name == 'User'
201
+ user.id
202
+ end
199
203
  accounts.define(:identifier => :savings, :scope_identifier => user_scope, :positive_only => true)
200
204
  accounts.define(:identifier => :checking, :scope_identifier => user_scope)
201
205
  end
@@ -215,7 +219,7 @@ Transfers between accounts of different currencies are not allowed.
215
219
  ```ruby
216
220
  DoubleEntry.configure do |config|
217
221
  config.define_accounts do |accounts|
218
- accounts.define(:identifier => :savings, :scope_identifier => user_scope, :currency => :aud)
222
+ accounts.define(:identifier => :savings, :scope_identifier => user_scope, :currency => 'AUD')
219
223
  end
220
224
  end
221
225
  ```
@@ -304,3 +308,26 @@ See the Github project [issues](https://github.com/envato/double_entry/issues).
304
308
  ```sh
305
309
  bundle exec rake
306
310
  ```
311
+
312
+ ## Contributors
313
+
314
+ Many thanks to those who have contributed to both this gem, and the library upon which it was based, over the years:
315
+ * Anthony Sellitti - @asellitt
316
+ * Clinton Forbes - @clinton
317
+ * Eaden McKee - @eadz
318
+ * Giancarlo Salamanca - @salamagd
319
+ * Jiexin Huang - @jiexinhuang
320
+ * Keith Pitt - @keithpitt
321
+ * Kelsey Hannan - @KelseyDH
322
+ * Mark Turnley - @rabidcarrot
323
+ * Martin Jagusch - @MJIO
324
+ * Martin Spickermann - @spickermann
325
+ * Mary-Anne Cosgrove - @macosgrove
326
+ * Orien Madgwick - @orien
327
+ * Pete Yandall - @notahat
328
+ * Rizal Muthi - @rizalmuthi
329
+ * Ryan Allen - @ryan-allen
330
+ * Samuel Cochran - @sj26
331
+ * Stephanie Staub - @stephnacios
332
+ * Trung Lê - @joneslee85
333
+ * Vahid Ta'eed - @vahid