conductor-rails 0.0.9 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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