exposure 0.1.3 → 0.2.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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.3
1
+ 0.2.0
@@ -2,7 +2,7 @@ module Exposure
2
2
  module Building
3
3
  def self.included(base)
4
4
  base.extend ClassMethods
5
- base.send(:include, InstaneMethods)
5
+ base.send(:include, InstanceMethods)
6
6
  end
7
7
 
8
8
  module ClassMethods
@@ -20,17 +20,17 @@ module Exposure
20
20
  def build_default_builder(member, nesting)
21
21
  if nesting.any?
22
22
  builders = self::const_set(:DefaultBuilders, {
23
- self.resource_name.intern => Proc.new { [:build, params[resource_name] ] },
23
+ self.resource_name.intern => proc { [:build, params[resource_name] ] },
24
24
  })
25
25
  else
26
26
  self::const_set(:DefaultBuilders, {
27
- self.resource_name.intern => Proc.new { [:new, params[resource_name] ] },
27
+ self.resource_name.intern => proc { [:new, params[resource_name] ] },
28
28
  })
29
29
  end
30
30
  end
31
31
  end
32
32
 
33
- module InstaneMethods
33
+ module InstanceMethods
34
34
  private
35
35
  def custom_builder_for(resource_name)
36
36
  if builder = self.class::Builders[resource_name]
@@ -2,7 +2,7 @@ module Exposure
2
2
  module Callbacks
3
3
  def self.included(base)
4
4
  base.extend ClassMethods
5
- base.send(:include, InstaneMethods)
5
+ base.send(:include, InstanceMethods)
6
6
  end
7
7
 
8
8
  module ClassMethods
@@ -36,18 +36,18 @@ module Exposure
36
36
  except_methods = Array.wrap(options.delete(:except))
37
37
 
38
38
  if only_methods.any?
39
- options[:if] << Proc.new {|c| only_methods.include?(c.action_name.intern) }
39
+ options[:if] << proc {|c| only_methods.include?(c.action_name.intern) }
40
40
  end
41
41
 
42
42
  if except_methods.any?
43
- options[:if] << Proc.new {|c| !except_methods.include?(c.action_name.intern) }
43
+ options[:if] << proc {|c| !except_methods.include?(c.action_name.intern) }
44
44
  end
45
45
 
46
46
  self.send(callback_name, action, options)
47
47
  end
48
48
  end
49
49
 
50
- module InstaneMethods
50
+ module InstanceMethods
51
51
  end
52
52
  end
53
53
  end
@@ -2,12 +2,12 @@ module Exposure
2
2
  module Finding
3
3
  def self.included(base)
4
4
  base.extend ClassMethods
5
- base.send(:include, InstaneMethods)
5
+ base.send(:include, InstanceMethods)
6
6
  end
7
7
 
8
8
  module ClassMethods
9
- # find :person, :with => Proc.new { Person.find_by_permalink(params[:permalink]) }
10
- # find :people, :with => Proc.new { Person.send(params[:scope]) }
9
+ # find :person, :with => proc { Person.find_by_permalink(params[:permalink]) }
10
+ # find :people, :with => proc { Person.send(params[:scope]) }
11
11
  # find :dogs, :with => :dogs_adopted_after_date
12
12
  # find :dogs do
13
13
  # Dog.all
@@ -49,18 +49,18 @@ module Exposure
49
49
 
50
50
  def build_default_finders(member, nesting) #:nodoc:
51
51
  finders = self::const_set(:DefaultFinders, {
52
- self.resource_name.intern => Proc.new { [:find, params[:id] ] },
53
- self.resources_name.intern => Proc.new { [:all] }
52
+ self.resource_name.intern => proc { [:find, params[:id] ] },
53
+ self.resources_name.intern => proc { [:all] }
54
54
  })
55
55
 
56
56
  nesting.each do |association_name|
57
- finders[association_name.to_s.singularize.to_sym] = Proc.new { [:find, params[:"#{association_name.to_s.singularize}_id"]] }
58
- finders[association_name] = Proc.new { [ :all ] }
57
+ finders[association_name.to_s.singularize.to_sym] = proc { [:find, params[:"#{association_name.to_s.singularize}_id"]] }
58
+ finders[association_name] = proc { [ :all ] }
59
59
  end
60
60
  end
61
61
  end
62
62
 
63
- module InstaneMethods
63
+ module InstanceMethods
64
64
  private
65
65
  def custom_finder_for(resource_name)
66
66
  if finder = self.class::Finders[resource_name]
@@ -99,6 +99,7 @@ module Exposure
99
99
  if use_associaiton
100
100
  call_finder_chain(object.send(association).send(*value), chain)
101
101
  else
102
+ return value if value.empty? || value[0].kind_of?(ActiveRecord::Base) # the find already executed
102
103
  call_finder_chain(object.send(*value), chain)
103
104
  end
104
105
  else
@@ -2,7 +2,7 @@ module Exposure
2
2
  module Flashing
3
3
  def self.included(base)
4
4
  base.extend ClassMethods
5
- base.send(:include, InstaneMethods)
5
+ base.send(:include, InstanceMethods)
6
6
  end
7
7
 
8
8
  module ClassMethods
@@ -30,7 +30,7 @@ module Exposure
30
30
  end
31
31
  end
32
32
 
33
- module InstaneMethods
33
+ module InstanceMethods
34
34
  private
35
35
  def custom_flash_for(action_name, action_status)
36
36
  if flash_message = self.class::FlashMessages["#{action_name}.#{action_status}.html"]
@@ -2,7 +2,7 @@ module Exposure
2
2
  module Responding
3
3
  def self.included(base)
4
4
  base.extend ClassMethods
5
- base.send(:include, InstaneMethods)
5
+ base.send(:include, InstanceMethods)
6
6
  end
7
7
 
8
8
  module ClassMethods
@@ -48,7 +48,7 @@ module Exposure
48
48
  end
49
49
  end
50
50
 
51
- module InstaneMethods
51
+ module InstanceMethods
52
52
  private
53
53
  def custom_response_for(action_name, action_status, format)
54
54
  if responder = self.class::Responses["#{action_name}.#{action_status}.#{format}"]
@@ -24,35 +24,35 @@ module Exposure
24
24
  )
25
25
 
26
26
  DefaultFlashMessages = {
27
- 'create.success.html' => Proc.new { "#{resource_name.capitalize} successfully created" },
28
- 'update.success.html' => Proc.new { "#{resource_name.capitalize} successfully updated" },
29
- 'destroy.success.html' => Proc.new { "#{resource_name.capitalize} successfully removed" }
27
+ 'create.success.html' => proc { "#{resource_name.capitalize} successfully created" },
28
+ 'update.success.html' => proc { "#{resource_name.capitalize} successfully updated" },
29
+ 'destroy.success.html' => proc { "#{resource_name.capitalize} successfully removed" }
30
30
  }
31
31
 
32
32
  DefaultResponses = {
33
- 'index.success.html' => Proc.new { render('index') },
34
- 'show.success.html' => Proc.new { render('show') },
35
- 'new.success.html' => Proc.new { render('new') },
36
- 'create.success.html' => Proc.new { redirect_to({:action => 'index'}) },
37
- 'edit.success.html' => Proc.new { render('edit') },
38
- 'update.success.html' => Proc.new { redirect_to({:action => 'show' }) },
39
- 'destroy.success.html'=> Proc.new { redirect_to({:action => 'index'}) },
40
- 'create.failure.html' => Proc.new { render('new') },
41
- 'update.failure.html' => Proc.new { render('edit') },
42
- 'index.success.xml' => Proc.new { render(:xml => @resources) },
43
- 'show.success.xml' => Proc.new { render(:xml => @resource) },
44
- 'new.success.xml' => Proc.new { render(:xml => @resource) },
45
- 'create.success.xml' => Proc.new { render({:xml => @resource, :status => :created, :location => @resource}) },
46
- 'created.failure.xml'=> Proc.new { render(:xml => @resource.errors, :status => :unprocessable_entity)},
47
- 'update.success.xml' => Proc.new { head(:ok)},
48
- 'update.failure.xml' => Proc.new { render(:xml => @resource.errors, :status => :unprocessable_entity)},
49
- 'destroy.success.xml'=> Proc.new { head(:ok)}
33
+ 'index.success.html' => proc { render('index') },
34
+ 'show.success.html' => proc { render('show') },
35
+ 'new.success.html' => proc { render('new') },
36
+ 'create.success.html' => proc { redirect_to({:action => 'index'}) },
37
+ 'edit.success.html' => proc { render('edit') },
38
+ 'update.success.html' => proc { redirect_to({:action => 'show' }) },
39
+ 'destroy.success.html'=> proc { redirect_to({:action => 'index'}) },
40
+ 'create.failure.html' => proc { render('new') },
41
+ 'update.failure.html' => proc { render('edit') },
42
+ 'index.success.xml' => proc { render(:xml => @resources) },
43
+ 'show.success.xml' => proc { render(:xml => @resource) },
44
+ 'new.success.xml' => proc { render(:xml => @resource) },
45
+ 'create.success.xml' => proc { render({:xml => @resource, :status => :created, :location => @resource}) },
46
+ 'created.failure.xml'=> proc { render(:xml => @resource.errors, :status => :unprocessable_entity)},
47
+ 'update.success.xml' => proc { head(:ok)},
48
+ 'update.failure.xml' => proc { render(:xml => @resource.errors, :status => :unprocessable_entity)},
49
+ 'destroy.success.xml'=> proc { head(:ok)}
50
50
  }
51
51
 
52
52
  module Actions
53
- def index
53
+ def index
54
54
  run_callbacks(:before_find_many)
55
- if find_records
55
+ if find_records
56
56
  run_callbacks(:after_find_many_on_success)
57
57
  run_callbacks(:after_find_many)
58
58
  run_callbacks(:before_response)
@@ -216,7 +216,7 @@ module Exposure
216
216
  @resource = instance_variable_set("@#{resource_name}", call_finder_chain(parent_model, self.class.member_nesting, false))
217
217
  end
218
218
 
219
- def find_records
219
+ def find_records
220
220
  @resources = instance_variable_set("@#{resources_name}", call_finder_chain(parent_model, self.class.collection_nesting, false))
221
221
  end
222
222
 
data/lib/exposure.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  $:.unshift(File.dirname(__FILE__)) unless
2
2
  $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+
3
4
  require 'action_controller'
4
5
  require 'exposure/options'
5
6
  require 'exposure/configuration'
@@ -34,7 +34,7 @@ describe "builders", :type => :controller do
34
34
  end
35
35
 
36
36
  it "builds with a proc" do
37
- PiratesController.build :pirate, :with => Proc.new { Pirate.new(params[:pirate]) }
37
+ PiratesController.build :pirate, :with => proc { Pirate.new(params[:pirate]) }
38
38
  post(:create, {:pirate => {}}).inspect
39
39
 
40
40
  should assign_to(:pirate).with(@pirate)
@@ -1,6 +1,6 @@
1
1
  require File.dirname(__FILE__) + '/../spec_helper'
2
2
 
3
- describe "finders", :type => :controller do
3
+ describe "finders", :type => :controller do
4
4
  setup = lambda {
5
5
  class PiratesController < ActionController::Base
6
6
  expose_many(:pirates)
@@ -8,6 +8,10 @@ describe "finders", :type => :controller do
8
8
  def find_pirate
9
9
  Pirate.find_by_title(params[:id])
10
10
  end
11
+
12
+ def find_pirates
13
+ Pirate.all
14
+ end
11
15
  end
12
16
 
13
17
  ActionController::Routing::Routes.draw do |map|
@@ -26,28 +30,44 @@ describe "finders", :type => :controller do
26
30
  @response = ActionController::TestResponse.new
27
31
 
28
32
  @pirate = Factory.stub(:pirate)
33
+ @pirates = [Factory.stub(:pirate)]
29
34
  Pirate.stub(:find_by_title => @pirate)
35
+ Pirate.stub(:all => @pirates)
30
36
  end
31
37
 
32
38
  after(:each) do
33
39
  Object.remove_class(PiratesController)
34
40
  end
35
41
 
36
- it "finds with a method name as symbol" do
37
- PiratesController.find :pirate, :with => Proc.new { Pirate.find_by_title(params[:id]) }
42
+ it "finds member resource with a method name as symbol" do
43
+ PiratesController.find :pirate, :with => proc { Pirate.find_by_title(params[:id]) }
38
44
  get(:show, {:id => 'Captain'})
39
45
 
40
46
  should assign_to(:pirate).with(@pirate)
41
47
  end
42
48
 
43
- it "finds with a proc" do
49
+ it "finds collection resource with a method name as symbol" do
50
+ PiratesController.find :pirates, :with => proc { [:all] }
51
+ get(:index)
52
+
53
+ should assign_to(:pirates).with(@pirates)
54
+ end
55
+
56
+ it "finds member resource with a proc" do
44
57
  PiratesController.find :pirate, :with => :find_pirate
45
58
  get(:show, {:id => 'Captain'})
46
59
 
47
60
  should assign_to(:pirate).with(@pirate)
48
61
  end
49
62
 
50
- it "finds with a block" do
63
+ it "finds collection resource with a proc" do
64
+ PiratesController.find :pirates, :with => :find_pirates
65
+ get(:index)
66
+
67
+ should assign_to(:pirates).with(@pirates)
68
+ end
69
+
70
+ it "finds member resource with a block" do
51
71
  PiratesController.find :pirate do
52
72
  Pirate.find_by_title(params[:id])
53
73
  end
@@ -56,4 +76,14 @@ describe "finders", :type => :controller do
56
76
 
57
77
  should assign_to(:pirate).with(@pirate)
58
78
  end
79
+
80
+ it "finds collection resource with a block" do
81
+ PiratesController.find :pirates do
82
+ [:all]
83
+ end
84
+
85
+ get(:index)
86
+
87
+ should assign_to(:pirates).with(@pirates)
88
+ end
59
89
  end
@@ -10,7 +10,7 @@ describe "flash messages with procs", :type => :controller do
10
10
  setup.call
11
11
 
12
12
  def setup_flasher(action, success = nil)
13
- PiratesController.flash_for :create, :is => Proc.new { 'the flash was set' }, :on => success
13
+ PiratesController.flash_for :create, :is => proc { 'the flash was set' }, :on => success
14
14
  end
15
15
 
16
16
  ActionController::Routing::Routes.draw do |map|
@@ -14,7 +14,7 @@ describe "responders", :type => :controller do
14
14
  end
15
15
 
16
16
  def setup_responder(action, success = nil)
17
- PiratesController.response_for :create, :is => Proc.new { redirect_to({:action => "test"}) }, :on => success
17
+ PiratesController.response_for :create, :is => proc { redirect_to({:action => "test"}) }, :on => success
18
18
  end
19
19
 
20
20
  controller_name :pirates
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exposure
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Trek Glowacki
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-24 00:00:00 -05:00
12
+ date: 2010-04-05 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies: []
15
15