cassandra_migrations 0.2.5 → 0.2.6

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: 2adbd178415bd43d539d236b8a2c46b21e8a7f72
4
- data.tar.gz: 1216e38539fdebb43798770efdefe8c091c19bb4
3
+ metadata.gz: c965a29df3ab284126e40f87b121b36ac7265bd8
4
+ data.tar.gz: 1f51f693edccafb89757145d09d110e1e80906f1
5
5
  SHA512:
6
- metadata.gz: 015a4ec736b6900eb9fe8a24da10baea299752718ac025b487decf15fbe5cad684951da2e282af0d8df178b35556f7d32fb1cc7127e79f8313a2e5486ab9ba5a
7
- data.tar.gz: 276c5d3a589d3e73a9f61f96d8cdc78eb76584d8f23c04cfe05f8db37fae59bca11c0cf8e402d13f972e8af92f21121ad2155a313a650c9bd7fe0fc59e77cbe9
6
+ metadata.gz: 46a1436db58fb04065c16cefb5438131b45fe64f129ced77eaeade85844b301f8855d8aabd51acfae5c0b6f388065a8a79ef66a4e5473f4c2a80f23ac0256959
7
+ data.tar.gz: 86926b224d24685da9b83ab312754446135f346618e5489d91bf4e3fc63f25f00c6806f1be4043f26b1198bf5b345ed63e3dbfe8114fac8b3a5f69c691775b68
@@ -7,23 +7,26 @@ module CassandraMigrations
7
7
 
8
8
  def create_keyspace!(env)
9
9
  config = Config.configurations[env]
10
- validate_config(config)
11
-
12
- execute(
13
- "CREATE KEYSPACE #{config.keyspace} \
14
- WITH replication = { \
15
- 'class':'#{config.replication['class']}', \
16
- 'replication_factor': #{config.replication['replication_factor']} \
17
- }"
18
- )
10
+ execute(create_keyspace_statement(config))
19
11
  begin
20
12
  use(config.keyspace)
21
- rescue StandardErorr => exception
13
+ rescue StandardError => exception
22
14
  drop_keyspace!(env)
23
15
  raise exception
24
16
  end
25
17
  end
26
18
 
19
+ def create_keyspace_statement(config)
20
+ validate_config(config)
21
+ <<-CQL.strip_heredoc
22
+ CREATE KEYSPACE #{config.keyspace}
23
+ WITH replication = {
24
+ 'class': '#{config.replication['class']}',
25
+ #{replication_options_statement(config)}
26
+ }
27
+ CQL
28
+ end
29
+
27
30
  def drop_keyspace!(env)
28
31
  config = Config.configurations[env]
29
32
  begin
@@ -37,19 +40,30 @@ module CassandraMigrations
37
40
 
38
41
  def validate_config(config)
39
42
  if config.keyspace.nil?
40
- raise Errors::MissingConfigurationError.new("Configuration of 'keyspace' is required in config.yml, but none is defined.")
41
- end
42
- unless config_includes_replication?(config)
43
- raise Errors::MissingConfigurationError.new("Configuration for 'replication' is required in config.yml, but none is defined.")
43
+ raise Errors::MissingConfigurationError.new("Configuration of 'keyspace' is required in config/cassandra.yml, but none is defined.")
44
+ elsif config_requires_replication?(config) && !config_includes_replication?(config)
45
+ raise Errors::MissingConfigurationError.new("Configuration for 'replication' is required in config/cassandra.yml, but none is defined.")
44
46
  end
45
47
  true
46
48
  end
47
49
 
50
+ def config_requires_replication?(config)
51
+ config.replication['class'] == 'SimpleStrategy'
52
+ end
53
+
48
54
  def config_includes_replication?(config)
49
55
  config.replication &&
50
56
  config.replication['class'] &&
51
57
  config.replication['replication_factor']
52
58
  end
59
+
60
+ def replication_options_statement(config)
61
+ if config.replication['class'] == "SimpleStrategy"
62
+ "'replication_factor': #{config.replication['replication_factor']}"
63
+ elsif config.replication['class'] == "NetworkTopologyStrategy"
64
+ config.replication.reject{ |k,v| k == 'class' }.map { |k,v| "'#{k}': #{v}" }.join(", ")
65
+ end
66
+ end
53
67
  end
54
68
  end
55
69
  end
@@ -0,0 +1,3 @@
1
+ module CassandraMigrations
2
+ VERSION = '0.2.6'
3
+ end
@@ -1,3 +1,4 @@
1
+ require 'cassandra_migrations/version'
1
2
  require 'cassandra_migrations/config'
2
3
  require 'cassandra_migrations/errors'
3
4
  require 'cassandra_migrations/cassandra'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cassandra_migrations
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henrique Gubert
@@ -9,13 +9,16 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-11-20 00:00:00.000000000 Z
12
+ date: 2016-05-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cassandra-driver
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
18
  - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '2.1'
21
+ - - ">="
19
22
  - !ruby/object:Gem::Version
20
23
  version: 2.1.1
21
24
  type: :runtime
@@ -23,6 +26,9 @@ dependencies:
23
26
  version_requirements: !ruby/object:Gem::Requirement
24
27
  requirements:
25
28
  - - "~>"
29
+ - !ruby/object:Gem::Version
30
+ version: '2.1'
31
+ - - ">="
26
32
  - !ruby/object:Gem::Version
27
33
  version: 2.1.1
28
34
  - !ruby/object:Gem::Dependency
@@ -43,14 +49,14 @@ dependencies:
43
49
  name: rails
44
50
  requirement: !ruby/object:Gem::Requirement
45
51
  requirements:
46
- - - ">="
52
+ - - "~>"
47
53
  - !ruby/object:Gem::Version
48
54
  version: '3.2'
49
55
  type: :runtime
50
56
  prerelease: false
51
57
  version_requirements: !ruby/object:Gem::Requirement
52
58
  requirements:
53
- - - ">="
59
+ - - "~>"
54
60
  - !ruby/object:Gem::Version
55
61
  version: '3.2'
56
62
  - !ruby/object:Gem::Dependency
@@ -72,6 +78,9 @@ dependencies:
72
78
  requirement: !ruby/object:Gem::Requirement
73
79
  requirements:
74
80
  - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.1'
83
+ - - ">="
75
84
  - !ruby/object:Gem::Version
76
85
  version: 3.1.0
77
86
  type: :development
@@ -79,6 +88,9 @@ dependencies:
79
88
  version_requirements: !ruby/object:Gem::Requirement
80
89
  requirements:
81
90
  - - "~>"
91
+ - !ruby/object:Gem::Version
92
+ version: '3.1'
93
+ - - ">="
82
94
  - !ruby/object:Gem::Version
83
95
  version: 3.1.0
84
96
  - !ruby/object:Gem::Dependency
@@ -137,6 +149,20 @@ dependencies:
137
149
  - - "~>"
138
150
  - !ruby/object:Gem::Version
139
151
  version: '0.7'
152
+ - !ruby/object:Gem::Dependency
153
+ name: appraisal
154
+ requirement: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: '1.0'
159
+ type: :development
160
+ prerelease: false
161
+ version_requirements: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: '1.0'
140
166
  description: A gem to manage Cassandra database schema for Rails. This gem offers
141
167
  migrations and environment specific databases out-of-the-box for Rails users.
142
168
  email:
@@ -169,6 +195,7 @@ files:
169
195
  - lib/cassandra_migrations/railtie/generators/cassandra_migration/templates/empty_migration.rb.erb
170
196
  - lib/cassandra_migrations/railtie/initializer.rb
171
197
  - lib/cassandra_migrations/railtie/tasks.rake
198
+ - lib/cassandra_migrations/version.rb
172
199
  homepage: https://github.com/hsgubert/cassandra_migrations
173
200
  licenses:
174
201
  - MIT