cequel 1.5.0 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/Appraisals +4 -17
  3. data/CHANGELOG.md +8 -0
  4. data/DRIVER_TODO +5 -0
  5. data/Gemfile +4 -0
  6. data/Gemfile.lock +110 -65
  7. data/README.md +4 -3
  8. data/Rakefile +39 -3
  9. data/Vagrantfile +10 -13
  10. data/cequel.gemspec +42 -0
  11. data/lib/cequel.rb +2 -2
  12. data/lib/cequel/metal/data_set.rb +1 -1
  13. data/lib/cequel/metal/keyspace.rb +23 -15
  14. data/lib/cequel/metal/logging.rb +1 -1
  15. data/lib/cequel/metal/request_logger.rb +1 -1
  16. data/lib/cequel/metal/writer.rb +1 -1
  17. data/lib/cequel/record.rb +1 -1
  18. data/lib/cequel/record/association_collection.rb +1 -1
  19. data/lib/cequel/record/associations.rb +1 -1
  20. data/lib/cequel/record/belongs_to_association.rb +1 -1
  21. data/lib/cequel/record/collection.rb +34 -28
  22. data/lib/cequel/record/data_set_builder.rb +1 -1
  23. data/lib/cequel/record/lazy_record_collection.rb +1 -1
  24. data/lib/cequel/record/persistence.rb +4 -2
  25. data/lib/cequel/record/properties.rb +2 -2
  26. data/lib/cequel/record/record_set.rb +1 -1
  27. data/lib/cequel/record/schema.rb +2 -2
  28. data/lib/cequel/record/scoped.rb +1 -1
  29. data/lib/cequel/schema/create_table_dsl.rb +1 -1
  30. data/lib/cequel/schema/keyspace.rb +17 -2
  31. data/lib/cequel/schema/migration_validator.rb +1 -1
  32. data/lib/cequel/schema/update_table_dsl.rb +1 -1
  33. data/lib/cequel/type.rb +5 -5
  34. data/lib/cequel/util.rb +30 -0
  35. data/lib/cequel/uuids.rb +5 -5
  36. data/lib/cequel/version.rb +1 -1
  37. data/spec/examples/metal/keyspace_spec.rb +1 -1
  38. data/spec/examples/record/list_spec.rb +9 -0
  39. data/spec/examples/record/persistence_spec.rb +2 -2
  40. data/spec/examples/schema/keyspace_spec.rb +1 -2
  41. data/spec/examples/schema/table_reader_spec.rb +1 -1
  42. data/spec/examples/spec_helper.rb +3 -0
  43. data/spec/examples/uuids_spec.rb +1 -1
  44. data/spec/support/helpers.rb +7 -5
  45. data/tags +836 -0
  46. metadata +49 -38
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b668ffc98274e61d21a3aef2e10ea369ee23bd16
4
- data.tar.gz: a5bddb78739ecdd00f0bc663e40535460b92410e
3
+ metadata.gz: f8b4cf39dc447c80169330a707b43b5086d550b7
4
+ data.tar.gz: 06d0a4ee8090a9578ab5f6092ff24b4c81c535b3
5
5
  SHA512:
6
- metadata.gz: acd56facacd1b9c6000fb73bd68719bb7e2c8e64f89069e06cf37480e6b1ac2924754b5a34367a87cac48bd233b62e1bc418da54933af52204b5eefa2494cc1f
7
- data.tar.gz: f9b63848ae3bd83d070bc1251142e40f186f6d4ff924f4f2dd6ab717d148ff85efe56db1b7a6823ca3b64d72cd52ccbd5528254064fc69fb502fea8a7c09bde5
6
+ metadata.gz: 66fc988c9a4a54f45db1872bd12b073220161c5f1a1cdc6359001b6b2058528ba7184b3b158187c5f12190dd3c9534bf0c5202cef90ec411d652eaebb83736c1
7
+ data.tar.gz: 99e197f7a3bee6c40bba033032d13d910e928f8fc162b3e3bd268559515d391d3a116f6d8063858acee30bd9d4c38473f9b6d1c10170a85e1cb6ce34be74e98d
data/Appraisals CHANGED
@@ -1,3 +1,7 @@
1
+ appraise "rails-4.2" do
2
+ gem "activemodel", "~> 4.2.0"
3
+ end
4
+
1
5
  appraise "rails-4.1" do
2
6
  gem "activemodel", "~> 4.1.0"
3
7
  end
@@ -10,20 +14,3 @@ appraise "rails-3.2" do
10
14
  gem "activemodel", "~> 3.2.0"
11
15
  gem "tzinfo", "~> 0.3"
12
16
  end
13
-
14
- appraise "rails-3.1" do
15
- gem "activemodel", "~> 3.1.0"
16
- gem "tzinfo", "~> 0.3"
17
- end
18
-
19
- appraise "thrift" do
20
- gem "cassandra-cql", "~> 1.2"
21
- end
22
-
23
- appraise "cql-rb-1" do
24
- gem "cql-rb", "~> 1.2"
25
- end
26
-
27
- appraise "cql-rb-2" do
28
- gem "cql-rb", "~> 2.0"
29
- end
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 1.6.0
2
+
3
+ * Replace cql-rb with cassandra-driver
4
+ * Don't overwrite ActiveSupport's `Module#forwardable` (fixes Rails 4.2
5
+ incompatibility)
6
+ * Don't interact with updater/deleter if new record
7
+ * Drop support for Rails 3.1
8
+
1
9
  ## 1.5.0
2
10
 
3
11
  * Support ActiveSupport instrumentation of Record create, update, destroy
data/DRIVER_TODO ADDED
@@ -0,0 +1,5 @@
1
+ * Why is it so slow?
2
+ * Use built in batches
3
+ * Use built in bind variable replacement
4
+ * Use built in pagination(?)
5
+ * Use built in retry(?)
data/Gemfile CHANGED
@@ -8,6 +8,10 @@ group :debug do
8
8
  gem 'pry', '~> 0.9'
9
9
  end
10
10
 
11
+ group :development do
12
+ gem 'rubocop', require: nil
13
+ end
14
+
11
15
  gem 'racc', '~> 1.4', :platforms => :rbx
12
16
  gem 'rubysl', '~> 2.0', :platforms => :rbx
13
17
  gem 'psych', '~> 2.0', :platforms => :rbx
data/Gemfile.lock CHANGED
@@ -1,90 +1,123 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cequel (1.5.0)
4
+ cequel (1.6.0)
5
5
  activemodel (>= 3.1, < 5.0)
6
- cql-rb (>= 1.2, < 3.0)
6
+ cassandra-driver (~> 1.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- activemodel (4.1.6)
12
- activesupport (= 4.1.6)
11
+ activemodel (4.2.0)
12
+ activesupport (= 4.2.0)
13
13
  builder (~> 3.1)
14
- activesupport (4.1.6)
15
- i18n (~> 0.6, >= 0.6.9)
14
+ activesupport (4.2.0)
15
+ i18n (~> 0.7)
16
16
  json (~> 1.7, >= 1.7.7)
17
17
  minitest (~> 5.1)
18
- thread_safe (~> 0.1)
18
+ thread_safe (~> 0.3, >= 0.3.4)
19
19
  tzinfo (~> 1.1)
20
+ addressable (2.3.7)
20
21
  appraisal (1.0.2)
21
22
  bundler
22
23
  rake
23
24
  thor (>= 0.14.0)
24
25
  ast (2.0.0)
26
+ astrolabe (1.3.0)
27
+ parser (>= 2.2.0.pre.3, < 3.0)
28
+ backports (3.6.4)
25
29
  builder (3.2.2)
26
30
  byebug (2.7.0)
27
31
  columnize (~> 0.3)
28
32
  debugger-linecache (~> 1.2)
33
+ cassandra-driver (1.2.0)
34
+ ione (~> 1.2)
35
+ cassandra-driver (1.2.0-java)
36
+ ione (~> 1.2)
29
37
  coderay (1.1.0)
30
- columnize (0.8.9)
31
- cql-rb (2.0.3)
32
- ione (~> 1)
38
+ columnize (0.9.0)
33
39
  debugger (1.6.8)
34
40
  columnize (>= 0.3.1)
35
41
  debugger-linecache (~> 1.2.0)
36
42
  debugger-ruby_core_source (~> 1.3.5)
37
43
  debugger-linecache (1.2.0)
38
- debugger-ruby_core_source (1.3.5)
44
+ debugger-ruby_core_source (1.3.8)
39
45
  diff-lcs (1.2.5)
40
- ffi (1.9.4-java)
46
+ ethon (0.7.2)
47
+ ffi (>= 1.3.0)
48
+ faraday (0.9.1)
49
+ multipart-post (>= 1.2, < 3)
50
+ faraday_middleware (0.9.1)
51
+ faraday (>= 0.7.4, < 0.10)
52
+ ffi (1.9.6)
53
+ ffi (1.9.6-java)
41
54
  ffi2-generators (0.1.1)
42
- i18n (0.6.11)
43
- ione (1.1.4)
44
- json (1.8.1)
45
- json (1.8.1-java)
55
+ gh (0.14.0)
56
+ addressable
57
+ backports
58
+ faraday (~> 0.8)
59
+ multi_json (~> 1.0)
60
+ net-http-persistent (>= 2.7)
61
+ net-http-pipeline
62
+ highline (1.6.21)
63
+ i18n (0.7.0)
64
+ ione (1.2.0)
65
+ json (1.8.2)
66
+ json (1.8.2-java)
67
+ launchy (2.4.3)
68
+ addressable (~> 2.3)
69
+ launchy (2.4.3-java)
70
+ addressable (~> 2.3)
71
+ spoon (~> 0.0.1)
46
72
  method_source (0.8.2)
47
- minitest (5.4.2)
48
- parser (2.1.9)
73
+ minitest (5.5.1)
74
+ multi_json (1.10.1)
75
+ multipart-post (2.0.0)
76
+ net-http-persistent (2.9.4)
77
+ net-http-pipeline (1.0.1)
78
+ parser (2.2.0.3)
49
79
  ast (>= 1.1, < 3.0)
50
- slop (~> 3.4, >= 3.4.5)
51
- powerpack (0.0.9)
52
- pry (0.10.1)
53
- coderay (~> 1.1.0)
54
- method_source (~> 0.8.1)
80
+ powerpack (0.1.0)
81
+ pry (0.9.12.6)
82
+ coderay (~> 1.0)
83
+ method_source (~> 0.8)
55
84
  slop (~> 3.4)
56
- pry (0.10.1-java)
57
- coderay (~> 1.1.0)
58
- method_source (~> 0.8.1)
85
+ pry (0.9.12.6-java)
86
+ coderay (~> 1.0)
87
+ method_source (~> 0.8)
59
88
  slop (~> 3.4)
60
89
  spoon (~> 0.0)
61
- psych (2.0.6)
90
+ psych (2.0.12)
91
+ pusher-client (0.6.0)
92
+ json
93
+ websocket (~> 1.0)
62
94
  racc (1.4.12)
63
95
  rainbow (2.0.0)
64
- rake (10.3.2)
65
- rspec (3.1.0)
66
- rspec-core (~> 3.1.0)
67
- rspec-expectations (~> 3.1.0)
68
- rspec-mocks (~> 3.1.0)
69
- rspec-core (3.1.5)
70
- rspec-support (~> 3.1.0)
71
- rspec-expectations (3.1.2)
96
+ rake (10.4.2)
97
+ rspec (3.2.0)
98
+ rspec-core (~> 3.2.0)
99
+ rspec-expectations (~> 3.2.0)
100
+ rspec-mocks (~> 3.2.0)
101
+ rspec-core (3.2.0)
102
+ rspec-support (~> 3.2.0)
103
+ rspec-expectations (3.2.0)
104
+ diff-lcs (>= 1.2.0, < 2.0)
105
+ rspec-support (~> 3.2.0)
106
+ rspec-its (1.1.0)
107
+ rspec-core (>= 3.0.0)
108
+ rspec-expectations (>= 3.0.0)
109
+ rspec-mocks (3.2.0)
72
110
  diff-lcs (>= 1.2.0, < 2.0)
73
- rspec-support (~> 3.1.0)
74
- rspec-its (1.0.1)
75
- rspec-core (>= 2.99.0.beta1)
76
- rspec-expectations (>= 2.99.0.beta1)
77
- rspec-mocks (3.1.2)
78
- rspec-support (~> 3.1.0)
79
- rspec-support (3.1.1)
80
- rubocop (0.19.1)
81
- json (>= 1.7.7, < 2)
82
- parser (~> 2.1.7)
83
- powerpack (~> 0.0.6)
111
+ rspec-support (~> 3.2.0)
112
+ rspec-support (3.2.1)
113
+ rubocop (0.29.1)
114
+ astrolabe (~> 1.3)
115
+ parser (>= 2.2.0.1, < 3.0)
116
+ powerpack (~> 0.1)
84
117
  rainbow (>= 1.99.1, < 3.0)
85
118
  ruby-progressbar (~> 1.4)
86
- ruby-progressbar (1.6.0)
87
- rubysl (2.0.15)
119
+ ruby-progressbar (1.7.1)
120
+ rubysl (2.1.0)
88
121
  rubysl-abbrev (~> 2.0)
89
122
  rubysl-base64 (~> 2.0)
90
123
  rubysl-benchmark (~> 2.0)
@@ -118,7 +151,7 @@ GEM
118
151
  rubysl-io-nonblock (~> 2.0)
119
152
  rubysl-io-wait (~> 2.0)
120
153
  rubysl-ipaddr (~> 2.0)
121
- rubysl-irb (~> 2.0)
154
+ rubysl-irb (~> 2.1)
122
155
  rubysl-logger (~> 2.0)
123
156
  rubysl-mathn (~> 2.0)
124
157
  rubysl-matrix (~> 2.0)
@@ -147,7 +180,6 @@ GEM
147
180
  rubysl-pstore (~> 2.0)
148
181
  rubysl-pty (~> 2.0)
149
182
  rubysl-rational (~> 2.0)
150
- rubysl-readline (~> 2.0)
151
183
  rubysl-resolv (~> 2.0)
152
184
  rubysl-rexml (~> 2.0)
153
185
  rubysl-rinda (~> 2.0)
@@ -189,14 +221,14 @@ GEM
189
221
  rubysl-csv (2.0.2)
190
222
  rubysl-english (~> 2.0)
191
223
  rubysl-curses (2.0.1)
192
- rubysl-date (2.0.8)
224
+ rubysl-date (2.0.9)
193
225
  rubysl-delegate (2.0.1)
194
226
  rubysl-digest (2.0.3)
195
227
  rubysl-drb (2.0.1)
196
228
  rubysl-e2mmap (2.0.0)
197
229
  rubysl-english (2.0.0)
198
230
  rubysl-enumerator (2.0.0)
199
- rubysl-erb (2.0.1)
231
+ rubysl-erb (2.0.2)
200
232
  rubysl-etc (2.0.3)
201
233
  ffi2-generators (~> 0.1)
202
234
  rubysl-expect (2.0.0)
@@ -214,12 +246,11 @@ GEM
214
246
  rubysl-io-nonblock (2.0.0)
215
247
  rubysl-io-wait (2.0.0)
216
248
  rubysl-ipaddr (2.0.0)
217
- rubysl-irb (2.0.4)
249
+ rubysl-irb (2.1.1)
218
250
  rubysl-e2mmap (~> 2.0)
219
251
  rubysl-mathn (~> 2.0)
220
- rubysl-readline (~> 2.0)
221
252
  rubysl-thread (~> 2.0)
222
- rubysl-logger (2.0.0)
253
+ rubysl-logger (2.1.0)
223
254
  rubysl-mathn (2.0.0)
224
255
  rubysl-matrix (2.1.0)
225
256
  rubysl-e2mmap (~> 2.0)
@@ -242,21 +273,20 @@ GEM
242
273
  rubysl-observer (2.0.0)
243
274
  rubysl-open-uri (2.0.0)
244
275
  rubysl-open3 (2.0.0)
245
- rubysl-openssl (2.1.0)
276
+ rubysl-openssl (2.2.1)
246
277
  rubysl-optparse (2.0.1)
247
278
  rubysl-shellwords (~> 2.0)
248
279
  rubysl-ostruct (2.0.4)
249
- rubysl-pathname (2.0.0)
280
+ rubysl-pathname (2.1.0)
250
281
  rubysl-prettyprint (2.0.3)
251
282
  rubysl-prime (2.0.1)
252
283
  rubysl-profile (2.0.0)
253
284
  rubysl-profiler (2.0.1)
254
285
  rubysl-pstore (2.0.0)
255
- rubysl-pty (2.0.2)
286
+ rubysl-pty (2.0.3)
256
287
  rubysl-rational (2.0.1)
257
- rubysl-readline (2.0.2)
258
288
  rubysl-resolv (2.1.0)
259
- rubysl-rexml (2.0.2)
289
+ rubysl-rexml (2.0.4)
260
290
  rubysl-rinda (2.0.1)
261
291
  rubysl-rss (2.0.0)
262
292
  rubysl-scanf (2.0.0)
@@ -268,7 +298,7 @@ GEM
268
298
  rubysl-stringio (2.0.0)
269
299
  rubysl-strscan (2.0.0)
270
300
  rubysl-sync (2.0.0)
271
- rubysl-syslog (2.0.1)
301
+ rubysl-syslog (2.1.0)
272
302
  ffi2-generators (~> 0.1)
273
303
  rubysl-tempfile (2.0.1)
274
304
  rubysl-thread (2.0.2)
@@ -284,7 +314,7 @@ GEM
284
314
  rubysl-weakref (2.0.0)
285
315
  rubysl-webrick (2.0.0)
286
316
  rubysl-xmlrpc (2.0.0)
287
- rubysl-yaml (2.0.4)
317
+ rubysl-yaml (2.1.0)
288
318
  rubysl-zlib (2.0.1)
289
319
  slop (3.6.0)
290
320
  spoon (0.0.4)
@@ -293,10 +323,24 @@ GEM
293
323
  thread_safe (0.3.4)
294
324
  thread_safe (0.3.4-java)
295
325
  timecop (0.7.1)
326
+ travis (1.7.5)
327
+ addressable (~> 2.3)
328
+ backports
329
+ faraday (~> 0.9)
330
+ faraday_middleware (~> 0.9, >= 0.9.1)
331
+ gh (~> 0.13)
332
+ highline (~> 1.6)
333
+ launchy (~> 2.1)
334
+ pry (~> 0.9, < 0.10)
335
+ pusher-client (~> 0.4)
336
+ typhoeus (~> 0.6, >= 0.6.8)
337
+ typhoeus (0.7.1)
338
+ ethon (>= 0.7.1)
296
339
  tzinfo (1.2.2)
297
340
  thread_safe (~> 0.1)
298
- wwtd (0.5.5)
299
- yard (0.8.7.4)
341
+ websocket (1.2.1)
342
+ wwtd (0.7.0)
343
+ yard (0.8.7.6)
300
344
 
301
345
  PLATFORMS
302
346
  java
@@ -313,8 +357,9 @@ DEPENDENCIES
313
357
  rake (~> 10.1)
314
358
  rspec (~> 3.1)
315
359
  rspec-its (~> 1.0)
316
- rubocop (~> 0.19.0)
360
+ rubocop
317
361
  rubysl (~> 2.0)
318
362
  timecop (~> 0.7)
363
+ travis (~> 1.7)
319
364
  wwtd (~> 0.5)
320
365
  yard (~> 0.6)
data/README.md CHANGED
@@ -513,15 +513,16 @@ the columns that are given.
513
513
 
514
514
  ### Rails ###
515
515
 
516
+ * 4.2
517
+ * 4.1
516
518
  * 4.0
517
519
  * 3.2
518
- * 3.1
519
520
 
520
521
  ### Ruby ###
521
522
 
522
- * Ruby 2.1, 2.0, 1.9.3
523
+ * Ruby 2.2, 2.1, 2.0, 1.9.3
523
524
  * JRuby 1.7
524
- * Rubinius 2.2
525
+ * Rubinius 2.5
525
526
 
526
527
  ### Cassandra ###
527
528
 
data/Rakefile CHANGED
@@ -3,6 +3,7 @@ require 'bundler/setup'
3
3
  require 'rspec/core/rake_task'
4
4
  require 'rubocop/rake_task'
5
5
  require 'wwtd/tasks'
6
+ require 'travis'
6
7
  require File.expand_path('../lib/cequel/version', __FILE__)
7
8
 
8
9
  RUBY_VERSIONS = YAML.load_file(File.expand_path('../.travis.yml', __FILE__))['rvm']
@@ -50,11 +51,20 @@ end
50
51
  desc 'Run the specs'
51
52
  RSpec::Core::RakeTask.new(:test) do |t|
52
53
  t.pattern = './spec/examples/**/*_spec.rb'
53
- t.rspec_opts = '-b'
54
+ rspec_opts = '--backtrace'
55
+ version = File.basename(File.dirname(RbConfig::CONFIG['bindir']))
56
+ gemfile = ENV.fetch('BUNDLE_GEMFILE', 'Gemfile')
57
+ log_path = File.expand_path("../spec/log/#{Time.now.to_i}-#{version}-#{File.basename(gemfile, '.gemfile')}", __FILE__)
58
+ FileUtils.mkdir_p(File.dirname(log_path))
59
+ File.open(log_path, 'w') do |f|
60
+ f.puts "RBENV_VERSION=#{version} BUNDLE_GEMFILE=#{gemfile} bundle exec rake test"
61
+ end
62
+ rspec_opts << " --out='#{log_path}' --format=progress"
63
+ t.rspec_opts = rspec_opts
54
64
  end
55
65
 
56
66
  desc 'Check style with Rubocop'
57
- Rubocop::RakeTask.new(:rubocop) do |task|
67
+ RuboCop::RakeTask.new(:rubocop) do |task|
58
68
  task.patterns = ['lib/**/*.rb']
59
69
  task.formatters = ['files']
60
70
  task.fail_on_error = true
@@ -69,7 +79,20 @@ namespace :test do
69
79
  end
70
80
 
71
81
  task :all do
72
- abort unless system('bundle', 'exec', 'wwtd', '--parallel')
82
+ travis = Travis::Repository.find('cequel/cequel')
83
+ current_commit = `git rev-parse HEAD`.chomp
84
+ build = travis.builds.find { |build| build.commit.sha == current_commit }
85
+ if build.nil?
86
+ puts "Could not find build for #{current_commit}; running tests locally"
87
+ abort unless system('bundle', 'exec', 'wwtd', '--parallel')
88
+ elsif !build.finished?
89
+ puts "Build for #{current_commit} is not finished; running tests locally"
90
+ abort unless system('bundle', 'exec', 'wwtd', '--parallel')
91
+ elsif build.green?
92
+ puts "Travis build for #{current_commit} is green; skipping local tests"
93
+ else
94
+ abort "Travis build for #{current_commit} failed; canceling release"
95
+ end
73
96
  end
74
97
  end
75
98
 
@@ -95,3 +118,16 @@ task :verify_changelog do
95
118
  abort "Changelog is not up-to-date."
96
119
  end
97
120
  end
121
+
122
+ namespace :cassandra do
123
+ namespace :versions do
124
+ desc 'Update list of available Cassandra versions'
125
+ task :update do
126
+ listing = Net::HTTP.get(URI.parse("http://archive.apache.org/dist/cassandra/"))
127
+ versions = listing.scan(%r(href="(\d+\.\d+\.\d+)/")).map(&:first)
128
+ File.open(File.expand_path('../.cassandra-versions', __FILE__), 'w') do |f|
129
+ f.puts(versions.sort_by(&Gem::Version.method(:new)).join("\n"))
130
+ end
131
+ end
132
+ end
133
+ end