fiveruns-dash-ruby 0.8.0 → 0.8.1

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.
@@ -66,12 +66,13 @@ module Fiveruns::Dash
66
66
  # add_recipe :ruby
67
67
  def add_recipe(name, options = {}, &block)
68
68
  Fiveruns::Dash.register_recipe(name, options, &block) if block_given?
69
-
70
69
  if Fiveruns::Dash.recipes[name]
71
70
  Fiveruns::Dash.recipes[name].each do |recipe|
72
71
  if !recipes.include?(recipe) && recipe.matches?(options)
73
72
  recipes << recipe
74
- recipe.add_to(self)
73
+ with_recipe_settings(options.reject { |k, _| k == :url }) do
74
+ recipe.add_to(self)
75
+ end
75
76
  end
76
77
  end
77
78
  else
@@ -90,13 +91,27 @@ module Fiveruns::Dash
90
91
 
91
92
  # Optionally fired by recipes when included
92
93
  def added
93
- yield
94
+ yield current_recipe_settings
94
95
  end
95
96
 
96
97
  #######
97
98
  private
98
99
  #######
99
100
 
101
+ def with_recipe_settings(settings = {})
102
+ recipe_settings_stack << settings
103
+ yield
104
+ recipe_settings_stack.pop
105
+ end
106
+
107
+ def current_recipe_settings
108
+ recipe_settings_stack.last
109
+ end
110
+
111
+ def recipe_settings_stack
112
+ @recipe_settings_stack ||= []
113
+ end
114
+
100
115
  def normalize_version_comparator(comparator)
101
116
  comparator.to_s == '=' ? '==' : comparator
102
117
  end
@@ -28,13 +28,21 @@ module Fiveruns::Dash
28
28
  end
29
29
 
30
30
  def add_to(configuration)
31
- self.class.in_scope self do
31
+ self.class.in_scope(self) do
32
32
  @block.call(configuration)
33
33
  end
34
34
  end
35
35
 
36
+ # Currently :url is the only criteria; all other parts
37
+ # of the hash are settings to be passed on to the recipe
36
38
  def matches?(criteria)
37
- criteria.all? { |k, v| options[k] == v }
39
+ criteria.all? do |k, v|
40
+ if [:url].include?(k)
41
+ options[k] == v
42
+ else
43
+ true
44
+ end
45
+ end
38
46
  end
39
47
 
40
48
  def ==(other)
data/test/recipe_test.rb CHANGED
@@ -79,6 +79,20 @@ class RecipeTest < Test::Unit::TestCase
79
79
  assert_metrics(*%w(test2))
80
80
  end
81
81
  end
82
+ context "and passing settings" do
83
+ setup do
84
+ recipe :settings1, :url => 'http://example.com' do |r|
85
+ r.added do |settings|
86
+ r.counter(settings[:metric]) { }
87
+ end
88
+ end
89
+ config.add_recipe :settings1, :metric => :bar
90
+ end
91
+ should "pass them to the `added' block" do
92
+ assert_equal 1, config.metrics.size
93
+ assert_equal 'bar', config.metrics.first.name
94
+ end
95
+ end
82
96
  end
83
97
 
84
98
  context "when added" do
data/version.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 8
4
- :patch: 0
4
+ :patch: 1
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fiveruns-dash-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - FiveRuns Development Team
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-02-16 00:00:00 -08:00
12
+ date: 2009-02-18 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency