rom-cassandra 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +7 -0
  2. data/.coveralls.yml +2 -0
  3. data/.gitignore +9 -0
  4. data/.metrics +9 -0
  5. data/.rspec +2 -0
  6. data/.rubocop.yml +2 -0
  7. data/.travis.yml +26 -0
  8. data/.yardopts +3 -0
  9. data/CHANGELOG.md +3 -0
  10. data/Gemfile +7 -0
  11. data/Guardfile +14 -0
  12. data/LICENSE +21 -0
  13. data/README.md +83 -0
  14. data/Rakefile +34 -0
  15. data/config/metrics/STYLEGUIDE +230 -0
  16. data/config/metrics/cane.yml +5 -0
  17. data/config/metrics/churn.yml +6 -0
  18. data/config/metrics/flay.yml +2 -0
  19. data/config/metrics/metric_fu.yml +14 -0
  20. data/config/metrics/reek.yml +1 -0
  21. data/config/metrics/roodi.yml +24 -0
  22. data/config/metrics/rubocop.yml +84 -0
  23. data/config/metrics/saikuro.yml +3 -0
  24. data/config/metrics/simplecov.yml +6 -0
  25. data/config/metrics/yardstick.yml +37 -0
  26. data/lib/rom-cassandra.rb +3 -0
  27. data/lib/rom/cassandra.rb +33 -0
  28. data/lib/rom/cassandra/commands.rb +53 -0
  29. data/lib/rom/cassandra/commands/batch.rb +54 -0
  30. data/lib/rom/cassandra/commands/create.rb +38 -0
  31. data/lib/rom/cassandra/commands/delete.rb +38 -0
  32. data/lib/rom/cassandra/commands/update.rb +38 -0
  33. data/lib/rom/cassandra/dataset.rb +102 -0
  34. data/lib/rom/cassandra/gateway.rb +115 -0
  35. data/lib/rom/cassandra/migrations.rb +30 -0
  36. data/lib/rom/cassandra/migrations/generator.rb +68 -0
  37. data/lib/rom/cassandra/migrations/generator/migration.erb +32 -0
  38. data/lib/rom/cassandra/migrations/logger.rb +28 -0
  39. data/lib/rom/cassandra/migrations/migration.rb +107 -0
  40. data/lib/rom/cassandra/migrations/migrator.rb +103 -0
  41. data/lib/rom/cassandra/migrations/runner.rb +119 -0
  42. data/lib/rom/cassandra/migrations/runner_down.rb +49 -0
  43. data/lib/rom/cassandra/migrations/runner_up.rb +50 -0
  44. data/lib/rom/cassandra/query.rb +43 -0
  45. data/lib/rom/cassandra/relation.rb +88 -0
  46. data/lib/rom/cassandra/session.rb +50 -0
  47. data/lib/rom/cassandra/tasks.rb +6 -0
  48. data/lib/rom/cassandra/version.rb +15 -0
  49. data/lib/tasks/db.rake +16 -0
  50. data/rom-cassandra.gemspec +33 -0
  51. data/spec/config/reset_cluster.rb +28 -0
  52. data/spec/config/rom.rb +3 -0
  53. data/spec/config/test_module.rb +7 -0
  54. data/spec/integration/batch_spec.rb +36 -0
  55. data/spec/integration/create_spec.rb +33 -0
  56. data/spec/integration/delete_spec.rb +33 -0
  57. data/spec/integration/migrate/20150825142003_create_users.rb +24 -0
  58. data/spec/integration/migrate/20150825142024_create_logs.rb +17 -0
  59. data/spec/integration/migrate_spec.rb +47 -0
  60. data/spec/integration/relation_spec.rb +27 -0
  61. data/spec/integration/update_spec.rb +33 -0
  62. data/spec/shared/fake_migrate_folder.rb +21 -0
  63. data/spec/shared/users.rb +20 -0
  64. data/spec/spec_helper.rb +17 -0
  65. data/spec/unit/commands/batch_spec.rb +86 -0
  66. data/spec/unit/commands/create_spec.rb +77 -0
  67. data/spec/unit/commands/delete_spec.rb +77 -0
  68. data/spec/unit/commands/update_spec.rb +77 -0
  69. data/spec/unit/dataset_spec.rb +130 -0
  70. data/spec/unit/gateway_spec.rb +140 -0
  71. data/spec/unit/migrations/generator_spec.rb +31 -0
  72. data/spec/unit/migrations/logger_spec.rb +21 -0
  73. data/spec/unit/migrations/migration_spec.rb +59 -0
  74. data/spec/unit/migrations/migrator_spec.rb +120 -0
  75. data/spec/unit/migrations/runner_down_spec.rb +65 -0
  76. data/spec/unit/migrations/runner_spec.rb +142 -0
  77. data/spec/unit/migrations/runner_up_spec.rb +67 -0
  78. data/spec/unit/query_spec.rb +21 -0
  79. data/spec/unit/relation_spec.rb +142 -0
  80. data/spec/unit/session_spec.rb +55 -0
  81. data/spec/unit/tasks/create_migration_spec.rb +41 -0
  82. metadata +242 -0
@@ -0,0 +1,67 @@
1
+ # encoding: utf-8
2
+
3
+ describe ROM::Cassandra::Migrations::RunnerUp do
4
+
5
+ let(:klass) { Class.new described_class }
6
+ let(:runner) { klass.new session, logger, path }
7
+ let(:session) { double :session, call: nil }
8
+ let(:logger) { double :logger, info: nil }
9
+ let(:path) { "foo/20150824103059_add_foo.rb" }
10
+
11
+ before do
12
+ klass.send(:define_method, :require) do |_|
13
+ AddFoo = Class.new(ROM::Cassandra::Migrations::Migration)
14
+ end
15
+ klass.send(:define_method, :select_version) { [] }
16
+ end
17
+
18
+ describe "#migrate?" do
19
+ subject { runner.migrate? }
20
+
21
+ context "when select_version isn't empty" do
22
+ before do
23
+ klass.send(:define_method, :select_version) { [{ id: 20150824103059 }] }
24
+ end
25
+
26
+ it { is_expected.to eql false }
27
+ end
28
+
29
+ context "when select_version is empty" do
30
+ it { is_expected.to eql true }
31
+ end
32
+ end # describe #migrate?
33
+
34
+ describe "#apply" do
35
+ after { runner.apply }
36
+ before { allow(runner).to receive(:migration) { migration } }
37
+
38
+ let(:migration) { double :migration, up: nil }
39
+
40
+ it "rolls back migration" do
41
+ expect(migration).to receive(:up).once
42
+ end
43
+ end # describe #apply
44
+
45
+ describe "#register" do
46
+ after { runner.register }
47
+
48
+ it "sends the DELETE query to session" do
49
+ expect(session)
50
+ .to receive(:call)
51
+ .with "INSERT INTO rom.migrations (version) VALUES ('20150824103059');"
52
+ end
53
+ end # describe #register
54
+
55
+ describe "#log" do
56
+ after { runner.log }
57
+
58
+ it "logs the message" do
59
+ expect(logger)
60
+ .to receive(:info)
61
+ .with "Apply migration 20150824103059\n"
62
+ end
63
+ end # describe #log
64
+
65
+ after { Object.send :remove_const, :AddFoo if Object.const_defined? :AddFoo }
66
+
67
+ end # describe ROM::Cassandra::Migrations::RunnerUp
@@ -0,0 +1,21 @@
1
+ # encoding: utf-8
2
+
3
+ describe ROM::Cassandra::Query do
4
+
5
+ let(:builder) { described_class.new }
6
+ subject { builder.keyspace(:foo).table(:bar).select }
7
+
8
+ it "encapsulates queries" do
9
+ expect(subject).to be_kind_of described_class
10
+ end
11
+
12
+ it "builds queries" do
13
+ expect(subject.to_s).to eql "SELECT * FROM foo.bar;"
14
+ end
15
+
16
+ it "responds to methods allowed by query" do
17
+ expect(subject).to respond_to :select
18
+ expect(subject).not_to respond_to :foo
19
+ end
20
+
21
+ end # describe ROM::Cassandra::Query
@@ -0,0 +1,142 @@
1
+ # encoding: utf-8
2
+
3
+ describe ROM::Cassandra::Relation do
4
+
5
+ let(:relation) { described_class.new source }
6
+ let(:source) { double :source, get: dataset }
7
+ let(:dataset) { double :dataset, foo: :updated_dataset }
8
+
9
+ describe ".new" do
10
+ subject { relation }
11
+
12
+ it { is_expected.to be_kind_of ROM::Relation }
13
+ end # describe .new
14
+
15
+ describe "#source" do
16
+ subject { relation.source }
17
+
18
+ it "stores the source dataset" do
19
+ expect(subject).to eql source
20
+ end
21
+ end # describe #source
22
+
23
+ describe "#dataset" do
24
+ subject { relation.dataset }
25
+
26
+ it "applies #get to the source dataset" do
27
+ expect(subject).to eql dataset
28
+ end
29
+ end # describe #dataset
30
+
31
+ describe "#insert_query" do
32
+ subject { relation.insert_query }
33
+
34
+ before { allow(source).to receive(:insert) { insert } }
35
+ let(:insert) { double :insert }
36
+
37
+ it "returns a relation" do
38
+ expect(subject).to be_kind_of described_class
39
+ end
40
+
41
+ it "preserves #source" do
42
+ expect(subject.source).to eql source
43
+ end
44
+
45
+ it "sets source.insert as a dataset" do
46
+ expect(subject.dataset).to eql insert
47
+ end
48
+ end # describe #insert_query
49
+
50
+ describe "#update_query" do
51
+ subject { relation.update_query }
52
+
53
+ before { allow(source).to receive(:update) { update } }
54
+ let(:update) { double :update }
55
+
56
+ it "returns a relation" do
57
+ expect(subject).to be_kind_of described_class
58
+ end
59
+
60
+ it "preserves #source" do
61
+ expect(subject.source).to eql source
62
+ end
63
+
64
+ it "sets source.update as a dataset" do
65
+ expect(subject.dataset).to eql update
66
+ end
67
+ end # describe #update_query
68
+
69
+ describe "#delete_query" do
70
+ subject { relation.delete_query }
71
+
72
+ before { allow(source).to receive(:delete) { delete } }
73
+ let(:delete) { double :delete }
74
+
75
+ it "returns a relation" do
76
+ expect(subject).to be_kind_of described_class
77
+ end
78
+
79
+ it "preserves #source" do
80
+ expect(subject.source).to eql source
81
+ end
82
+
83
+ it "sets source.delete as a dataset" do
84
+ expect(subject.dataset).to eql delete
85
+ end
86
+ end # describe #delete_query
87
+
88
+ describe "#batch_query" do
89
+ subject { relation.batch_query }
90
+
91
+ before { allow(source).to receive(:batch) { batch } }
92
+ let(:batch) { double :batch }
93
+
94
+ it "returns a relation" do
95
+ expect(subject).to be_kind_of described_class
96
+ end
97
+
98
+ it "preserves #source" do
99
+ expect(subject.source).to eql source
100
+ end
101
+
102
+ it "sets source.batch as a dataset" do
103
+ expect(subject.dataset).to eql batch
104
+ end
105
+ end # describe #batch_query
106
+
107
+ describe "#respond_to?" do
108
+ context "method, defined for #dataset" do
109
+ subject { relation.respond_to? :foo }
110
+
111
+ it { is_expected.to eql true }
112
+ end
113
+
114
+ context "method, not defined for #dataset" do
115
+ subject { relation.respond_to? :bar }
116
+
117
+ it { is_expected.to eql false }
118
+ end
119
+ end # describe #all
120
+
121
+ describe "#method_missing" do
122
+ subject { relation.foo :bar }
123
+
124
+ it "forwards call to #dataset" do
125
+ expect(dataset).to receive(:foo).with(:bar)
126
+ subject
127
+ end
128
+
129
+ it "returns a relation" do
130
+ expect(subject).to be_kind_of described_class
131
+ end
132
+
133
+ it "preserves #source" do
134
+ expect(subject.source).to eql source
135
+ end
136
+
137
+ it "updates dataset" do
138
+ expect(subject.dataset).to eql :updated_dataset
139
+ end
140
+ end # describe #all
141
+
142
+ end # describe ROM::Cassandra::Relation
@@ -0,0 +1,55 @@
1
+ # encoding: utf-8
2
+
3
+ describe ROM::Cassandra::Session do
4
+
5
+ let(:session) { described_class.new(uri) }
6
+ let(:uri) { { hosts: ["127.0.0.1"], port: 9042 } }
7
+ let(:query) { double to_s: "SELECT * FROM auth.users;" }
8
+
9
+ describe ".new" do
10
+ subject { session }
11
+ let(:uri) { { hosts: ["127.0.0.1"], port: 1000 } }
12
+
13
+ it "fails with wrong uri" do
14
+ expect { session }.to raise_error StandardError
15
+ end
16
+ end
17
+
18
+ describe "#uri" do
19
+ subject { session.uri }
20
+
21
+ context "from hash" do
22
+ it { is_expected.to eql uri }
23
+ end
24
+
25
+ context "from nil" do
26
+ let(:session) { described_class.new }
27
+
28
+ it { is_expected.to eql uri }
29
+ end
30
+
31
+ context "from string" do
32
+ let(:session) { described_class.new "127.0.0.1:9042" }
33
+
34
+ it { is_expected.to eql uri }
35
+ end
36
+
37
+ context "from string and hash" do
38
+ let(:session) { described_class.new "127.0.0.1", port: 9042 }
39
+
40
+ it { is_expected.to eql uri }
41
+ end
42
+ end # describe #uri
43
+
44
+ describe "#call" do
45
+ subject { session.call(query) }
46
+
47
+ it "returns the result of running query" do
48
+ expect(subject).to eql [
49
+ { "id" => 1, "name" => "joe" },
50
+ { "id" => 2, "name" => "jane" }
51
+ ]
52
+ end
53
+ end # describe #call
54
+
55
+ end # describe ROM::Cassandra::Session
@@ -0,0 +1,41 @@
1
+ # encoding: utf-8
2
+
3
+ require "rom/cassandra/tasks"
4
+
5
+ describe "rake db:create_migration" do
6
+
7
+ let(:generator) { ROM::Cassandra::Migrations::Generator }
8
+ let(:task) { Rake::Task["db:create_migration"] }
9
+
10
+ before { allow(generator).to receive(:call) }
11
+ before { $stdout = StringIO.new }
12
+
13
+ context "without options" do
14
+ subject { task.invoke }
15
+
16
+ it "works" do
17
+ expect(generator).not_to receive(:call)
18
+ expect { subject }.to raise_error SystemExit
19
+ end
20
+ end
21
+
22
+ context "with name" do
23
+ after { task.invoke "add_foo" }
24
+
25
+ it "works" do
26
+ expect(generator).to receive(:call).with("add_foo", "db/migrate")
27
+ end
28
+ end
29
+
30
+ context "with name and path" do
31
+ after { task.invoke "add_foo", "custom" }
32
+
33
+ it "works" do
34
+ expect(generator).to receive(:call).with("add_foo", "custom")
35
+ end
36
+ end
37
+
38
+ after { $stdout = STDOUT }
39
+ after { task.reenable }
40
+
41
+ end # describe rake db:create_migration
metadata ADDED
@@ -0,0 +1,242 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rom-cassandra
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Andrew Kozin
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-08-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: cassandra-driver
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: inflecto
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: query_builder
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rom
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.9.1
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.9.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: hexx-rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.5'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.5'
83
+ - !ruby/object:Gem::Dependency
84
+ name: timecop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.8'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.8'
97
+ description: Cassandra support for Ruby Object Mapper
98
+ email:
99
+ - andrew.kozin@gmail.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files:
103
+ - README.md
104
+ - LICENSE
105
+ files:
106
+ - ".coveralls.yml"
107
+ - ".gitignore"
108
+ - ".metrics"
109
+ - ".rspec"
110
+ - ".rubocop.yml"
111
+ - ".travis.yml"
112
+ - ".yardopts"
113
+ - CHANGELOG.md
114
+ - Gemfile
115
+ - Guardfile
116
+ - LICENSE
117
+ - README.md
118
+ - Rakefile
119
+ - config/metrics/STYLEGUIDE
120
+ - config/metrics/cane.yml
121
+ - config/metrics/churn.yml
122
+ - config/metrics/flay.yml
123
+ - config/metrics/metric_fu.yml
124
+ - config/metrics/reek.yml
125
+ - config/metrics/roodi.yml
126
+ - config/metrics/rubocop.yml
127
+ - config/metrics/saikuro.yml
128
+ - config/metrics/simplecov.yml
129
+ - config/metrics/yardstick.yml
130
+ - lib/rom-cassandra.rb
131
+ - lib/rom/cassandra.rb
132
+ - lib/rom/cassandra/commands.rb
133
+ - lib/rom/cassandra/commands/batch.rb
134
+ - lib/rom/cassandra/commands/create.rb
135
+ - lib/rom/cassandra/commands/delete.rb
136
+ - lib/rom/cassandra/commands/update.rb
137
+ - lib/rom/cassandra/dataset.rb
138
+ - lib/rom/cassandra/gateway.rb
139
+ - lib/rom/cassandra/migrations.rb
140
+ - lib/rom/cassandra/migrations/generator.rb
141
+ - lib/rom/cassandra/migrations/generator/migration.erb
142
+ - lib/rom/cassandra/migrations/logger.rb
143
+ - lib/rom/cassandra/migrations/migration.rb
144
+ - lib/rom/cassandra/migrations/migrator.rb
145
+ - lib/rom/cassandra/migrations/runner.rb
146
+ - lib/rom/cassandra/migrations/runner_down.rb
147
+ - lib/rom/cassandra/migrations/runner_up.rb
148
+ - lib/rom/cassandra/query.rb
149
+ - lib/rom/cassandra/relation.rb
150
+ - lib/rom/cassandra/session.rb
151
+ - lib/rom/cassandra/tasks.rb
152
+ - lib/rom/cassandra/version.rb
153
+ - lib/tasks/db.rake
154
+ - rom-cassandra.gemspec
155
+ - spec/config/reset_cluster.rb
156
+ - spec/config/rom.rb
157
+ - spec/config/test_module.rb
158
+ - spec/integration/batch_spec.rb
159
+ - spec/integration/create_spec.rb
160
+ - spec/integration/delete_spec.rb
161
+ - spec/integration/migrate/20150825142003_create_users.rb
162
+ - spec/integration/migrate/20150825142024_create_logs.rb
163
+ - spec/integration/migrate_spec.rb
164
+ - spec/integration/relation_spec.rb
165
+ - spec/integration/update_spec.rb
166
+ - spec/shared/fake_migrate_folder.rb
167
+ - spec/shared/users.rb
168
+ - spec/spec_helper.rb
169
+ - spec/unit/commands/batch_spec.rb
170
+ - spec/unit/commands/create_spec.rb
171
+ - spec/unit/commands/delete_spec.rb
172
+ - spec/unit/commands/update_spec.rb
173
+ - spec/unit/dataset_spec.rb
174
+ - spec/unit/gateway_spec.rb
175
+ - spec/unit/migrations/generator_spec.rb
176
+ - spec/unit/migrations/logger_spec.rb
177
+ - spec/unit/migrations/migration_spec.rb
178
+ - spec/unit/migrations/migrator_spec.rb
179
+ - spec/unit/migrations/runner_down_spec.rb
180
+ - spec/unit/migrations/runner_spec.rb
181
+ - spec/unit/migrations/runner_up_spec.rb
182
+ - spec/unit/query_spec.rb
183
+ - spec/unit/relation_spec.rb
184
+ - spec/unit/session_spec.rb
185
+ - spec/unit/tasks/create_migration_spec.rb
186
+ homepage: https://rom-rb.org
187
+ licenses:
188
+ - MIT
189
+ metadata: {}
190
+ post_install_message:
191
+ rdoc_options: []
192
+ require_paths:
193
+ - lib
194
+ required_ruby_version: !ruby/object:Gem::Requirement
195
+ requirements:
196
+ - - ">="
197
+ - !ruby/object:Gem::Version
198
+ version: 1.9.3
199
+ required_rubygems_version: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - ">="
202
+ - !ruby/object:Gem::Version
203
+ version: '0'
204
+ requirements: []
205
+ rubyforge_project:
206
+ rubygems_version: 2.4.6
207
+ signing_key:
208
+ specification_version: 4
209
+ summary: Cassandra support for Ruby Object Mapper
210
+ test_files:
211
+ - spec/config/reset_cluster.rb
212
+ - spec/config/rom.rb
213
+ - spec/config/test_module.rb
214
+ - spec/integration/batch_spec.rb
215
+ - spec/integration/create_spec.rb
216
+ - spec/integration/delete_spec.rb
217
+ - spec/integration/migrate/20150825142003_create_users.rb
218
+ - spec/integration/migrate/20150825142024_create_logs.rb
219
+ - spec/integration/migrate_spec.rb
220
+ - spec/integration/relation_spec.rb
221
+ - spec/integration/update_spec.rb
222
+ - spec/shared/fake_migrate_folder.rb
223
+ - spec/shared/users.rb
224
+ - spec/spec_helper.rb
225
+ - spec/unit/commands/batch_spec.rb
226
+ - spec/unit/commands/create_spec.rb
227
+ - spec/unit/commands/delete_spec.rb
228
+ - spec/unit/commands/update_spec.rb
229
+ - spec/unit/dataset_spec.rb
230
+ - spec/unit/gateway_spec.rb
231
+ - spec/unit/migrations/generator_spec.rb
232
+ - spec/unit/migrations/logger_spec.rb
233
+ - spec/unit/migrations/migration_spec.rb
234
+ - spec/unit/migrations/migrator_spec.rb
235
+ - spec/unit/migrations/runner_down_spec.rb
236
+ - spec/unit/migrations/runner_spec.rb
237
+ - spec/unit/migrations/runner_up_spec.rb
238
+ - spec/unit/query_spec.rb
239
+ - spec/unit/relation_spec.rb
240
+ - spec/unit/session_spec.rb
241
+ - spec/unit/tasks/create_migration_spec.rb
242
+ has_rdoc: