conductor-rails 0.0.9 → 0.1.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e08ac7a5fbda29faff8fea890a3d5c89e7c20b6f
4
- data.tar.gz: cf53ed64daad089b9cc52afe2b5d1bea8ff3b2e7
3
+ metadata.gz: 0a13b0943de25440c97671cd1c4e629c464508b4
4
+ data.tar.gz: 4fa1896342b2d3252b5587f03f3cb50cd3322633
5
5
  SHA512:
6
- metadata.gz: e05715dcdac187330c1d47930da223209d0694c8fc6a96885f8d1aa2dca535fb89631a1fda4ad6cb7ba15bf877b01451f200096cb70db5d55241007c3961f9c3
7
- data.tar.gz: 18da39c9855b5fd4eba3ee7de9933bd99a44b2ab283b7851512df232e23941534f9482ce166f13d87b8874fb67ed4f6fe0fc120bc2fee6132c70a863b236b35a
6
+ metadata.gz: 4c8da0d5fd9af1358bb6473ae993677e1d4e37c350c0eb9c948793d6700c766346df3c77a9728855a3c4b5cce3666c672770368e685b7ed45e14552836b55adc
7
+ data.tar.gz: 1007d3afc957459f50e8dc2aa5f3c51606acffa1be2b510dfd63c67b3f904502c723a2121c6f7972c16f8d24ecd90ada630b98a85e7128acc44fc3624fbc78b7
data/README.md CHANGED
@@ -17,7 +17,7 @@ And then execute:
17
17
 
18
18
  ## Usage
19
19
 
20
- Define a Conductor
20
+ Define a Conductor in `app/conductors`
21
21
 
22
22
  ```ruby
23
23
  class PagesConductor < Conductor::Base
@@ -23,5 +23,4 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency "rspec", "~> 3.0.0"
24
24
  spec.add_development_dependency "guard", "~> 2.10.0"
25
25
  spec.add_development_dependency "guard-rspec", "~> 4.3.1"
26
- spec.add_development_dependency "pry-byebug"
27
26
  end
@@ -1,5 +1,3 @@
1
- require 'ostruct'
2
-
3
1
  module Conductor
4
2
  class Base
5
3
  def initialize(controller)
@@ -24,10 +22,8 @@ module Conductor
24
22
  attr_reader :controller, :params
25
23
 
26
24
  def self.export(id, value=nil, &block)
27
- @exports ||= []
28
-
29
25
  callback = value.nil? ? block : Proc.new { value }
30
- @exports << DeferredExport.new( id: id, callback: callback )
26
+ exports << DeferredExport.new(id, &callback)
31
27
  end
32
28
 
33
29
  def self.exports
@@ -2,18 +2,16 @@ module Conductor
2
2
  class DeferredExport
3
3
  attr_reader :id
4
4
 
5
- def initialize(options={})
6
- @id = options.fetch(:id)
7
- @callback = options.fetch(:callback)
8
- @context = options.fetch(:context, self)
5
+ def initialize(id, &callback)
6
+ @id, @callback = id, callback
9
7
  end
10
8
 
11
- def export(export_value=nil)
12
- context.instance_eval { @callback.call export_value }
9
+ def export(context, export_value=nil)
10
+ context.instance_exec(export_value, &callback)
13
11
  end
14
12
 
15
13
  private
16
14
 
17
- attr_reader :context
15
+ attr_reader :context, :callback
18
16
  end
19
17
  end
@@ -14,16 +14,24 @@ module Conductor
14
14
 
15
15
  private
16
16
 
17
- attr_reader :arguments
17
+ attr_reader :arguments, :context
18
18
 
19
19
  def output
20
20
  @output ||= begin
21
- selected_exports.to_a.each_with_object([]) do |export, exports|
22
- exports << export.export(requested_export_value)
21
+ enumerable_exports do |deferred, exports|
22
+ exports << export_deferred(deferred)
23
23
  end
24
24
  end
25
25
  end
26
26
 
27
+ def enumerable_exports(&block)
28
+ selected_exports.to_a.each_with_object([], &block)
29
+ end
30
+
31
+ def export_deferred(deferred)
32
+ deferred.export(conductor, requested_export_value)
33
+ end
34
+
27
35
  def selected_exports
28
36
  requested_export_keys.map do |key|
29
37
  exports.find { |export| export.id == key }
@@ -1,3 +1,3 @@
1
1
  module Conductor
2
- VERSION = "0.0.9"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -51,6 +51,11 @@ describe DummyController, "Integration ActionController::Base" do
51
51
  subject { controller.instance_variable_get :@omg }
52
52
  it { is_expected.to eq "LMAO..." }
53
53
  end
54
+
55
+ context "@my_method" do
56
+ subject { controller.instance_variable_get :@my_method }
57
+ it { is_expected.to eq "conductor method called" }
58
+ end
54
59
  end
55
60
  end
56
61
  end
data/spec/spec_helper.rb CHANGED
@@ -15,16 +15,27 @@ class DummyController < ActionController::Base
15
15
  @foo_a, @bar_a, @meme = conductor.export
16
16
  @bar_b, @foo_b = conductor.export(:bar, :foo)
17
17
  @omg = conductor.export(:omg, "LMAO")
18
+ @my_method = conductor.export(:my_method)
18
19
  end
19
20
  end
20
21
 
21
22
  class TestMultiExportConductor < Conductor::Base
22
23
  export :foo, "Hello World"
23
24
  export :bar, "Goodbye Moon"
25
+
24
26
  export :meme do
25
27
  "Me me"
26
28
  end
29
+
27
30
  export :omg do |lol|
28
31
  "#{lol}..."
29
32
  end
33
+
34
+ export :my_method do
35
+ my_method
36
+ end
37
+
38
+ def my_method
39
+ "conductor method called"
40
+ end
30
41
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: conductor-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Cuppy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-07 00:00:00.000000000 Z
11
+ date: 2015-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -94,20 +94,6 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: 4.3.1
97
- - !ruby/object:Gem::Dependency
98
- name: pry-byebug
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
97
  description:
112
98
  email:
113
99
  - adam@codingzeal.com