cassandra_migrations 0.0.1.pre6 → 0.0.1.pre7

Sign up to get free protection for your applications and to get access to all the features.
@@ -57,6 +57,6 @@ puts ' 1. configure '.green + 'config/cassandra.yml'.red
57
57
  puts ' 2. run '.green + 'rake cassandra:setup'.red + ' and try starting your application'.green
58
58
  puts ' 3. create your first migration with '.green + 'rails g cassandra_migration'.red
59
59
  puts ' 4. apply your migration with '.green + 'rake cassandra:migrate'.red
60
- puts ' 5. run '.green + 'rake cassandra:test:prepare'.red + 'and start testing'.green
60
+ puts ' 5. run '.green + 'rake cassandra:test:prepare'.red + ' and start testing'.green
61
61
  puts ' 6. have lots of fun!'.green.blink
62
62
 
@@ -24,7 +24,7 @@ module CassandraMigrations
24
24
  begin
25
25
  execute("DROP KEYSPACE #{Config.keyspace}")
26
26
  rescue Cql::QueryError
27
- raise Errors::UnexistingKeyspaceError, keyspace
27
+ raise Errors::UnexistingKeyspaceError, Config.keyspace
28
28
  end
29
29
  end
30
30
 
@@ -0,0 +1,33 @@
1
+ # encoding: utf-8
2
+
3
+ module CassandraMigrations
4
+ module Cassandra
5
+ class QueryResult
6
+
7
+ def initialize(cql_query_result)
8
+ @cql_query_result = cql_query_result
9
+ end
10
+
11
+ # We don't want to flood the console or the log with an inspection of
12
+ # a lot of loaded data
13
+ def inspect
14
+ "#<CassandraMigrations::Cassandra::QueryResult:#{object_id}>"
15
+ end
16
+
17
+ # Returns {'column_name' => :column_type} hash
18
+ def metadata
19
+ hash = {}
20
+ @cql_query_result.metadata.each do |column_metadata|
21
+ hash[column_metadata.column_name] = column_metadata.type
22
+ end
23
+ hash
24
+ end
25
+
26
+ # Delegates all other method calls to the lower level query result (Cql::Client::QueryResult)
27
+ def method_missing(name, *args, &block)
28
+ @cql_query_result.send(name, *args, &block)
29
+ end
30
+
31
+ end
32
+ end
33
+ end
@@ -3,6 +3,7 @@
3
3
  require 'yaml'
4
4
  require 'cql'
5
5
  require 'cassandra_migrations/cassandra/queries'
6
+ require 'cassandra_migrations/cassandra/query_result'
6
7
  require 'cassandra_migrations/cassandra/keyspace_operations'
7
8
 
8
9
  module CassandraMigrations
@@ -13,8 +14,14 @@ module CassandraMigrations
13
14
  mattr_accessor :client
14
15
 
15
16
  def self.start!
16
- # setup keyspace use
17
- use(Config.keyspace)
17
+ begin
18
+ # setup keyspace use
19
+ use(Config.keyspace)
20
+ rescue Errors::MissingConfigurationError
21
+ # It's acceptable to not have a configuration file, that's why we rescue this exception.
22
+ # On the other hand, if the user try to execute a query this same exception won't be rescued
23
+ Rails.logger.try(:warn, "There is no config/cassandra.yml. Skipping connection to Cassandra...")
24
+ end
18
25
  end
19
26
 
20
27
  def self.restart!
@@ -44,7 +51,8 @@ module CassandraMigrations
44
51
 
45
52
  def self.execute(cql)
46
53
  connect_to_server unless client
47
- client.execute(cql)
54
+ result = client.execute(cql)
55
+ QueryResult.new(result) if result
48
56
  end
49
57
 
50
58
  private
@@ -8,21 +8,13 @@ module CassandraMigrations
8
8
 
9
9
  class ClientNotStartedError < CassandraError
10
10
  def initialize
11
- super("Cassandra.start has not been called yet! Can't execute queries before connecting to server...")
11
+ super("Cassandra.start! has not been called yet! Can't execute queries before connecting to server...")
12
12
  end
13
13
  end
14
14
 
15
15
  class MissingConfigurationError < CassandraError
16
16
  def initialize
17
- super("config/cassandra.yml is missing use this as example: \n\
18
- development: \n\
19
- host: '127.0.0.1' \n\
20
- port: 9042 \n\
21
- keyspace: 'lme_smart_grid_server_development' \n\
22
- replication: \n\
23
- class: 'SimpleStrategy' \n\
24
- replication_factor: 1
25
- ")
17
+ super("config/cassandra.yml is missing! Run 'prepare_for_cassandra .' in the rails root directory.")
26
18
  end
27
19
  end
28
20
 
@@ -0,0 +1,23 @@
1
+ development:
2
+ host: '127.0.0.1'
3
+ port: 9042
4
+ keyspace: 'my_keyspace_name'
5
+ replication:
6
+ class: 'SimpleStrategy'
7
+ replication_factor: 1
8
+
9
+ test:
10
+ host: '127.0.0.1'
11
+ port: 9042
12
+ keyspace: 'my_keyspace_name_test'
13
+ replication:
14
+ class: 'SimpleStrategy'
15
+ replication_factor: 1
16
+
17
+ production:
18
+ host: '127.0.0.1'
19
+ port: 9042
20
+ keyspace: 'my_keyspace_name_production'
21
+ replication:
22
+ class: 'SimpleStrategy'
23
+ replication_factor: 1
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.0.1.pre6
4
+ version: 0.0.1.pre7
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -116,25 +116,27 @@ extensions: []
116
116
  extra_rdoc_files: []
117
117
  files:
118
118
  - lib/cassandra_migrations.rb
119
+ - lib/cassandra_migrations/config.rb
119
120
  - lib/cassandra_migrations/capistrano.rb
120
- - lib/cassandra_migrations/migration.rb
121
- - lib/cassandra_migrations/migrator.rb
122
- - lib/cassandra_migrations/cassandra.rb
123
- - lib/cassandra_migrations/railtie.rb
124
- - lib/cassandra_migrations/cassandra/keyspace_operations.rb
125
121
  - lib/cassandra_migrations/cassandra/queries.rb
126
- - lib/cassandra_migrations/config.rb
127
- - lib/cassandra_migrations/migration/table_operations.rb
128
- - lib/cassandra_migrations/migration/column_operations.rb
129
- - lib/cassandra_migrations/migration/table_definition.rb
130
- - lib/cassandra_migrations/railtie/initializer.rb
122
+ - lib/cassandra_migrations/cassandra/query_result.rb
123
+ - lib/cassandra_migrations/cassandra/keyspace_operations.rb
124
+ - lib/cassandra_migrations/railtie/tasks.rake
125
+ - lib/cassandra_migrations/railtie/generators/cassandra_migration/USAGE
131
126
  - lib/cassandra_migrations/railtie/generators/cassandra_migration/cassandra_migration_generator.rb
132
127
  - lib/cassandra_migrations/railtie/generators/cassandra_migration/templates/empty_migration.rb.erb
133
- - lib/cassandra_migrations/railtie/generators/cassandra_migration/USAGE
134
- - lib/cassandra_migrations/railtie/tasks.rake
128
+ - lib/cassandra_migrations/railtie/initializer.rb
129
+ - lib/cassandra_migrations/migration.rb
130
+ - lib/cassandra_migrations/migrator.rb
135
131
  - lib/cassandra_migrations/errors.rb
136
- - spec/cassandra_migrations_spec.rb
132
+ - lib/cassandra_migrations/migration/column_operations.rb
133
+ - lib/cassandra_migrations/migration/table_definition.rb
134
+ - lib/cassandra_migrations/migration/table_operations.rb
135
+ - lib/cassandra_migrations/cassandra.rb
136
+ - lib/cassandra_migrations/railtie.rb
137
+ - template/cassandra.yml
137
138
  - spec/cassandra_migrations/cassandra_spec.rb
139
+ - spec/cassandra_migrations_spec.rb
138
140
  - bin/prepare_for_cassandra
139
141
  homepage: https://github.com/hsgubert/cassandra_migrations
140
142
  licenses:
@@ -162,5 +164,5 @@ signing_key:
162
164
  specification_version: 3
163
165
  summary: Cassandra schema management for a multi-environment developer.
164
166
  test_files:
165
- - spec/cassandra_migrations_spec.rb
166
167
  - spec/cassandra_migrations/cassandra_spec.rb
168
+ - spec/cassandra_migrations_spec.rb