exposure 0.1.3 → 0.2.0

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