gotime-cassandra_object 3.0.2 → 3.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml CHANGED
@@ -1,6 +1,7 @@
1
1
  before_install:
2
+ - cassandra -v
2
3
  - sudo service cassandra start
3
4
  - sleep 3
4
5
  rvm:
5
6
  - 1.9.2
6
- - 1.9.3
7
+ - 1.9.3
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'gotime-cassandra_object'
5
- s.version = '3.0.2'
5
+ s.version = '3.0.3'
6
6
  s.description = 'Cassandra ActiveModel'
7
7
  s.summary = 'Cassandra ActiveModel'
8
8
  s.authors = ["Michael Koziarski", "gotime"]
@@ -52,14 +52,3 @@ module CassandraObject
52
52
  end
53
53
  end
54
54
 
55
- class Cassandra
56
- class ColumnFamily
57
- def with_fields(options)
58
- struct_fields.collect { |f| f[1][:name] }.each do |f|
59
- send("#{f}=", options[f.to_sym] || options[f.to_s])
60
- end
61
- self
62
- end
63
- end
64
- end
65
-
@@ -1,29 +1,18 @@
1
1
  module CassandraObject
2
2
  module Tasks
3
3
  class Keyspace
4
- def self.parse(hash)
5
- ks = Cassandra::Keyspace.new.with_fields hash
6
- ks.cf_defs = []
7
- hash['cf_defs'].each do |cf|
8
- ks.cf_defs << Cassandra::ColumnFamily.new.with_fields(cf)
9
- end
10
- ks
11
- end
12
-
13
4
  def exists?(name)
14
5
  connection.keyspaces.include? name.to_s
15
6
  end
16
7
 
17
8
  def create(name, options = {})
18
- opts = {
19
- name: name.to_s,
20
- strategy_class: 'org.apache.cassandra.locator.SimpleStrategy',
21
- replication_factor: 1,
22
- cf_defs: []
23
- }.merge(options)
24
-
25
- ks = Cassandra::Keyspace.new.with_fields(opts)
26
- connection.add_keyspace ks
9
+ keyspace = Cassandra::Keyspace.new
10
+ keyspace.name = name.to_s
11
+ keyspace.replication_factor = options[:replication_factor] || 1
12
+ keyspace.strategy_class = options[:strategy_class] || 'org.apache.cassandra.locator.SimpleStrategy'
13
+ keyspace.cf_defs = options[:cf_defs] || []
14
+
15
+ connection.add_keyspace keyspace
27
16
  end
28
17
 
29
18
  def drop(name)
@@ -44,22 +33,6 @@ module CassandraObject
44
33
  connection.clear_keyspace!
45
34
  end
46
35
 
47
- def schema_dump
48
- connection.schema
49
- end
50
-
51
- def schema_load(schema)
52
- connection.schema.cf_defs.each do |cf|
53
- connection.drop_column_family cf.name
54
- end
55
-
56
- keyspace = get
57
- schema.cf_defs.each do |cf|
58
- cf.keyspace = keyspace
59
- connection.add_column_family cf
60
- end
61
- end
62
-
63
36
  private
64
37
  def connection
65
38
  @connection ||= begin
@@ -69,14 +42,3 @@ module CassandraObject
69
42
  end
70
43
  end
71
44
  end
72
-
73
- class Cassandra
74
- class Keyspace
75
- def with_fields(options)
76
- struct_fields.collect { |f| f[1][:name] }.each do |f|
77
- send("#{f}=", options[f.to_sym] || options[f.to_s])
78
- end
79
- self
80
- end
81
- end
82
- end
@@ -23,7 +23,7 @@ namespace :ks do
23
23
  end
24
24
 
25
25
  desc 'Rolls the schema back to the previous version (specify steps w/ STEP=n)'
26
- task :rollback => :environment do
26
+ task rollback: :environment do
27
27
  step = ENV['STEP'] ? ENV['STEP'].to_i : 1
28
28
  CassandraObject::Schema::Migrator.rollback CassandraObject::Schema::Migrator.migrations_path, step
29
29
  schema_dump
@@ -38,14 +38,10 @@ namespace :ks do
38
38
 
39
39
  namespace :schema do
40
40
  desc 'Create ks/schema.json file that can be portably used against any Cassandra instance supported by CassandraObject'
41
- task :dump => :environment do
41
+ task dump: :environment do
42
42
  schema_dump
43
43
  end
44
44
 
45
- desc 'Load ks/schema.json file into Cassandra'
46
- task :load => :environment do
47
- schema_load
48
- end
49
45
  end
50
46
 
51
47
  namespace :test do
@@ -58,19 +54,11 @@ namespace :ks do
58
54
 
59
55
  private
60
56
  def schema_dump(env = Rails.env)
61
- File.open "#{Rails.root}/ks/schema.json", 'w' do |file|
62
- schema = ActiveSupport::JSON.decode(get_keyspace.schema_dump.to_json)
63
- JSON.pretty_generate(schema).split(/\n/).each do |line|
64
- file.puts line
65
- end
66
- end
57
+ # File.open "#{Rails.root}/ks/schema.rb", 'w' do |file|
58
+ # end
67
59
  end
68
60
 
69
61
  def schema_load(env = Rails.env)
70
- File.open "#{Rails.root}/ks/schema.json", 'r' do |file|
71
- hash = JSON.parse(file.read(nil))
72
- get_keyspace.schema_load CassandraObject::Tasks::Keyspace.parse(hash)
73
- end
74
62
  end
75
63
 
76
64
  def cassandra_config
@@ -28,7 +28,7 @@ module CassandraObject
28
28
  private
29
29
  def setify!
30
30
  if options[:unique]
31
- compact!
31
+ reject!(&:blank?)
32
32
  uniq!
33
33
  begin sort! rescue ArgumentError end
34
34
  end
@@ -1,4 +1,13 @@
1
1
  CassandraObject::Base.establish_connection(
2
- keyspace: 'place_directory_development',
2
+ keyspace: 'cassandra_object_test',
3
3
  servers: '127.0.0.1:9160'
4
- )
4
+ )
5
+
6
+ CassandraObject::Tasks::Keyspace.new.tap do |keyspace_task|
7
+ keyspace_task.drop('cassandra_object_test') if keyspace_task.exists?('cassandra_object_test')
8
+ keyspace_task.create('cassandra_object_test')
9
+ end
10
+
11
+ CassandraObject::Tasks::ColumnFamily.new('cassandra_object_test').tap do |column_family_task|
12
+ column_family_task.create('Issues') unless column_family_task.exists?('Issues')
13
+ end
@@ -42,8 +42,8 @@ class CassandraObject::Types::ArrayTypeTest < CassandraObject::Types::TestCase
42
42
  assert_equal({'favorite_colors' => [['red'], []]}, issue.changes)
43
43
  end
44
44
 
45
- test 'unique array removes nil' do
46
- issue = TestIssue.create favorite_colors: ['blue', 'red', nil]
45
+ test 'unique array removes blank' do
46
+ issue = TestIssue.create favorite_colors: ['blue', 'red', '', nil]
47
47
  assert_equal ['blue', 'red'], issue.favorite_colors
48
48
  end
49
49
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gotime-cassandra_object
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.2
4
+ version: 3.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-07-06 00:00:00.000000000 Z
13
+ date: 2012-07-09 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activemodel