Class: BucketMaker::SeriesMaker

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/bucket_maker/series_maker.rb

Constant Summary collapse

BUCKET_ROOT =
'series'

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#configurationObject (readonly)

Returns the value of attribute configuration.



12
13
14
# File 'lib/bucket_maker/series_maker.rb', line 12

def configuration
  @configuration
end

#seriesObject

Returns the value of attribute series.



10
11
12
# File 'lib/bucket_maker/series_maker.rb', line 10

def series
  @series
end

Instance Method Details

#bucketable?(bucketable, series_name, bucket_name, group_name) ⇒ Boolean

Returns:

  • (Boolean)


68
69
70
71
72
73
74
75
76
77
78
# File 'lib/bucket_maker/series_maker.rb', line 68

def bucketable?(bucketable, series_name, bucket_name, group_name)
  if  bucketable.has_attribute?(:created_at) &&
      has_group_in_bucket_in_series?(series_name, bucket_name, group_name)

    series_with_name(series_name).bucket_with_name(bucket_name).is_bucketable?(bucketable) ||
    series_with_name(series_name).is_bucketable?(bucketable)

  else
    false
  end
end

#bucketize(series_name, bucket_name) ⇒ Object



64
65
66
# File 'lib/bucket_maker/series_maker.rb', line 64

def bucketize(series_name, bucket_name)
  series_with_name(series_name).bucket_with_name(bucket_name).random_group
end

#configured?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/bucket_maker/series_maker.rb', line 31

def configured?
  @configuration != nil
end

#for_each_series_with_bucketableObject



35
36
37
38
39
40
41
# File 'lib/bucket_maker/series_maker.rb', line 35

def for_each_series_with_bucketable
  @series.collect do |series_name, series|
    series.each_bucket do |bucket_name, bucket|
      yield self, series_name, bucket_name
    end
  end.inject(true) {|result, value| result && value } if block_given?
end

#has_bucket_in_series?(series_name, bucket_name) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/bucket_maker/series_maker.rb', line 51

def has_bucket_in_series?(series_name, bucket_name)
  has_series?(series_name) && series_with_name(series_name).has_bucket?(bucket_name)
end

#has_group_in_bucket_in_series?(series_name, bucket_name, group_name) ⇒ Boolean

Returns:

  • (Boolean)


55
56
57
58
# File 'lib/bucket_maker/series_maker.rb', line 55

def has_group_in_bucket_in_series?(series_name, bucket_name, group_name)
  has_bucket_in_series?(series_name, bucket_name) &&
  series_with_name(series_name).bucket_with_name(bucket_name).has_group?(group_name)
end

#has_series?(series_name) ⇒ Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/bucket_maker/series_maker.rb', line 47

def has_series?(series_name)
  @series[series_name.to_sym] != nil
end

#key_for_series(bucketable, series_name, bucket_name) ⇒ Object



60
61
62
# File 'lib/bucket_maker/series_maker.rb', line 60

def key_for_series(bucketable, series_name, bucket_name)
  "bucket_maker:#{bucketable.class.to_s.underscore}_#{bucketable.id}:#{series_name.to_s}:#{bucket_name.to_s}" if bucketable && bucketable.id
end

#make!(config) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/bucket_maker/series_maker.rb', line 16

def make!(config)
  @series = []

  absolute_config_path = Rails.root + config

  if File.exists?(absolute_config_path)
    @configuration = YAML.load_file(absolute_config_path)

    @series = @configuration[BUCKET_ROOT].inject({}) do |result, (series_name, series_options)|
                result[series_name.to_sym] = BucketMaker::Series.new(series_name, series_options)
                result
              end if @configuration && @configuration[BUCKET_ROOT]
  end
end

#series_with_name(series_name) ⇒ Object



43
44
45
# File 'lib/bucket_maker/series_maker.rb', line 43

def series_with_name(series_name)
  @series[series_name.to_sym]
end