gotime-cassandra_object 4.4.0 → 4.4.3

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.
data/.travis.yml CHANGED
@@ -1,7 +1,5 @@
1
- before_install:
2
- - cassandra -v
3
- - sudo service cassandra start
4
- - sleep 3
1
+ services:
2
+ - cassandra
5
3
  rvm:
6
4
  - 1.9.2
7
5
  - 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 = '4.4.0'
5
+ s.version = '4.4.3'
6
6
  s.description = 'Cassandra ActiveModel'
7
7
  s.summary = 'Cassandra ActiveModel'
8
8
  s.authors = ["Michael Koziarski", "gotime"]
@@ -3,16 +3,16 @@ module CassandraObject
3
3
  def inspect
4
4
  inspection = ["#{self.class.primary_key}: #{id.inspect}"]
5
5
 
6
- @attributes.keys.each do |attribute|
7
- inspection << "#{attribute}: #{attribute_for_inspect(attribute)}"
6
+ @attributes.each do |attribute, value|
7
+ if value.present?
8
+ inspection << "#{attribute}: #{attribute_for_inspect(value)}"
9
+ end
8
10
  end
9
11
 
10
12
  "#<#{self.class} #{inspection * ', '}>"
11
13
  end
12
14
 
13
- def attribute_for_inspect(attr_name)
14
- value = read_attribute(attr_name)
15
-
15
+ def attribute_for_inspect(value)
16
16
  if value.is_a?(String) && value.length > 50
17
17
  "#{value[0..50]}...".inspect
18
18
  elsif value.is_a?(Date) || value.is_a?(Time)
@@ -4,7 +4,7 @@ module CassandraObject
4
4
 
5
5
  module ClassMethods
6
6
  def remove(id)
7
- execute_cql "DELETE FROM #{column_family} WHERE KEY = ?", id
7
+ execute_cql "DELETE FROM #{column_family} #{write_option_string} WHERE KEY = ?", id
8
8
  end
9
9
 
10
10
  def delete_all
@@ -20,12 +20,12 @@ module CassandraObject
20
20
  def write(id, attributes)
21
21
  if (encoded = encode_attributes(attributes)).any?
22
22
  insert_attributes = {'KEY' => id}.update encode_attributes(attributes)
23
- statement = "INSERT INTO #{column_family} (#{insert_attributes.keys * ','}) VALUES (#{Array.new(insert_attributes.size, '?') * ','})"
23
+ statement = "INSERT INTO #{column_family} (#{insert_attributes.keys * ','}) VALUES (#{Array.new(insert_attributes.size, '?') * ','}) #{write_option_string}"
24
24
  execute_cql statement, *insert_attributes.values
25
25
  end
26
26
 
27
27
  if (nil_attributes = attributes.select { |key, value| value.nil? }).any?
28
- execute_cql "DELETE #{nil_attributes.keys * ','} FROM #{column_family} WHERE KEY = ?", id
28
+ execute_cql "DELETE #{nil_attributes.keys * ','} FROM #{column_family} #{write_option_string} WHERE KEY = ?", id
29
29
  end
30
30
  end
31
31
 
@@ -53,6 +53,14 @@ module CassandraObject
53
53
  attributes = attributes.symbolize_keys
54
54
  Hash[attribute_definitions.map { |k, attribute_definition| [k.to_s, attribute_definition.instantiate(object, attributes[k])] }]
55
55
  end
56
+
57
+ private
58
+ def write_option_string
59
+ consistency = base_class.default_consistency
60
+ if consistency
61
+ "USING CONSISTENCY #{consistency}"
62
+ end
63
+ end
56
64
  end
57
65
 
58
66
  def new_record?
@@ -20,8 +20,7 @@ module CassandraObject
20
20
  end
21
21
 
22
22
  def first
23
- to_a.first
24
- # limit(1).to_a.first
23
+ limit(1).to_a.first
25
24
  end
26
25
 
27
26
  private
@@ -35,9 +35,9 @@ module CassandraObject
35
35
  def to_a
36
36
  statement = [
37
37
  "SELECT #{select_string} FROM #{klass.column_family}",
38
+ consistency_string,
38
39
  where_string,
39
- limit_string,
40
- consistency_string
40
+ limit_string
41
41
  ].delete_if(&:blank?) * ' '
42
42
 
43
43
  instantiate_from_cql(statement)
@@ -8,18 +8,19 @@ class CassandraObject::InspectTest < CassandraObject::TestCase
8
8
  integer :other
9
9
  end
10
10
 
11
- assert_equal "#{'x' * 51}...".inspect, object.new(long_string: 'x' * 100).attribute_for_inspect(:long_string)
12
- assert_equal "2012-02-14 12:01:02".inspect, object.new(the_time: Time.new(2012, 02, 14, 12, 01, 02)).attribute_for_inspect(:the_time)
13
- assert_equal "5", object.new(other: 5).attribute_for_inspect(:other)
11
+ assert_equal "#{'x' * 51}...".inspect, object.new.attribute_for_inspect('x' * 100)
12
+ assert_equal "2012-02-14 12:01:02".inspect, object.new.attribute_for_inspect(Time.new(2012, 02, 14, 12, 01, 02))
13
+ assert_equal "\"foo\"", object.new.attribute_for_inspect('foo')
14
14
  end
15
15
 
16
16
  test 'inspect' do
17
17
  object = temp_object do
18
18
  string :description
19
19
  integer :price
20
- end.new(description: "yeah buddy", price: 42)
20
+ end.new(description: "yeah buddy", price: nil)
21
21
 
22
22
  assert_match /id/, object.inspect
23
23
  assert_match /description/, object.inspect
24
+ assert_no_match /price/, object.inspect
24
25
  end
25
26
  end
@@ -111,4 +111,18 @@ class CassandraObject::PersistenceTest < CassandraObject::TestCase
111
111
  persisted_issue.reload
112
112
  assert_equal 'say what', persisted_issue.description
113
113
  end
114
+
115
+ test 'delete with consistency' do
116
+ issue = Issue.create
117
+ Issue.with_consistency 'QUORUM' do
118
+ issue.destroy
119
+ end
120
+ end
121
+
122
+ test 'insert with consistency' do
123
+ Issue.with_consistency 'QUORUM' do
124
+ Issue.create
125
+ end
126
+ end
127
+
114
128
  end
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: 4.4.0
4
+ version: 4.4.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-09-07 00:00:00.000000000 Z
13
+ date: 2012-09-13 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activemodel