cequel 3.0.1 → 3.0.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a80d11ecb01e9f096a0204ed67d0cfa65a897d59
4
- data.tar.gz: 020e36ad78e92832d03b139d5e2999ab37f26239
3
+ metadata.gz: c1697dbd75c69854dffccbe95b14689a6f5d4453
4
+ data.tar.gz: 62a729f6421425b0fdf188fca359498520f09ac1
5
5
  SHA512:
6
- metadata.gz: 3807632c2c476021c1e539835d5a45fc4fbd37ecc61cfd94b1af653f2a2cca28aabcd905df664cfccf6b3ba82004335411fe15dc571bc157168ff4248bc94203
7
- data.tar.gz: cf8c648c7a1053687ea86a71ded3cb09cacf6dd277ec936d8401ac95608848fd1991b90ee8546d11803fca238b0e2da43dbfc6262a0a47b4b3f0b8599f751786
6
+ metadata.gz: 13716de6aa85d3007df82a7330f1cca8e0cc46f08b4ac477a0381222bd01301b58a439e58c15a19561361cb26221fff6be7cc5c02ebba495b4ded5724efbf8e0
7
+ data.tar.gz: 8ed5d80b009c48845ff74e3d2ccca6001408525131591caf6eb1aee4df9e77dc18112bb88f8ff4c1495c31917485a4a7415bf0ac9d6721a741e63946e6ebcf6b
@@ -1,3 +1,7 @@
1
+ ## 3.0.2
2
+ - support rails 5.1 (https://github.com/cequel/cequel/pull/389)
3
+ - various small changes
4
+
1
5
  ## 3.0.1
2
6
  - fix list modification bug with Cassandra versions > 2.2.10 and 3.11.0
3
7
 
@@ -6,7 +6,7 @@ Contributions to Cequel are highly welcome! Here's a quick guide.
6
6
 
7
7
  1. Fork the repo and create a topic branch
8
8
  2. Set up your environment and run the tests. The easiest way to do this is to
9
- use Vagrant; see below. For those who already have a suitable Cassandra
9
+ use Docker; [see below](#running-the-tests). For those who already have a suitable Cassandra
10
10
  instance running locally: `rake test`
11
11
  3. Add tests for your change.
12
12
  4. Make the tests pass.
@@ -30,35 +30,33 @@ Contributions to Cequel are highly welcome! Here's a quick guide.
30
30
 
31
31
  ### For the impatient ###
32
32
 
33
+ [Install Docker](https://docs.docker.com/engine/installation/) first, then run tests:
33
34
  ```bash
34
- $ git clone git@github.com:yourname/cequel.git
35
- $ cd cequel
36
- $ git remote add upstream git@github.com:cequel/cequel.git
37
- $ brew tap phinze/cask
38
- $ brew install brew-cask
39
- $ brew cask install virtualbox vagrant
40
- $ vagrant up 2.2.5
41
- $ rake test
35
+ git clone git@github.com:yourname/cequel.git
36
+ cd cequel
37
+ git remote add upstream git@github.com:cequel/cequel.git
38
+ bundle install
39
+ bundle exec rake test
42
40
  ```
43
41
 
44
- ### Using Vagrant
42
+ ### Using Docker
45
43
 
46
44
  Cequel's test suite runs against a live Cassandra instance. The easiest way to
47
- get one is to use the `Vagrantfile` included in the repo. You'll need to
48
- install [VirtualBox](https://www.virtualbox.org/) and
49
- [Vagrant](http://www.vagrantup.com/); both are available via
50
- [Homebrew-cask](https://github.com/phinze/homebrew-cask) if you're on OS X.
51
-
52
- Cequel's Vagrantfile can generate a virtual machine for any Cassandra version
53
- that Cequel supports (i.e., 2.1.x & 2.2.x). You can run multiple VMs at the
54
- same time; the first machine you boot will expose its Cassandra instance on
55
- port `9042`, which is the default port that Cequel will look for.
56
-
57
- Cequel is tested against a large range of Ruby, Rails, and Cassandra versions;
58
- for most patches, you can just run the tests using the latest version of all of
59
- them. If you're messing with the `Cequel::Schema` or `Cequel::Type` modules,
60
- you'll want to test at least against an early 2.1 release, a
61
- later 2.1 release (2.1.13), and the latest 2.2 release.
45
+ get one is to use Docker, `docker run --rm -p 9042:9042 cassandra`.
46
+
47
+ ### Using different ports
48
+
49
+ You can configure the cequel test suite to use a different port by setting the `CEQUEL_TEST_PORT` environment variable. Example:
50
+ 1. `docker run --rm -p 33333:9042 cassandra` in one terminal
51
+ 1. `rake test CEQUEL_TEST_PORT=33333` in another termainal
52
+
53
+ ### Cassandra versions
54
+
55
+ Cequel is tested against a large range of Ruby, Rails, and Cassandra
56
+ versions; for most patches, you can just run the tests using the
57
+ latest version of all of them. If you're messing with the
58
+ `Cequel::Schema` or `Cequel::Type` modules, you'll want to test at
59
+ least against the first and latest releases of 2.1, 2.2 and 3 series.
62
60
 
63
61
  ## And finally
64
62
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cequel (3.0.1)
4
+ cequel (3.0.2)
5
5
  activemodel (>= 4.0)
6
6
  cassandra-driver (~> 3.0)
7
7
 
@@ -20,19 +20,16 @@ GEM
20
20
  bundler
21
21
  rake
22
22
  thor (>= 0.14.0)
23
- ast (2.3.0)
23
+ ast (2.4.0)
24
24
  backports (3.10.3)
25
25
  byebug (2.7.0)
26
26
  columnize (~> 0.3)
27
27
  debugger-linecache (~> 1.2)
28
28
  cassandra-driver (3.2.0)
29
29
  ione (~> 1.2)
30
- cassandra-driver (3.2.0-java)
31
- ione (~> 1.2)
32
30
  coderay (1.1.2)
33
31
  columnize (0.9.0)
34
32
  concurrent-ruby (1.0.5)
35
- concurrent-ruby (1.0.5-java)
36
33
  debugger-linecache (1.2.0)
37
34
  diff-lcs (1.3)
38
35
  ethon (0.11.0)
@@ -68,9 +65,9 @@ GEM
68
65
  multipart-post (2.0.0)
69
66
  net-http-persistent (2.9.4)
70
67
  net-http-pipeline (1.0.1)
71
- parallel (1.12.0)
72
- parser (2.4.0.0)
73
- ast (~> 2.2)
68
+ parallel (1.12.1)
69
+ parser (2.5.0.5)
70
+ ast (~> 2.4.0)
74
71
  powerpack (0.1.1)
75
72
  pry (0.11.2)
76
73
  coderay (~> 1.1.0)
@@ -84,14 +81,13 @@ GEM
84
81
  json
85
82
  websocket (~> 1.0)
86
83
  racc (1.4.14)
87
- rainbow (2.2.2)
88
- rake
84
+ rainbow (3.0.0)
89
85
  rake (10.5.0)
90
86
  rspec (3.7.0)
91
87
  rspec-core (~> 3.7.0)
92
88
  rspec-expectations (~> 3.7.0)
93
89
  rspec-mocks (~> 3.7.0)
94
- rspec-core (3.7.0)
90
+ rspec-core (3.7.1)
95
91
  rspec-support (~> 3.7.0)
96
92
  rspec-expectations (3.7.0)
97
93
  diff-lcs (>= 1.2.0, < 2.0)
@@ -104,12 +100,12 @@ GEM
104
100
  rspec-support (~> 3.7.0)
105
101
  rspec-retry (0.5.6)
106
102
  rspec-core (> 3.3, < 3.8)
107
- rspec-support (3.7.0)
108
- rubocop (0.51.0)
103
+ rspec-support (3.7.1)
104
+ rubocop (0.54.0)
109
105
  parallel (~> 1.10)
110
- parser (>= 2.3.3.1, < 3.0)
106
+ parser (>= 2.5)
111
107
  powerpack (~> 0.1)
112
- rainbow (>= 2.2.2, < 3.0)
108
+ rainbow (>= 2.2.2, < 4.0)
113
109
  ruby-progressbar (~> 1.7)
114
110
  unicode-display_width (~> 1.0, >= 1.0.1)
115
111
  ruby-progressbar (1.9.0)
@@ -319,7 +315,6 @@ GEM
319
315
  ffi
320
316
  thor (0.20.0)
321
317
  thread_safe (0.3.6)
322
- thread_safe (0.3.6-java)
323
318
  timecop (0.9.1)
324
319
  travis (1.8.8)
325
320
  backports
@@ -337,7 +332,7 @@ GEM
337
332
  unicode-display_width (1.3.0)
338
333
  websocket (1.2.4)
339
334
  wwtd (0.9.1)
340
- yard (0.9.9)
335
+ yard (0.9.12)
341
336
 
342
337
  PLATFORMS
343
338
  java
data/Rakefile CHANGED
@@ -119,17 +119,3 @@ task :verify_changelog do
119
119
  end
120
120
  end
121
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 "# This file is automatically generated by `rake cassandra:versions:update`"
130
- f.puts "# do not edit by hand."
131
- f.puts(versions.sort_by(&Gem::Version.method(:new)).join("\n"))
132
- end
133
- end
134
- end
135
- end
@@ -53,7 +53,8 @@ module Cequel
53
53
 
54
54
 
55
55
  included do
56
- alias_method_chain :execute_with_options, :newrelic
56
+ alias :execute_with_options_without_newrelic :execute_with_options
57
+ alias :execute_with_options :execute_with_options_with_newrelic
57
58
  end
58
59
  end
59
60
  end
@@ -88,7 +88,7 @@ module Cequel
88
88
  (value.to_r * 1000).round.to_s
89
89
  when DateTime
90
90
  quote(value.utc.to_time)
91
- when Date
91
+ when ::Date
92
92
  quote(Time.gm(value.year, value.month, value.day))
93
93
  when Numeric, true, false, Cassandra::Uuid
94
94
  value.to_s
@@ -401,6 +401,26 @@ module Cequel
401
401
  end
402
402
  register Timestamp.instance
403
403
 
404
+ #
405
+ # `date` columns store dates.
406
+ #
407
+ # @see http://cassandra.apache.org/doc/cql3/CQL-3.0.html#usingdates
408
+ # CQL3 documentation for date columns
409
+ #
410
+ class Date < Base
411
+ def internal_names
412
+ ['org.apache.cassandra.db.marshal.DateType']
413
+ end
414
+
415
+ def cast(value)
416
+ if value.is_a?(::String) then ::Date.parse(value)
417
+ elsif value.respond_to?(:to_date) then value.to_date
418
+ else ::Date.parse(value.to_s)
419
+ end
420
+ end
421
+ end
422
+ register Date.instance
423
+
404
424
  #
405
425
  # `uuid` columns store type 1 and type 4 UUIDs. New UUID instances can be
406
426
  # created using the {Cequel.uuid} method, and a value can be checked to see
@@ -34,11 +34,19 @@ module Cequel
34
34
  # @return [Boolean] true if the object is recognized by Cequel as a UUID
35
35
  #
36
36
  def uuid?(object)
37
+ return true if uuid_in_string?(object)
38
+
37
39
  object.is_a?(Cassandra::Uuid)
38
40
  end
39
41
 
40
42
  private
41
43
 
44
+ def uuid_in_string?(object)
45
+ object.is_a?(String) && Cassandra::Uuid.new(object)
46
+ rescue ArgumentError
47
+ false
48
+ end
49
+
42
50
  def timeuuid_generator
43
51
  @timeuuid_generator ||= Cassandra::TimeUuid::Generator.new
44
52
  end
@@ -1,5 +1,5 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  module Cequel
3
3
  # The current version of the library
4
- VERSION = '3.0.1'
4
+ VERSION = '3.0.2'
5
5
  end
@@ -462,6 +462,7 @@ describe Cequel::Record::RecordSet do
462
462
 
463
463
  describe '#after' do
464
464
  let(:records) { [posts, published_posts] }
465
+ let(:published_at_uuid) { published_posts[2].published_at }
465
466
 
466
467
  it 'should return collection after given key' do
467
468
  expect(Post['cassandra'].after('cequel1').map(&:title)).
@@ -473,6 +474,11 @@ describe Cequel::Record::RecordSet do
473
474
  map(&:title)).to eq((2...5).map { |i| "Cequel #{i}" })
474
475
  end
475
476
 
477
+ it 'should query Time range for Timeuuid key with Timeuuid argument' do
478
+ expect(PublishedPost['cassandra'].after(published_at_uuid).map(&:permalink)).
479
+ to eq(%w(cequel4 cequel3))
480
+ end
481
+
476
482
  it 'should query Time range for Timeuuid key' do
477
483
  expect(PublishedPost['cassandra'].after(now - 3.minutes).map(&:permalink)).
478
484
  to eq(%w(cequel4 cequel3 cequel2))
@@ -505,6 +511,7 @@ describe Cequel::Record::RecordSet do
505
511
 
506
512
  describe '#before' do
507
513
  let(:records) { [posts, published_posts] }
514
+ let(:published_at_uuid) { published_posts[3].published_at }
508
515
 
509
516
  it 'should return collection before given key' do
510
517
  expect(Post['cassandra'].before('cequel3').map(&:title)).
@@ -516,6 +523,11 @@ describe Cequel::Record::RecordSet do
516
523
  to eq(%w(cequel2 cequel1 cequel0))
517
524
  end
518
525
 
526
+ it 'should query Time range for Timeuuid key with Timeuuid argument' do
527
+ expect(PublishedPost['cassandra'].before(published_at_uuid).map(&:permalink)).
528
+ to eq(%w(cequel2 cequel1 cequel0))
529
+ end
530
+
519
531
  it 'should cast argument' do
520
532
  expect(Post['cassandra'].before('cequel3'.force_encoding('ASCII-8BIT')).
521
533
  map(&:title)).to eq((0...3).map { |i| "Cequel #{i}" })
@@ -164,6 +164,20 @@ describe Cequel::Type do
164
164
  end
165
165
  end
166
166
 
167
+ describe 'date' do
168
+ subject { Cequel::Type[:date] }
169
+ its(:cql_name) { should == :date }
170
+ its(:internal_name) { should == 'org.apache.cassandra.db.marshal.DateType' }
171
+
172
+ describe '#cast' do
173
+ let(:today) { Date.today }
174
+ specify { expect(subject.cast(today)).to eq(today) }
175
+ specify { expect(subject.cast(today.to_s)).to eq(today) }
176
+ specify { expect(subject.cast(today.to_datetime)).to eq(today) }
177
+ specify { expect(subject.cast(today.to_time)).to eq(today) }
178
+ end
179
+ end
180
+
167
181
  describe 'timeuuid' do
168
182
  subject { Cequel::Type[:timeuuid] }
169
183
  its(:cql_name) { should == :timeuuid }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cequel
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 3.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mat Brown
@@ -29,7 +29,7 @@ authors:
29
29
  autorequire:
30
30
  bindir: bin
31
31
  cert_chain: []
32
- date: 2017-11-10 00:00:00.000000000 Z
32
+ date: 2018-04-11 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: activemodel
@@ -218,7 +218,6 @@ files:
218
218
  - LICENSE
219
219
  - README.md
220
220
  - Rakefile
221
- - Vagrantfile
222
221
  - lib/cequel.rb
223
222
  - lib/cequel/errors.rb
224
223
  - lib/cequel/instrumentation.rb
@@ -348,34 +347,34 @@ signing_key:
348
347
  specification_version: 4
349
348
  summary: Full-featured, ActiveModel-compliant ORM for Cassandra using CQL3
350
349
  test_files:
351
- - spec/examples/metal/data_set_spec.rb
352
- - spec/examples/metal/keyspace_spec.rb
353
- - spec/examples/record/associations_spec.rb
354
- - spec/examples/record/callbacks_spec.rb
350
+ - spec/examples/spec_helper.rb
351
+ - spec/examples/spec_support/preparation_spec.rb
352
+ - spec/examples/record/properties_spec.rb
353
+ - spec/examples/record/spec_helper.rb
354
+ - spec/examples/record/mass_assignment_spec.rb
355
+ - spec/examples/record/serialization_spec.rb
355
356
  - spec/examples/record/dirty_spec.rb
356
- - spec/examples/record/finders_spec.rb
357
- - spec/examples/record/lazy_record_collection_spec.rb
357
+ - spec/examples/record/associations_spec.rb
358
358
  - spec/examples/record/list_spec.rb
359
+ - spec/examples/record/set_spec.rb
360
+ - spec/examples/record/validations_spec.rb
361
+ - spec/examples/record/record_set_spec.rb
359
362
  - spec/examples/record/map_spec.rb
360
- - spec/examples/record/mass_assignment_spec.rb
361
- - spec/examples/record/naming_spec.rb
363
+ - spec/examples/record/timestamps_spec.rb
362
364
  - spec/examples/record/persistence_spec.rb
363
- - spec/examples/record/properties_spec.rb
364
- - spec/examples/record/record_set_spec.rb
365
+ - spec/examples/record/naming_spec.rb
366
+ - spec/examples/record/callbacks_spec.rb
365
367
  - spec/examples/record/schema_spec.rb
368
+ - spec/examples/record/lazy_record_collection_spec.rb
366
369
  - spec/examples/record/scoped_spec.rb
367
- - spec/examples/record/serialization_spec.rb
368
- - spec/examples/record/set_spec.rb
369
- - spec/examples/record/spec_helper.rb
370
- - spec/examples/record/timestamps_spec.rb
371
- - spec/examples/record/validations_spec.rb
372
- - spec/examples/schema/keyspace_spec.rb
370
+ - spec/examples/record/finders_spec.rb
371
+ - spec/examples/metal/data_set_spec.rb
372
+ - spec/examples/metal/keyspace_spec.rb
373
+ - spec/examples/type_spec.rb
374
+ - spec/examples/schema/table_writer_spec.rb
375
+ - spec/examples/schema/table_updater_spec.rb
373
376
  - spec/examples/schema/patch_spec.rb
374
- - spec/examples/schema/table_differ_spec.rb
375
377
  - spec/examples/schema/table_reader_spec.rb
376
- - spec/examples/schema/table_updater_spec.rb
377
- - spec/examples/schema/table_writer_spec.rb
378
- - spec/examples/spec_helper.rb
379
- - spec/examples/spec_support/preparation_spec.rb
380
- - spec/examples/type_spec.rb
378
+ - spec/examples/schema/table_differ_spec.rb
379
+ - spec/examples/schema/keyspace_spec.rb
381
380
  - spec/examples/uuids_spec.rb
@@ -1,150 +0,0 @@
1
- # -*- mode: ruby -*-
2
- # vi: set ft=ruby :
3
- require 'net/http'
4
-
5
- # Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
6
- VAGRANTFILE_API_VERSION = "2"
7
-
8
- Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
9
- # All Vagrant configuration is done here. The most common configuration
10
- # options are documented and commented below. For a complete reference,
11
- # please see the online documentation at vagrantup.com.
12
-
13
- # Every Vagrant virtual environment requires a box to build off of.
14
- config.vm.box = "ubuntu/trusty64"
15
-
16
- # The url from where the 'config.vm.box' box will be fetched if it
17
- # doesn't already exist on the user's system.
18
- config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/precise/current/precise-server-cloudimg-amd64-vagrant-disk1.box"
19
-
20
- # Create a forwarded port mapping which allows access to a specific port
21
- # within the machine from a port on the host machine. In the example below,
22
- # accessing "localhost:8080" will access port 80 on the guest machine.
23
- # config.vm.network :forwarded_port, guest: 80, host: 8080
24
-
25
- # Create a private network, which allows host-only access to the machine
26
- # using a specific IP.
27
- # config.vm.network :private_network, ip: "192.168.33.10"
28
-
29
- # Create a public network, which generally matched to bridged network.
30
- # Bridged networks make the machine appear as another physical device on
31
- # your network.
32
- # config.vm.network :public_network
33
-
34
- # If true, then any SSH connections made will enable agent forwarding.
35
- # Default value: false
36
- # config.ssh.forward_agent = true
37
-
38
- # Share an additional folder to the guest VM. The first argument is
39
- # the path on the host to the actual folder. The second argument is
40
- # the path on the guest to mount the folder. And the optional third
41
- # argument is a set of non-required options.
42
- config.vm.synced_folder ".", "/vagrant", disabled: true
43
-
44
- # Provider-specific configuration so you can fine-tune various
45
- # backing providers for Vagrant. These expose provider-specific options.
46
- # Example for VirtualBox:
47
- #
48
- config.vm.provider :virtualbox do |vb|
49
- vb.memory = 1024
50
- end
51
- #
52
- # View the documentation for the provider you're using for more
53
- # information on available options.
54
-
55
- # Enable provisioning with Puppet stand alone. Puppet manifests
56
- # are contained in a directory path relative to this Vagrantfile.
57
- # You will need to create the manifests directory and a manifest in
58
- # the file base.pp in the manifests_path directory.
59
- #
60
- # An example Puppet manifest to provision the message of the day:
61
- #
62
- # # group { "puppet":
63
- # # ensure => "present",
64
- # # }
65
- # #
66
- # # File { owner => 0, group => 0, mode => 0644 }
67
- # #
68
- # # file { '/etc/motd':
69
- # # content => "Welcome to your Vagrant-built virtual machine!
70
- # # Managed by Puppet.\n"
71
- # # }
72
- #
73
- # config.vm.provision :puppet do |puppet|
74
- # puppet.manifests_path = "manifests"
75
- # puppet.manifest_file = "site.pp"
76
- # end
77
-
78
- # Enable provisioning with chef solo, specifying a cookbooks path, roles
79
- # path, and data_bags path (all relative to this Vagrantfile), and adding
80
- # some recipes and/or roles.
81
- #
82
- # config.vm.provision :chef_solo do |chef|
83
- # chef.cookbooks_path = "../my-recipes/cookbooks"
84
- # chef.roles_path = "../my-recipes/roles"
85
- # chef.data_bags_path = "../my-recipes/data_bags"
86
- # chef.add_recipe "mysql"
87
- # chef.add_role "web"
88
- #
89
- # # You may also specify custom JSON attributes:
90
- # chef.json = { :mysql_password => "foo" }
91
- # end
92
-
93
- # Enable provisioning with chef server, specifying the chef server URL,
94
- # and the path to the validation key (relative to this Vagrantfile).
95
- #
96
- # The Opscode Platform uses HTTPS. Substitute your organization for
97
- # ORGNAME in the URL and validation key.
98
- #
99
- # If you have your own Chef Server, use the appropriate URL, which may be
100
- # HTTP instead of HTTPS depending on your configuration. Also change the
101
- # validation key to validation.pem.
102
- #
103
- # config.vm.provision :chef_client do |chef|
104
- # chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
105
- # chef.validation_key_path = "ORGNAME-validator.pem"
106
- # end
107
- #
108
- # If you're using the Opscode platform, your validator client is
109
- # ORGNAME-validator, replacing ORGNAME with your organization name.
110
- #
111
- # If you have your own Chef Server, the default validation client name is
112
- # chef-validator, unless you changed the configuration.
113
- #
114
- # chef.validation_client_name = "ORGNAME-validator"
115
- provision = <<-SH
116
- set -e
117
- apt-get update
118
- env DEBIAN_FRONTEND=noninteractive apt-get upgrade -y
119
- apt-get install python-software-properties curl -y
120
- apt-get autoremove -y
121
- add-apt-repository -y ppa:webupd8team/java
122
- apt-get update
123
- echo debconf shared/accepted-oracle-license-v1-1 select true | sudo debconf-set-selections
124
- echo debconf shared/accepted-oracle-license-v1-1 seen true | sudo debconf-set-selections
125
- apt-get install -y oracle-java$2-installer oracle-java$2-set-default
126
- curl -s http://archive.apache.org/dist/cassandra/$1/apache-cassandra-$1-bin.tar.gz | tar -C /opt -xzvf -
127
- echo "start on runlevel [2345]
128
- stop on runlevel [06]
129
- exec /opt/apache-cassandra-$1/bin/cassandra" > /etc/init/cassandra.conf
130
- sed -i -e 's/.*broadcast_rpc_address:.*/broadcast_rpc_address: 127.0.0.1/' /opt/apache-cassandra-$1/conf/cassandra.yaml
131
- sed -i -e 's/^rpc_address:.*/rpc_address: 0.0.0.0/' /opt/apache-cassandra-$1/conf/cassandra.yaml
132
- sed -i -e 's/^start_native_transport:.*/start_native_transport: true/' /opt/apache-cassandra-$1/conf/cassandra.yaml
133
- sed -i -e 's/^start_rpc:.*/start_rpc: true/' /opt/apache-cassandra-$1/conf/cassandra.yaml
134
- service cassandra start
135
- SH
136
-
137
- versions = File.read(File.expand_path('../.cassandra-versions', __FILE__)).each_line
138
- .map(&:strip).grep(/(^2\.[12]\.)|(^3.)/)
139
- versions.each do |version|
140
- java_version = version =~ /^2/ ? '7' : '8'
141
- config.vm.define version do |machine|
142
- machine.vm.provision :shell, inline: provision,
143
- args: [version, java_version]
144
- machine.vm.network :forwarded_port, guest: 9042, host: 9042,
145
- auto_correct: true
146
- machine.vm.network :forwarded_port, guest: 9160, host: 9160,
147
- auto_correct: true
148
- end
149
- end
150
- end