datastax_rails 2.0.12 → 2.0.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (143) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +5 -5
  3. data/lib/blankslate.rb +8 -11
  4. data/lib/cql-rb_extensions.rb +5 -3
  5. data/lib/datastax_rails/associations/association.rb +93 -101
  6. data/lib/datastax_rails/associations/association_scope.rb +7 -7
  7. data/lib/datastax_rails/associations/belongs_to_association.rb +46 -48
  8. data/lib/datastax_rails/associations/builder/association.rb +32 -31
  9. data/lib/datastax_rails/associations/builder/belongs_to.rb +19 -20
  10. data/lib/datastax_rails/associations/builder/collection_association.rb +32 -32
  11. data/lib/datastax_rails/associations/builder/has_and_belongs_to_many.rb +21 -21
  12. data/lib/datastax_rails/associations/builder/has_many.rb +39 -40
  13. data/lib/datastax_rails/associations/builder/has_one.rb +30 -31
  14. data/lib/datastax_rails/associations/builder/singular_association.rb +31 -33
  15. data/lib/datastax_rails/associations/collection_association.rb +129 -135
  16. data/lib/datastax_rails/associations/collection_proxy.rb +21 -21
  17. data/lib/datastax_rails/associations/has_and_belongs_to_many_association.rb +26 -26
  18. data/lib/datastax_rails/associations/has_many_association.rb +38 -38
  19. data/lib/datastax_rails/associations/has_one_association.rb +31 -32
  20. data/lib/datastax_rails/associations/singular_association.rb +31 -30
  21. data/lib/datastax_rails/associations.rb +27 -24
  22. data/lib/datastax_rails/attribute_assignment.rb +17 -17
  23. data/lib/datastax_rails/attribute_methods/definition.rb +4 -4
  24. data/lib/datastax_rails/attribute_methods/dirty.rb +34 -33
  25. data/lib/datastax_rails/attribute_methods/primary_key.rb +3 -8
  26. data/lib/datastax_rails/attribute_methods/read.rb +10 -12
  27. data/lib/datastax_rails/attribute_methods/typecasting.rb +36 -35
  28. data/lib/datastax_rails/attribute_methods/write.rb +5 -6
  29. data/lib/datastax_rails/attribute_methods.rb +52 -56
  30. data/lib/datastax_rails/base.rb +122 -125
  31. data/lib/datastax_rails/callbacks.rb +15 -9
  32. data/lib/datastax_rails/cassandra_only_model.rb +6 -6
  33. data/lib/datastax_rails/collection.rb +5 -7
  34. data/lib/datastax_rails/column.rb +130 -118
  35. data/lib/datastax_rails/connection/statement_cache.rb +3 -3
  36. data/lib/datastax_rails/connection.rb +42 -33
  37. data/lib/datastax_rails/cql/alter_column_family.rb +19 -21
  38. data/lib/datastax_rails/cql/base.rb +8 -11
  39. data/lib/datastax_rails/cql/column_family.rb +11 -10
  40. data/lib/datastax_rails/cql/consistency.rb +2 -2
  41. data/lib/datastax_rails/cql/create_column_family.rb +15 -15
  42. data/lib/datastax_rails/cql/create_index.rb +5 -5
  43. data/lib/datastax_rails/cql/create_keyspace.rb +7 -7
  44. data/lib/datastax_rails/cql/delete.rb +16 -29
  45. data/lib/datastax_rails/cql/drop_column_family.rb +2 -2
  46. data/lib/datastax_rails/cql/drop_index.rb +2 -2
  47. data/lib/datastax_rails/cql/drop_keyspace.rb +2 -2
  48. data/lib/datastax_rails/cql/insert.rb +10 -16
  49. data/lib/datastax_rails/cql/select.rb +21 -33
  50. data/lib/datastax_rails/cql/truncate.rb +2 -2
  51. data/lib/datastax_rails/cql/update.rb +16 -24
  52. data/lib/datastax_rails/cql/use_keyspace.rb +2 -2
  53. data/lib/datastax_rails/cql.rb +2 -2
  54. data/lib/datastax_rails/dynamic_model.rb +32 -29
  55. data/lib/datastax_rails/errors.rb +6 -6
  56. data/lib/datastax_rails/grouped_collection.rb +3 -3
  57. data/lib/datastax_rails/inheritance.rb +9 -9
  58. data/lib/datastax_rails/payload_model.rb +24 -20
  59. data/lib/datastax_rails/persistence.rb +116 -110
  60. data/lib/datastax_rails/railtie.rb +7 -7
  61. data/lib/datastax_rails/reflection.rb +61 -59
  62. data/lib/datastax_rails/relation/batches.rb +12 -13
  63. data/lib/datastax_rails/relation/facet_methods.rb +44 -33
  64. data/lib/datastax_rails/relation/finder_methods.rb +95 -91
  65. data/lib/datastax_rails/relation/modification_methods.rb +5 -5
  66. data/lib/datastax_rails/relation/search_methods.rb +102 -102
  67. data/lib/datastax_rails/relation/spawn_methods.rb +25 -24
  68. data/lib/datastax_rails/relation/stats_methods.rb +9 -8
  69. data/lib/datastax_rails/relation.rb +165 -170
  70. data/lib/datastax_rails/rsolr_client_wrapper.rb +3 -3
  71. data/lib/datastax_rails/schema/cassandra.rb +44 -43
  72. data/lib/datastax_rails/schema/migrator.rb +52 -52
  73. data/lib/datastax_rails/schema/solr.rb +55 -47
  74. data/lib/datastax_rails/schema_cache.rb +1 -3
  75. data/lib/datastax_rails/scoping/default.rb +2 -3
  76. data/lib/datastax_rails/scoping/named.rb +3 -5
  77. data/lib/datastax_rails/scoping.rb +11 -12
  78. data/lib/datastax_rails/serialization.rb +34 -31
  79. data/lib/datastax_rails/serializers/xml_serializer.rb +178 -175
  80. data/lib/datastax_rails/timestamps.rb +4 -4
  81. data/lib/datastax_rails/types/dirty_collection.rb +57 -57
  82. data/lib/datastax_rails/types/dynamic_list.rb +1 -1
  83. data/lib/datastax_rails/types/dynamic_map.rb +5 -7
  84. data/lib/datastax_rails/types/dynamic_set.rb +2 -2
  85. data/lib/datastax_rails/util/solr_repair.rb +3 -3
  86. data/lib/datastax_rails/validations/associated.rb +8 -6
  87. data/lib/datastax_rails/validations/uniqueness.rb +8 -8
  88. data/lib/datastax_rails/validations.rb +9 -10
  89. data/lib/datastax_rails/version.rb +2 -1
  90. data/lib/datastax_rails/wide_storage_model.rb +6 -6
  91. data/lib/datastax_rails.rb +13 -9
  92. data/lib/schema_migration.rb +3 -3
  93. data/spec/datastax_rails/associations/belongs_to_association_spec.rb +2 -2
  94. data/spec/datastax_rails/associations/collection_association_spec.rb +14 -14
  95. data/spec/datastax_rails/associations/has_many_association_spec.rb +20 -20
  96. data/spec/datastax_rails/associations_spec.rb +11 -11
  97. data/spec/datastax_rails/attribute_methods_spec.rb +25 -25
  98. data/spec/datastax_rails/base_spec.rb +24 -24
  99. data/spec/datastax_rails/callbacks_spec.rb +21 -21
  100. data/spec/datastax_rails/column_spec.rb +133 -132
  101. data/spec/datastax_rails/connection/statement_cache_spec.rb +2 -2
  102. data/spec/datastax_rails/cql/base_spec.rb +4 -4
  103. data/spec/datastax_rails/cql/delete_spec.rb +19 -0
  104. data/spec/datastax_rails/cql/select_spec.rb +8 -8
  105. data/spec/datastax_rails/cql/update_spec.rb +8 -10
  106. data/spec/datastax_rails/dynamic_model_spec.rb +36 -22
  107. data/spec/datastax_rails/inheritance_spec.rb +11 -14
  108. data/spec/datastax_rails/persistence_spec.rb +73 -74
  109. data/spec/datastax_rails/relation/batches_spec.rb +13 -13
  110. data/spec/datastax_rails/relation/facet_methods_spec.rb +43 -35
  111. data/spec/datastax_rails/relation/finder_methods_spec.rb +77 -78
  112. data/spec/datastax_rails/relation/modification_methods_spec.rb +19 -19
  113. data/spec/datastax_rails/relation/search_methods_spec.rb +160 -160
  114. data/spec/datastax_rails/relation/spawn_methods_spec.rb +18 -18
  115. data/spec/datastax_rails/relation_spec.rb +119 -116
  116. data/spec/datastax_rails/schema/migrator_spec.rb +30 -30
  117. data/spec/datastax_rails/schema/solr_spec.rb +15 -15
  118. data/spec/datastax_rails/scoping/default_spec.rb +9 -9
  119. data/spec/datastax_rails/types/dynamic_list_spec.rb +12 -12
  120. data/spec/datastax_rails/types/dynamic_map_spec.rb +10 -10
  121. data/spec/datastax_rails/types/dynamic_set_spec.rb +22 -10
  122. data/spec/datastax_rails/validations/uniqueness_spec.rb +25 -25
  123. data/spec/datastax_rails/wide_storage_model_spec.rb +11 -0
  124. data/spec/datastax_rails_spec.rb +2 -2
  125. data/spec/dummy/config/application.rb +2 -3
  126. data/spec/dummy/config/boot.rb +1 -1
  127. data/spec/dummy/config/environments/development.rb +3 -3
  128. data/spec/dummy/config/environments/test.rb +1 -1
  129. data/spec/dummy/config/initializers/session_store.rb +1 -1
  130. data/spec/dummy/config/initializers/wrap_parameters.rb +1 -1
  131. data/spec/factories/audit_logs.rb +6 -0
  132. data/spec/factories/hobbies.rb +6 -0
  133. data/spec/factories/people.rb +5 -0
  134. data/spec/feature/dynamic_fields_spec.rb +4 -4
  135. data/spec/feature/overloaded_tables_spec.rb +11 -12
  136. data/spec/spec_helper.rb +17 -14
  137. data/spec/support/datastax_test_hook.rb +2 -2
  138. data/spec/support/default_consistency_shared_examples.rb +11 -11
  139. data/spec/support/models.rb +31 -32
  140. metadata +40 -6
  141. data/lib/datastax_rails/attribute_methods/before_type_cast.rb +0 -71
  142. data/lib/datastax_rails/log_subscriber.rb +0 -0
  143. data/spec/dummy/ks/migrate/20111117224534_models.rb +0 -20
@@ -77,7 +77,7 @@ module DatastaxRails #:nodoc:
77
77
  # sense to sort on anyways).
78
78
  #
79
79
  # EXAMPLE:
80
- #
80
+ #
81
81
  # class Person < DatastaxRails::Base
82
82
  # uuid :id
83
83
  # string :first_name
@@ -233,15 +233,15 @@ module DatastaxRails #:nodoc:
233
233
  # Company.where(name: 'All*').first #=> finds the first company whose name begins with All
234
234
  #
235
235
  # See DatastaxRails::FinderMethods for more information
236
- #
236
+ #
237
237
  # == Facets
238
238
  #
239
239
  # DSR support both field and range facets. For additional detail on facets, see the documentation
240
- # available under the {DatastaxRails::FacetMethods} module. The result is available through the
240
+ # available under the {DatastaxRails::FacetMethods} module. The result is available through the
241
241
  # facets accessor.
242
242
  #
243
243
  # results = Article.field_facet(:author)
244
- # results.facets #=> {"author"=>["vonnegut", 2. "asimov", 3]}
244
+ # results.facets #=> {"author"=>["vonnegut", 2. "asimov", 3]}
245
245
  #
246
246
  # Model.field_facet(:author)
247
247
  # Model.field_facet(:author, sort: 'count', limit: 10, mincount: 1)
@@ -273,7 +273,7 @@ module DatastaxRails #:nodoc:
273
273
  # will lose data.
274
274
  #
275
275
  # === Set
276
- #
276
+ #
277
277
  # A set is an un-ordered collection of unique values. This collection is fully searchable in Solr.
278
278
  #
279
279
  # class User < DatastaxRails::Base
@@ -296,7 +296,7 @@ module DatastaxRails #:nodoc:
296
296
  # user.emails #=> ['jim@example.com']
297
297
  #
298
298
  # === List
299
- #
299
+ #
300
300
  # An ordered collection of values. They do not necessarily have to be unique. The collection
301
301
  # will be fully searchable in Solr.
302
302
  #
@@ -346,10 +346,9 @@ module DatastaxRails #:nodoc:
346
346
  #
347
347
  # See the documentation for {DatastaxRails::SearchMethods} for more examples of using the search API.
348
348
  class Base
349
- extend ActiveModel::Naming
350
- include ActiveModel::Conversion
349
+ include ActiveModel::Model
351
350
  extend ActiveSupport::DescendantsTracker
352
-
351
+
353
352
  include Persistence
354
353
  include Connection
355
354
  include Inheritance
@@ -365,15 +364,15 @@ module DatastaxRails #:nodoc:
365
364
  include Timestamps
366
365
  include Serialization
367
366
  include SolrRepair
368
-
367
+
369
368
  # Stores the default scope for the class
370
- class_attribute :default_scopes, :instance_writer => false
369
+ class_attribute :default_scopes, instance_writer: false
371
370
  self.default_scopes = []
372
-
371
+
373
372
  # Stores the connection configuration information
374
373
  class_attribute :config
375
-
376
- class_attribute :default_timezone, :instance_writer => false
374
+
375
+ class_attribute :default_timezone, instance_writer: false
377
376
  self.default_timezone = :utc
378
377
 
379
378
  # Stores the default consistency level (QUORUM by default)
@@ -383,45 +382,45 @@ module DatastaxRails #:nodoc:
383
382
  # Stores the method of saving data (CQL by default)
384
383
  class_attribute :storage_method
385
384
  self.storage_method = :cql
386
-
385
+
387
386
  # Stores any additional information that should be used when creating the column family
388
387
  # See {DatastaxRails::WideStorageModel} or {DatastaxRails::Payload} model for an example
389
388
  class_attribute :create_options
390
-
389
+
391
390
  # Stores the attribute that wide models should cluster on. Basically, this is the
392
391
  # attribute that CQL uses to "group" columns into logical records even though they
393
392
  # are stored on the same row.
394
393
  class_attribute :cluster_by
395
-
394
+
396
395
  attr_reader :attributes
397
396
  attr_reader :loaded_attributes
398
397
  attr_accessor :key
399
-
398
+
400
399
  # Returns a hash of all the attributes that have been specified for serialization as
401
400
  # keys and their class restriction as values.
402
401
  class_attribute :serialized_attributes
403
402
  self.serialized_attributes = {}
404
-
403
+
405
404
  # Whether or not we are using solr legacy mappings
406
405
  class_attribute :legacy_mapping
407
-
408
- def initialize(attributes = {}, options = {})
406
+
407
+ def initialize(attributes = {}, _options = {})
409
408
  defaults = self.class.column_defaults.dup
410
- defaults.each { |k, v| v.duplicable? ? v.dup : v }
411
-
412
- @attributes = self.initialize_attributes(defaults)
409
+ defaults.each { |_k, v| v.duplicable? ? v.dup : v }
410
+
411
+ @attributes = initialize_attributes(defaults)
413
412
  @column_types = self.class.columns_hash
414
413
 
415
414
  init_internals
416
- init_changed_attributes
415
+ init_changed_attributes
417
416
  populate_with_current_scope_attributes
418
-
417
+
419
418
  assign_attributes(attributes) if attributes
420
-
419
+
421
420
  yield self if block_given?
422
421
  run_callbacks :initialize unless _initialize_callbacks.empty?
423
422
  end
424
-
423
+
425
424
  # Initialize an empty model object from +coder+. +coder+ must contain
426
425
  # the attributes necessary for initializing an empty model object. For
427
426
  # example:
@@ -434,35 +433,35 @@ module DatastaxRails #:nodoc:
434
433
  # post.title # => 'hello world'
435
434
  def init_with(coder)
436
435
  Types::DirtyCollection.ignore_modifications do
437
- @attributes = self.initialize_attributes(coder['attributes'])
436
+ @attributes = initialize_attributes(coder['attributes'])
438
437
  @column_types_override = coder['column_types']
439
438
  @column_types = self.class.columns_hash
440
-
439
+
441
440
  init_internals
442
-
441
+
443
442
  @new_record = false
444
443
  run_callbacks :find
445
444
  run_callbacks :initialize
446
445
  end
447
446
  self
448
447
  end
449
-
448
+
450
449
  def init_internals
451
450
  pk = self.class.primary_key
452
451
  @attributes[pk] = nil unless @attributes.key?(pk)
453
452
 
454
453
  @association_cache = {}
455
454
  @attributes_cache = {}
456
- @previously_changed = {}
457
- @changed_attributes = {}
458
- @loaded_attributes = Hash[@attributes.map{|k,v| [k,true]}].with_indifferent_access
455
+ @previously_changed = {}.with_indifferent_access
456
+ @changed_attributes = {}.with_indifferent_access
457
+ @loaded_attributes = Hash[@attributes.map { |k, _v| [k, true] }].with_indifferent_access
459
458
  @readonly = false
460
459
  @destroyed = false
461
460
  @marked_for_destruction = false
462
461
  @destroyed_by_association = nil
463
462
  @new_record = true
464
463
  end
465
-
464
+
466
465
  def init_changed_attributes
467
466
  # Intentionally avoid using #column_defaults since overridden defaults
468
467
  # won't get written unless they get marked as changed
@@ -471,17 +470,18 @@ module DatastaxRails #:nodoc:
471
470
  @changed_attributes[attr] = orig_value if _field_changed?(attr, orig_value, @attributes[attr])
472
471
  end
473
472
  end
474
-
473
+
475
474
  # Freeze the attributes hash such that associations are still accessible, even on destroyed records.
476
475
  def freeze
477
- @attributes.freeze; self
476
+ @attributes.freeze
477
+ self
478
478
  end
479
479
 
480
480
  # Returns +true+ if the attributes hash has been frozen.
481
481
  def frozen?
482
482
  @attributes.frozen?
483
483
  end
484
-
484
+
485
485
  def to_param
486
486
  id.to_s if persisted?
487
487
  end
@@ -490,52 +490,51 @@ module DatastaxRails #:nodoc:
490
490
  id.hash
491
491
  end
492
492
 
493
- def ==(comparison_object)
493
+ def ==(other)
494
494
  super ||
495
- comparison_object.instance_of?(self.class) &&
495
+ other.instance_of?(self.class) &&
496
496
  id.present? &&
497
- comparison_object.id.eql?(id)
497
+ other.id.eql?(id)
498
498
  end
499
499
 
500
- def eql?(comparison_object)
501
- self == (comparison_object)
500
+ def eql?(other)
501
+ self == (other)
502
502
  end
503
-
503
+
504
504
  def attribute_names
505
505
  self.class.attribute_names
506
506
  end
507
- alias :column_names :attribute_names
508
-
507
+ alias_method :column_names, :attribute_names
508
+
509
509
  def valid_consistency?(level) #:nodoc:
510
510
  self.class.validate_consistency(level.to_s.upcase)
511
511
  end
512
-
512
+
513
513
  private
514
- def populate_with_current_scope_attributes
515
- return unless self.class.scope_attributes?
516
-
517
- self.class.scope_attributes.each do |att, value|
518
- send("#{att}=", value) if respond_to?("#{att}=")
519
- end
514
+
515
+ def populate_with_current_scope_attributes
516
+ return unless self.class.scope_attributes?
517
+
518
+ self.class.scope_attributes.each do |att, value|
519
+ send("#{att}=", value) if respond_to?("#{att}=")
520
520
  end
521
-
521
+ end
522
+
522
523
  class << self
523
- delegate :find, :find_by, :find_by!, :first, :all, :exists?, :any?, :many?, :to => :scoped
524
- delegate :destroy, :destroy_all, :delete, :update, :update_all, :to => :scoped
525
- delegate :order, :limit, :where, :where_not, :page, :paginate, :select, :slow_order, :to => :scoped
526
- delegate :per_page, :each, :group, :total_pages, :search, :fulltext, :to => :scoped
527
- delegate :count, :first, :first!, :last, :last!, :compute_stats, :to => :scoped
528
- delegate :sum, :average, :minimum, :maximum, :stddev, :to => :scoped
529
- delegate :cql, :with_cassandra, :with_solr, :commit_solr, :allow_filtering, :to => :scoped
530
- delegate :find_each, :find_in_batches, :consistency, :to => :scoped
531
- delegate :field_facet, :range_facet, :to => :scoped
524
+ delegate :find, :find_by, :find_by!, :first, :all, :exists?, :any?, :many?, to: :scoped
525
+ delegate :destroy, :destroy_all, :delete, :update, :update_all, to: :scoped
526
+ delegate :order, :limit, :where, :where_not, :page, :paginate, :select, :slow_order, to: :scoped
527
+ delegate :per_page, :each, :group, :total_pages, :search, :fulltext, to: :scoped
528
+ delegate :count, :first, :first!, :last, :last!, :compute_stats, to: :scoped
529
+ delegate :sum, :average, :minimum, :maximum, :stddev, to: :scoped
530
+ delegate :cql, :with_cassandra, :with_solr, :commit_solr, :allow_filtering, to: :scoped
531
+ delegate :find_each, :find_in_batches, :consistency, to: :scoped
532
+ delegate :field_facet, :range_facet, to: :scoped
532
533
 
533
534
  # Sets the column family name
534
535
  #
535
536
  # @param [String] column_family the name of the column family in cassandra
536
- def column_family=(column_family)
537
- @column_family = column_family
538
- end
537
+ attr_writer :column_family
539
538
 
540
539
  # Returns the column family name. If it has been set manually, the set name is returned.
541
540
  # Otherwise returns the pluralized version of the class name.
@@ -544,51 +543,49 @@ module DatastaxRails #:nodoc:
544
543
  def column_family
545
544
  @column_family || name.underscore.pluralize
546
545
  end
547
-
546
+
548
547
  def models
549
- self.descendants.reject {|m|m.abstract_class?}
548
+ descendants.reject { |m|m.abstract_class? }
550
549
  end
551
-
550
+
552
551
  def payload_model?
553
- self.ancestors.include?(DatastaxRails::PayloadModel)
552
+ ancestors.include?(DatastaxRails::PayloadModel)
554
553
  end
555
-
554
+
556
555
  def wide_storage_model?
557
- self.ancestors.include?(DatastaxRails::WideStorageModel)
556
+ ancestors.include?(DatastaxRails::WideStorageModel)
558
557
  end
559
-
558
+
560
559
  def legacy_mapping?
561
- self.legacy_mapping
560
+ legacy_mapping
562
561
  end
563
-
562
+
564
563
  def base_class
565
564
  klass = self
566
- while klass.superclass != Base
567
- klass = klass.superclass
568
- end
565
+ klass = klass.superclass while klass.superclass != Base
569
566
  klass
570
567
  end
571
-
568
+
572
569
  def find_by_id(id)
573
570
  scoped.with_cassandra.find(id)
574
571
  rescue RecordNotFound
575
572
  nil
576
573
  end
577
-
574
+
578
575
  def logger
579
576
  Rails.logger
580
577
  end
581
-
578
+
582
579
  # Returns an array of attribute names as strings
583
580
  def attribute_names
584
- @attribute_names ||= attribute_definitions.keys.collect {|a|a.to_s}
581
+ @attribute_names ||= attribute_definitions.keys.map { |a|a.to_s }
585
582
  end
586
- alias :column_names :attribute_names
587
-
583
+ alias_method :column_names, :attribute_names
584
+
588
585
  def columns
589
586
  @columns ||= attribute_definitions.values
590
587
  end
591
-
588
+
592
589
  # SOLR always paginates all requests. There is no way to disable it, so we are
593
590
  # setting the default page size to an arbitrarily high number so that we effectively
594
591
  # remove pagination. If you instead want a model set to something more sane, then
@@ -601,18 +598,18 @@ module DatastaxRails #:nodoc:
601
598
  # end
602
599
  # end
603
600
  def default_page_size
604
- 100000
601
+ 100_000
605
602
  end
606
-
603
+
607
604
  def search_ids(&block)
608
605
  search = solr_search(&block)
609
606
  search.raw_results.map { |result| result.primary_key }
610
607
  end
611
-
608
+
612
609
  def valid_consistency?(level) #:nodoc:
613
610
  DatastaxRails::Cql::Consistency::VALID_CONSISTENCY_LEVELS.include?(level)
614
611
  end
615
-
612
+
616
613
  # Returns a string like 'Post(id:integer, title:string, body:text)'
617
614
  def inspect
618
615
  if self == Base
@@ -622,45 +619,45 @@ module DatastaxRails #:nodoc:
622
619
  "#{super}(#{attr_list})"
623
620
  end
624
621
  end
625
-
622
+
626
623
  private
627
-
628
- def construct_finder_relation(options = {}, scope = nil)
629
- relation = options.is_a?(Hash) ? unscoped.apply_finder_options(options) : options
630
- relation = scope.merge(relation) if scope
631
- relation
632
- end
633
-
634
- def relation #:nodoc:
635
- Relation.new(self, column_family)
636
- end
637
-
638
- # Returns the class type of the record using the current module as a prefix. So descendants of
639
- # MyApp::Business::Account would appear as MyApp::Business::AccountSubclass.
640
- def compute_type(type_name)
641
- if type_name.match(/^::/)
642
- # If the type is prefixed with a scope operator then we assume that
643
- # the type_name is an absolute reference.
644
- ActiveSupport::Dependencies.constantize(type_name)
645
- else
646
- # Build a list of candidates to search for
647
- candidates = []
648
- name.scan(/::|$/) { candidates.unshift "#{$`}::#{type_name}" }
649
- candidates << type_name
650
-
651
- candidates.each do |candidate|
652
- begin
653
- constant = ActiveSupport::Dependencies.constantize(candidate)
654
- return constant if candidate == constant.to_s
655
- rescue NameError => e
656
- # We don't want to swallow NoMethodError < NameError errors
657
- raise e unless e.instance_of?(NameError)
658
- end
659
- end
660
624
 
661
- raise NameError, "uninitialized constant #{candidates.first}"
625
+ def construct_finder_relation(options = {}, scope = nil)
626
+ relation = options.is_a?(Hash) ? unscoped.apply_finder_options(options) : options
627
+ relation = scope.merge(relation) if scope
628
+ relation
629
+ end
630
+
631
+ def relation #:nodoc:
632
+ Relation.new(self, column_family)
633
+ end
634
+
635
+ # Returns the class type of the record using the current module as a prefix. So descendants of
636
+ # MyApp::Business::Account would appear as MyApp::Business::AccountSubclass.
637
+ def compute_type(type_name)
638
+ if type_name.match(/^::/)
639
+ # If the type is prefixed with a scope operator then we assume that
640
+ # the type_name is an absolute reference.
641
+ ActiveSupport::Dependencies.constantize(type_name)
642
+ else
643
+ # Build a list of candidates to search for
644
+ candidates = []
645
+ name.scan(/::|$/) { candidates.unshift "#{$`}::#{type_name}" }
646
+ candidates << type_name
647
+
648
+ candidates.each do |candidate|
649
+ begin
650
+ constant = ActiveSupport::Dependencies.constantize(candidate)
651
+ return constant if candidate == constant.to_s
652
+ rescue NameError => e
653
+ # We don't want to swallow NoMethodError < NameError errors
654
+ raise e unless e.instance_of?(NameError)
655
+ end
662
656
  end
657
+
658
+ fail NameError, "uninitialized constant #{candidates.first}"
663
659
  end
660
+ end
664
661
  end
665
662
  end
666
663
  end