activerecord 1.7.0 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of activerecord might be problematic. Click here for more details.

Files changed (39) hide show
  1. data/CHANGELOG +55 -0
  2. data/lib/active_record.rb +5 -7
  3. data/lib/active_record/aggregations.rb +2 -1
  4. data/lib/active_record/associations.rb +2 -1
  5. data/lib/active_record/associations/association_proxy.rb +4 -0
  6. data/lib/active_record/associations/has_many_association.rb +6 -4
  7. data/lib/active_record/associations/has_one_association.rb +7 -2
  8. data/lib/active_record/base.rb +36 -5
  9. data/lib/active_record/connection_adapters/abstract_adapter.rb +58 -10
  10. data/lib/active_record/connection_adapters/mysql_adapter.rb +30 -9
  11. data/lib/active_record/connection_adapters/postgresql_adapter.rb +3 -2
  12. data/lib/active_record/connection_adapters/sqlite_adapter.rb +17 -0
  13. data/lib/active_record/fixtures.rb +108 -31
  14. data/lib/active_record/migration.rb +94 -0
  15. data/lib/active_record/reflection.rb +10 -4
  16. data/lib/active_record/validations.rb +76 -42
  17. data/rakefile +2 -2
  18. data/test/aaa_create_tables_test.rb +4 -4
  19. data/test/aggregations_test.rb +18 -4
  20. data/test/associations_test.rb +2 -1
  21. data/test/base_test.rb +10 -0
  22. data/test/fixtures/company.rb +1 -1
  23. data/test/fixtures/customer.rb +17 -0
  24. data/test/fixtures/customers.yml +1 -0
  25. data/test/fixtures/db_definitions/db2.sql +1 -0
  26. data/test/fixtures/db_definitions/mysql.sql +1 -0
  27. data/test/fixtures/db_definitions/oci.sql +1 -0
  28. data/test/fixtures/db_definitions/postgresql.sql +1 -0
  29. data/test/fixtures/db_definitions/sqlite.sql +2 -1
  30. data/test/fixtures/db_definitions/sqlserver.sql +1 -0
  31. data/test/fixtures/fixture_database.sqlite +0 -0
  32. data/test/fixtures/fixture_database_2.sqlite +0 -0
  33. data/test/fixtures/migrations/1_people_have_last_names.rb +9 -0
  34. data/test/fixtures/migrations/2_we_need_reminders.rb +12 -0
  35. data/test/fixtures_test.rb +30 -1
  36. data/test/migration_mysql.rb +104 -0
  37. data/test/reflection_test.rb +8 -4
  38. data/test/validations_test.rb +38 -0
  39. metadata +9 -4
data/rakefile CHANGED
@@ -8,7 +8,7 @@ require 'rake/contrib/rubyforgepublisher'
8
8
 
9
9
  PKG_BUILD = ENV['PKG_BUILD'] ? '.' + ENV['PKG_BUILD'] : ''
10
10
  PKG_NAME = 'activerecord'
11
- PKG_VERSION = '1.7.0' + PKG_BUILD
11
+ PKG_VERSION = '1.8.0' + PKG_BUILD
12
12
  PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
13
13
 
14
14
  PKG_FILES = FileList[
@@ -117,7 +117,7 @@ spec = Gem::Specification.new do |s|
117
117
  s.files = s.files + Dir.glob( "#{dir}/**/*" ).delete_if { |item| item.include?( "\.svn" ) }
118
118
  end
119
119
 
120
- s.add_dependency('activesupport', '= 1.0.0' + PKG_BUILD)
120
+ s.add_dependency('activesupport', '= 1.0.1' + PKG_BUILD)
121
121
 
122
122
  s.files.delete "test/fixtures/fixture_database.sqlite"
123
123
  s.files.delete "test/fixtures/fixture_database_2.sqlite"
@@ -45,13 +45,13 @@ class CreateTablesTest < Test::Unit::TestCase
45
45
 
46
46
  def test_table_creation
47
47
  adapter_name = ActiveRecord::Base.connection.adapter_name.downcase
48
- run_sql_file ActiveRecord::Base.connection, "test/fixtures/db_definitions/" + adapter_name + ".drop.sql"
49
- run_sql_file ActiveRecord::Base.connection, "test/fixtures/db_definitions/" + adapter_name + ".sql"
48
+ run_sql_file ActiveRecord::Base.connection, "#{File.dirname(__FILE__)}/fixtures/db_definitions/" + adapter_name + ".drop.sql"
49
+ run_sql_file ActiveRecord::Base.connection, "#{File.dirname(__FILE__)}/fixtures/db_definitions/" + adapter_name + ".sql"
50
50
 
51
51
  # Now do the same thing with the connection used by multiple_db_test.rb
52
52
  adapter_name = Course.retrieve_connection.adapter_name.downcase
53
- run_sql_file Course.retrieve_connection, "test/fixtures/db_definitions/" + adapter_name + "2.drop.sql"
54
- run_sql_file Course.retrieve_connection, "test/fixtures/db_definitions/" + adapter_name + "2.sql"
53
+ run_sql_file Course.retrieve_connection, "#{File.dirname(__FILE__)}/fixtures/db_definitions/" + adapter_name + "2.drop.sql"
54
+ run_sql_file Course.retrieve_connection, "#{File.dirname(__FILE__)}/fixtures/db_definitions/" + adapter_name + "2.sql"
55
55
 
56
56
  assert_equal 1,1
57
57
  end
@@ -2,10 +2,7 @@ require 'abstract_unit'
2
2
  require 'fixtures/customer'
3
3
 
4
4
  class AggregationsTest < Test::Unit::TestCase
5
- def setup
6
- @customers = create_fixtures "customers"
7
- @david = Customer.find(1)
8
- end
5
+ fixtures :customers
9
6
 
10
7
  def test_find_single_value_object
11
8
  assert_equal 50, @david.balance.amount
@@ -30,4 +27,21 @@ class AggregationsTest < Test::Unit::TestCase
30
27
  @david.balance = Money.new(100)
31
28
  assert_raises(TypeError) { @david.balance.instance_eval { @amount = 20 } }
32
29
  end
30
+
31
+ def test_inferred_mapping
32
+ assert_equal "35.544623640962634", @david.gps_location.latitude
33
+ assert_equal "-105.9309951055148", @david.gps_location.longitude
34
+
35
+ @david.gps_location = GpsLocation.new("39x-110")
36
+
37
+ assert_equal "39", @david.gps_location.latitude
38
+ assert_equal "-110", @david.gps_location.longitude
39
+
40
+ @david.save
41
+
42
+ @david.reload
43
+
44
+ assert_equal "39", @david.gps_location.latitude
45
+ assert_equal "-110", @david.gps_location.longitude
46
+ end
33
47
  end
@@ -94,7 +94,8 @@ class HasOneAssociationsTest < Test::Unit::TestCase
94
94
  @signals37.account = nil
95
95
  @signals37.save
96
96
  assert_nil @signals37.account
97
- assert_nil Account.find(old_account_id).firm_id
97
+ # account is dependent, therefore is destroyed when reference to owner is lost
98
+ assert_raises(ActiveRecord::RecordNotFound) { Account.find(old_account_id) }
98
99
  end
99
100
 
100
101
  def test_dependence
@@ -216,6 +216,16 @@ class BasicsTest < Test::Unit::TestCase
216
216
  assert_equal("initialized from attributes", topic.title)
217
217
  end
218
218
 
219
+ def test_initialize_with_invalid_attribute
220
+ begin
221
+ topic = Topic.new({ "title" => "test",
222
+ "last_read(1i)" => "2005", "last_read(2i)" => "2", "last_read(3i)" => "31"})
223
+ rescue ActiveRecord::MultiparameterAssignmentErrors => ex
224
+ assert_equal(1, ex.errors.size)
225
+ assert_equal("last_read", ex.errors[0].attribute)
226
+ end
227
+ end
228
+
219
229
  def test_load
220
230
  topics = Topic.find_all nil, "id"
221
231
  assert_equal(2, topics.size)
@@ -6,7 +6,7 @@ end
6
6
 
7
7
 
8
8
  class Firm < Company
9
- has_many :clients, :order => "id", :dependent => true
9
+ has_many :clients, :order => "id", :dependent => true, :counter_sql => "SELECT COUNT(*) FROM companies WHERE firm_id = 1 AND (type = 'Client' OR type = 'SpecialClient' OR type = 'VerySpecialClient' )"
10
10
  has_many :clients_sorted_desc, :class_name => "Client", :order => "id DESC"
11
11
  has_many :clients_of_firm, :foreign_key => "client_of", :class_name => "Client", :order => "id"
12
12
  has_many :clients_like_ms, :conditions => "name = 'Microsoft'", :class_name => "Client", :order => "id"
@@ -1,6 +1,7 @@
1
1
  class Customer < ActiveRecord::Base
2
2
  composed_of :address, :mapping => [ %w(address_street street), %w(address_city city), %w(address_country country) ]
3
3
  composed_of :balance, :class_name => "Money", :mapping => %w(balance amount)
4
+ composed_of :gps_location
4
5
  end
5
6
 
6
7
  class Address
@@ -27,4 +28,20 @@ class Money
27
28
  def exchange_to(other_currency)
28
29
  Money.new((amount * EXCHANGE_RATES["#{currency}_TO_#{other_currency}"]).floor, other_currency)
29
30
  end
31
+ end
32
+
33
+ class GpsLocation
34
+ attr_reader :gps_location
35
+
36
+ def initialize(gps_location)
37
+ @gps_location = gps_location
38
+ end
39
+
40
+ def latitude
41
+ gps_location.split("x").first
42
+ end
43
+
44
+ def longitude
45
+ gps_location.split("x").last
46
+ end
30
47
  end
@@ -5,3 +5,4 @@ david:
5
5
  address_street: Funny Street
6
6
  address_city: Scary Town
7
7
  address_country: Loony Land
8
+ gps_location: 35.544623640962634x-105.9309951055148
@@ -58,6 +58,7 @@ CREATE TABLE customers (
58
58
  address_street varchar(100) default NULL,
59
59
  address_city varchar(100) default NULL,
60
60
  address_country varchar(100) default NULL,
61
+ gps_location varchar(100) default NULL,
61
62
  PRIMARY KEY (id)
62
63
  );
63
64
 
@@ -59,6 +59,7 @@ CREATE TABLE `customers` (
59
59
  `address_street` varchar(100) default NULL,
60
60
  `address_city` varchar(100) default NULL,
61
61
  `address_country` varchar(100) default NULL,
62
+ `gps_location` varchar(100) default NULL,
62
63
  PRIMARY KEY (`id`)
63
64
  );
64
65
 
@@ -83,6 +83,7 @@ create table customers (
83
83
  address_street varchar(100) default null,
84
84
  address_city varchar(100) default null,
85
85
  address_country varchar(100) default null,
86
+ gps_location varchar(100) default null,
86
87
  primary key (id)
87
88
  );
88
89
 
@@ -65,6 +65,7 @@ CREATE TABLE customers (
65
65
  address_street character varying,
66
66
  address_city character varying,
67
67
  address_country character varying,
68
+ gps_location character varying,
68
69
  PRIMARY KEY (id)
69
70
  );
70
71
  SELECT setval('customers_id_seq', 100);
@@ -53,7 +53,8 @@ CREATE TABLE 'customers' (
53
53
  'balance' INTEGER DEFAULT 0,
54
54
  'address_street' TEXT DEFAULT NULL,
55
55
  'address_city' TEXT DEFAULT NULL,
56
- 'address_country' TEXT DEFAULT NULL
56
+ 'address_country' TEXT DEFAULT NULL,
57
+ 'gps_location' TEXT DEFAULT NULL
57
58
  );
58
59
 
59
60
  CREATE TABLE 'movies' (
@@ -57,6 +57,7 @@ CREATE TABLE customers (
57
57
  address_street varchar(100) default NULL,
58
58
  address_city varchar(100) default NULL,
59
59
  address_country varchar(100) default NULL,
60
+ gps_location varchar(100) default NULL,
60
61
  PRIMARY KEY (id)
61
62
  );
62
63
 
@@ -0,0 +1,9 @@
1
+ class PeopleHaveLastNames < ActiveRecord::Migration
2
+ def self.up
3
+ add_column "people", "last_name", :string
4
+ end
5
+
6
+ def self.down
7
+ remove_column "people", "last_name"
8
+ end
9
+ end
@@ -0,0 +1,12 @@
1
+ class WeNeedReminders < ActiveRecord::Migration
2
+ def self.up
3
+ create_table("reminders") do |t|
4
+ t.column :content, :text
5
+ t.column :remind_at, :datetime
6
+ end
7
+ end
8
+
9
+ def self.down
10
+ drop_table "reminders"
11
+ end
12
+ end
@@ -105,5 +105,34 @@ class FixturesTest < Test::Unit::TestCase
105
105
  def test_empty_csv_fixtures
106
106
  assert_not_nil Fixtures.new( Account.connection, "accounts", File.dirname(__FILE__) + "/fixtures/naked/csv/accounts")
107
107
  end
108
-
108
+ end
109
+
110
+
111
+ class FixturesWithoutInstantiationTest < Test::Unit::TestCase
112
+ self.use_instantiated_fixtures = false
113
+ fixtures :topics, :developers, :accounts
114
+
115
+ def test_without_complete_instantiation
116
+ assert_nil @topics
117
+ assert_nil @first
118
+ end
119
+
120
+ def test_fixtures_from_root_yml_without_instantiation
121
+ assert_nil @unknown
122
+ end
123
+ end
124
+
125
+
126
+ class TransactionalFixturesTest < Test::Unit::TestCase
127
+ self.use_transactional_fixtures = true
128
+ fixtures :topics
129
+
130
+ def test_destroy
131
+ assert_not_nil @first
132
+ @first.destroy
133
+ end
134
+
135
+ def test_destroy_just_kidding
136
+ assert_not_nil @first
137
+ end
109
138
  end
@@ -0,0 +1,104 @@
1
+ require 'abstract_unit'
2
+ require 'fixtures/person'
3
+ require File.dirname(__FILE__) + '/fixtures/migrations/1_people_have_last_names'
4
+ require File.dirname(__FILE__) + '/fixtures/migrations/2_we_need_reminders'
5
+
6
+ class Reminder < ActiveRecord::Base; end
7
+
8
+ class MigrationTest < Test::Unit::TestCase
9
+ def setup
10
+ end
11
+
12
+ def teardown
13
+ ActiveRecord::Base.connection.initialize_schema_information
14
+ ActiveRecord::Base.connection.update "UPDATE schema_info SET version = 0"
15
+
16
+ Reminder.connection.drop_table("reminders") rescue nil
17
+ Reminder.reset_column_information
18
+
19
+ Person.connection.remove_column("people", "last_name") rescue nil
20
+ Person.reset_column_information
21
+ end
22
+
23
+ def test_add_remove_single_field
24
+ assert !Person.column_methods_hash.include?(:last_name)
25
+
26
+ PeopleHaveLastNames.up
27
+
28
+ Person.reset_column_information
29
+ assert Person.column_methods_hash.include?(:last_name)
30
+
31
+ PeopleHaveLastNames.down
32
+
33
+ Person.reset_column_information
34
+ assert !Person.column_methods_hash.include?(:last_name)
35
+ end
36
+
37
+ def test_add_table
38
+ assert_raises(ActiveRecord::StatementInvalid) { Reminder.column_methods_hash }
39
+
40
+ WeNeedReminders.up
41
+
42
+ assert Reminder.create("content" => "hello world", "remind_at" => Time.now)
43
+ assert "hello world", Reminder.find_first
44
+
45
+ WeNeedReminders.down
46
+ assert_raises(ActiveRecord::StatementInvalid) { Reminder.find_first }
47
+ end
48
+
49
+ def test_migrator
50
+ assert !Person.column_methods_hash.include?(:last_name)
51
+ assert_raises(ActiveRecord::StatementInvalid) { Reminder.column_methods_hash }
52
+
53
+ ActiveRecord::Migrator.up(File.dirname(__FILE__) + '/fixtures/migrations/')
54
+
55
+ assert_equal 2, ActiveRecord::Migrator.current_version
56
+ Person.reset_column_information
57
+ assert Person.column_methods_hash.include?(:last_name)
58
+ assert Reminder.create("content" => "hello world", "remind_at" => Time.now)
59
+ assert "hello world", Reminder.find_first
60
+
61
+
62
+ ActiveRecord::Migrator.down(File.dirname(__FILE__) + '/fixtures/migrations/')
63
+
64
+ assert_equal 0, ActiveRecord::Migrator.current_version
65
+ Person.reset_column_information
66
+ assert !Person.column_methods_hash.include?(:last_name)
67
+ assert_raises(ActiveRecord::StatementInvalid) { Reminder.find_first }
68
+ end
69
+
70
+ def test_migrator_one_up
71
+ assert !Person.column_methods_hash.include?(:last_name)
72
+ assert_raises(ActiveRecord::StatementInvalid) { Reminder.column_methods_hash }
73
+
74
+ ActiveRecord::Migrator.up(File.dirname(__FILE__) + '/fixtures/migrations/', 1)
75
+
76
+ Person.reset_column_information
77
+ assert Person.column_methods_hash.include?(:last_name)
78
+ assert_raises(ActiveRecord::StatementInvalid) { Reminder.column_methods_hash }
79
+
80
+
81
+ ActiveRecord::Migrator.up(File.dirname(__FILE__) + '/fixtures/migrations/', 2)
82
+
83
+ assert Reminder.create("content" => "hello world", "remind_at" => Time.now)
84
+ assert "hello world", Reminder.find_first
85
+ end
86
+
87
+ def test_migrator_one_down
88
+ ActiveRecord::Migrator.up(File.dirname(__FILE__) + '/fixtures/migrations/')
89
+
90
+ ActiveRecord::Migrator.down(File.dirname(__FILE__) + '/fixtures/migrations/', 1)
91
+
92
+ Person.reset_column_information
93
+ assert Person.column_methods_hash.include?(:last_name)
94
+ assert_raises(ActiveRecord::StatementInvalid) { Reminder.column_methods_hash }
95
+ end
96
+
97
+ def test_migrator_one_up_one_down
98
+ ActiveRecord::Migrator.up(File.dirname(__FILE__) + '/fixtures/migrations/', 1)
99
+ ActiveRecord::Migrator.down(File.dirname(__FILE__) + '/fixtures/migrations/', 0)
100
+
101
+ assert !Person.column_methods_hash.include?(:last_name)
102
+ assert_raises(ActiveRecord::StatementInvalid) { Reminder.column_methods_hash }
103
+ end
104
+ end
@@ -42,15 +42,19 @@ class ReflectionTest < Test::Unit::TestCase
42
42
 
43
43
  def test_aggregation_reflection
44
44
  reflection_for_address = ActiveRecord::Reflection::AggregateReflection.new(
45
- :address, { :mapping => [ %w(address_street street), %w(address_city city), %w(address_country country) ] }, Customer
45
+ :composed_of, :address, { :mapping => [ %w(address_street street), %w(address_city city), %w(address_country country) ] }, Customer
46
46
  )
47
47
 
48
48
  reflection_for_balance = ActiveRecord::Reflection::AggregateReflection.new(
49
- :balance, { :class_name => "Money", :mapping => %w(balance amount) }, Customer
49
+ :composed_of, :balance, { :class_name => "Money", :mapping => %w(balance amount) }, Customer
50
+ )
51
+
52
+ reflection_for_gps_location = ActiveRecord::Reflection::AggregateReflection.new(
53
+ :composed_of, :gps_location, { }, Customer
50
54
  )
51
55
 
52
56
  assert_equal(
53
- [ reflection_for_address, reflection_for_balance ],
57
+ [ reflection_for_address, reflection_for_balance, reflection_for_gps_location ],
54
58
  Customer.reflect_on_all_aggregations
55
59
  )
56
60
 
@@ -61,7 +65,7 @@ class ReflectionTest < Test::Unit::TestCase
61
65
 
62
66
  def test_association_reflection
63
67
  reflection_for_clients = ActiveRecord::Reflection::AssociationReflection.new(
64
- :clients, { :order => "id", :dependent => true }, Firm
68
+ :has_many, :clients, { :order => "id", :dependent => true }, Firm
65
69
  )
66
70
 
67
71
  assert_equal reflection_for_clients, Firm.reflect_on_association(:clients)
@@ -604,4 +604,42 @@ class ValidationsTest < Test::Unit::TestCase
604
604
  assert !r.valid?
605
605
  assert_equal r.errors.on(:topic).first, "This string contains 'single' and \"double\" quotes"
606
606
  end
607
+
608
+ def test_validates_numericality_of_with_string
609
+ Topic.validates_numericality_of( :replies_count )
610
+ ["not a number","42 not a number","0xdeadbeef","00-1","-+019.0","12.12.13.12",nil].each do |v|
611
+ t = Topic.create("title" => "numeric test", "content" => "whatever", "replies_count" => "not a number")
612
+ assert !t.valid?, "#{v} not rejected as a number"
613
+ assert t.errors.on(:replies_count)
614
+ end
615
+ end
616
+
617
+ def test_validates_numericality_of
618
+ Topic.validates_numericality_of( :replies_count )
619
+ ["10", "10.0", "10.5", "-10.5", "-0.0001","0090","-090","-090.1"].each do |v|
620
+ t = Topic.create("title" => "numeric test", "content" => "whatever", "replies_count" => v)
621
+ assert t.valid?, "#{v} not recognized as a number"
622
+ # we cannot check this as replies_count is actually an integer field
623
+ #assert_in_delta v.to_f, t.replies_count, 0.0000001
624
+ end
625
+ end
626
+
627
+ def test_validates_numericality_of_int_with_string
628
+ Topic.validates_numericality_of( :replies_count, :only_integer => true )
629
+ ["not a number","42 not a number","0xdeadbeef","0-1","--3","+-3","+3-1",nil].each do |v|
630
+ t = Topic.create("title" => "numeric test", "content" => "whatever", "replies_count" => v)
631
+ assert !t.valid?, "#{v} not rejected as integer"
632
+ assert t.errors.on(:replies_count)
633
+ end
634
+ end
635
+
636
+ def test_validates_numericality_of_int
637
+ Topic.validates_numericality_of( :replies_count, :only_integer => true )
638
+ ["42", "+42", "-42", "042", "0042", "-042", 42].each do |v|
639
+ t = Topic.create("title" => "numeric test", "content" => "whatever", "replies_count" => v)
640
+ assert t.valid?, "#{v} not recognized as integer"
641
+ assert_equal v.to_i, t.replies_count
642
+ end
643
+ end
644
+
607
645
  end
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.8.4
2
+ rubygems_version: 0.8.6
3
3
  specification_version: 1
4
4
  name: activerecord
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.7.0
7
- date: 2005-02-24
6
+ version: 1.8.0
7
+ date: 2005-03-07
8
8
  summary: Implements the ActiveRecord pattern for ORM.
9
9
  require_paths:
10
10
  - lib
@@ -46,6 +46,7 @@ files:
46
46
  - lib/active_record/deprecated_associations.rb
47
47
  - lib/active_record/fixtures.rb
48
48
  - lib/active_record/locking.rb
49
+ - lib/active_record/migration.rb
49
50
  - lib/active_record/observer.rb
50
51
  - lib/active_record/reflection.rb
51
52
  - lib/active_record/timestamp.rb
@@ -93,6 +94,7 @@ files:
93
94
  - test/inheritance_test.rb
94
95
  - test/lifecycle_test.rb
95
96
  - test/locking_test.rb
97
+ - test/migration_mysql.rb
96
98
  - test/mixin_test.rb
97
99
  - test/modules_test.rb
98
100
  - test/multiple_db_test.rb
@@ -141,6 +143,7 @@ files:
141
143
  - test/fixtures/entrants.yml
142
144
  - test/fixtures/fixture_database.sqlite
143
145
  - test/fixtures/fixture_database_2.sqlite
146
+ - test/fixtures/migrations
144
147
  - test/fixtures/mixin.rb
145
148
  - test/fixtures/mixins.yml
146
149
  - test/fixtures/movie.rb
@@ -191,6 +194,8 @@ files:
191
194
  - test/fixtures/developers_projects/david_action_controller
192
195
  - test/fixtures/developers_projects/david_active_record
193
196
  - test/fixtures/developers_projects/jamis_active_record
197
+ - test/fixtures/migrations/1_people_have_last_names.rb
198
+ - test/fixtures/migrations/2_we_need_reminders.rb
194
199
  - test/fixtures/naked/csv
195
200
  - test/fixtures/naked/yml
196
201
  - test/fixtures/naked/csv/accounts.csv
@@ -221,5 +226,5 @@ dependencies:
221
226
  -
222
227
  - "="
223
228
  - !ruby/object:Gem::Version
224
- version: 1.0.0
229
+ version: 1.0.1
225
230
  version: