Module: Magick::DSL

Defined in:
lib/magick/dsl.rb

Instance Method Summary collapse

Instance Method Details

#add_dependency(feature_name, dependency_name) ⇒ Object



95
96
97
# File 'lib/magick/dsl.rb', line 95

def add_dependency(feature_name, dependency_name)
  Magick[feature_name].add_dependency(dependency_name)
end

#boolean_feature(name, default: false, **options) ⇒ Object



10
11
12
# File 'lib/magick/dsl.rb', line 10

def boolean_feature(name, default: false, **options)
  Magick.register_feature(name, type: :boolean, default_value: default, **options)
end

#disable_feature(feature_name, user_id: nil) ⇒ Object



104
105
106
# File 'lib/magick/dsl.rb', line 104

def disable_feature(feature_name, user_id: nil)
  Magick[feature_name].disable(user_id: user_id)
end

#disabled_for?(feature_name, object, **additional_context) ⇒ Boolean

Returns:

  • (Boolean)


113
114
115
# File 'lib/magick/dsl.rb', line 113

def disabled_for?(feature_name, object, **additional_context)
  Magick.disabled_for?(feature_name, object, **additional_context)
end

#enable_feature(feature_name, user_id: nil) ⇒ Object

Enable/disable features globally



100
101
102
# File 'lib/magick/dsl.rb', line 100

def enable_feature(feature_name, user_id: nil)
  Magick[feature_name].enable(user_id: user_id)
end

#enable_for_custom_attribute(feature_name, attribute_name, values, operator: :equals) ⇒ Object



66
67
68
# File 'lib/magick/dsl.rb', line 66

def enable_for_custom_attribute(feature_name, attribute_name, values, operator: :equals)
  Magick[feature_name].enable_for_custom_attribute(attribute_name, values, operator: operator)
end

#enable_for_date_range(feature_name, start_date, end_date) ⇒ Object



58
59
60
# File 'lib/magick/dsl.rb', line 58

def enable_for_date_range(feature_name, start_date, end_date)
  Magick[feature_name].enable_for_date_range(start_date, end_date)
end

#enable_for_group(feature_name, group_name) ⇒ Object



36
37
38
# File 'lib/magick/dsl.rb', line 36

def enable_for_group(feature_name, group_name)
  Magick[feature_name].enable_for_group(group_name)
end

#enable_for_ip_addresses(feature_name, *ip_addresses) ⇒ Object



62
63
64
# File 'lib/magick/dsl.rb', line 62

def enable_for_ip_addresses(feature_name, *ip_addresses)
  Magick[feature_name].enable_for_ip_addresses(ip_addresses)
end

#enable_for_role(feature_name, role_name) ⇒ Object



40
41
42
# File 'lib/magick/dsl.rb', line 40

def enable_for_role(feature_name, role_name)
  Magick[feature_name].enable_for_role(role_name)
end

#enable_for_tag(feature_name, tag_name) ⇒ Object



44
45
46
# File 'lib/magick/dsl.rb', line 44

def enable_for_tag(feature_name, tag_name)
  Magick[feature_name].enable_for_tag(tag_name)
end

#enable_for_user(feature_name, user_id) ⇒ Object

Targeting DSL methods



32
33
34
# File 'lib/magick/dsl.rb', line 32

def enable_for_user(feature_name, user_id)
  Magick[feature_name].enable_for_user(user_id)
end

#enable_percentage(feature_name, percentage, type: :users) ⇒ Object



48
49
50
51
52
53
54
55
56
# File 'lib/magick/dsl.rb', line 48

def enable_percentage(feature_name, percentage, type: :users)
  feature = Magick[feature_name]
  case type
  when :users
    feature.enable_percentage_of_users(percentage)
  when :requests
    feature.enable_percentage_of_requests(percentage)
  end
end

#enabled_for?(feature_name, object, **additional_context) ⇒ Boolean

Check enablement for an object

Returns:

  • (Boolean)


109
110
111
# File 'lib/magick/dsl.rb', line 109

def enabled_for?(feature_name, object, **additional_context)
  Magick.enabled_for?(feature_name, object, **additional_context)
end

#exclude_group(feature_name, group_name) ⇒ Object



79
80
81
# File 'lib/magick/dsl.rb', line 79

def exclude_group(feature_name, group_name)
  Magick[feature_name].exclude_group(group_name)
end

#exclude_ip_addresses(feature_name, *ip_addresses) ⇒ Object



87
88
89
# File 'lib/magick/dsl.rb', line 87

def exclude_ip_addresses(feature_name, *ip_addresses)
  Magick[feature_name].exclude_ip_addresses(ip_addresses)
end

#exclude_role(feature_name, role_name) ⇒ Object



83
84
85
# File 'lib/magick/dsl.rb', line 83

def exclude_role(feature_name, role_name)
  Magick[feature_name].exclude_role(role_name)
end

#exclude_tag(feature_name, tag_name) ⇒ Object



75
76
77
# File 'lib/magick/dsl.rb', line 75

def exclude_tag(feature_name, tag_name)
  Magick[feature_name].exclude_tag(tag_name)
end

#exclude_user(feature_name, user_id) ⇒ Object

Exclusion DSL methods



71
72
73
# File 'lib/magick/dsl.rb', line 71

def exclude_user(feature_name, user_id)
  Magick[feature_name].exclude_user(user_id)
end

#experiment(name, variants:, **options) ⇒ Object



22
23
24
25
26
27
28
29
# File 'lib/magick/dsl.rb', line 22

def experiment(name, variants:, **options)
  feature = Magick.register_feature(name, type: :boolean, default_value: false, **options)
  variant_data = variants.map do |v|
    { name: v[:name].to_s, value: v[:value], weight: (v[:weight] || 0).to_f }
  end
  feature.set_variants(variant_data)
  feature
end

#feature(name, **options) ⇒ Object

Feature definition DSL methods



6
7
8
# File 'lib/magick/dsl.rb', line 6

def feature(name, **options)
  Magick.register_feature(name, **options)
end

#number_feature(name, default: 0, **options) ⇒ Object



18
19
20
# File 'lib/magick/dsl.rb', line 18

def number_feature(name, default: 0, **options)
  Magick.register_feature(name, type: :number, default_value: default, **options)
end

#set_variants(feature_name, variants) ⇒ Object



91
92
93
# File 'lib/magick/dsl.rb', line 91

def set_variants(feature_name, variants)
  Magick[feature_name].set_variants(variants)
end

#string_feature(name, default: '', **options) ⇒ Object



14
15
16
# File 'lib/magick/dsl.rb', line 14

def string_feature(name, default: '', **options)
  Magick.register_feature(name, type: :string, default_value: default, **options)
end