hammock 0.2.14 → 0.2.15

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,10 @@
1
+ == 0.2.15 2009-04-15
2
+ Switched from #in? to #include? for non-literal args, since it splats into a nested array and breaks.
3
+ Moved implied verbs from RouteStep#implied_verb? to a constant.
4
+ partitioned_scope now uses an empty_scope when the resource doesn't match.
5
+ Added String#/ to wrap File.join beautifully (thanks merb).
6
+
7
+
1
8
  == 0.2.14 2009-04-08
2
9
  On escort(:unauthed), redirect to login for public GETs when an authed scope exists.
3
10
 
data/hammock.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{hammock}
5
- s.version = "0.2.14"
5
+ s.version = "0.2.15"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Ben Hoskings"]
9
- s.date = %q{2009-04-08}
9
+ s.date = %q{2009-04-15}
10
10
  s.description = %q{Hammock is a Rails plugin that eliminates redundant code in a very RESTful manner. It does this in lots in lots of different places, but in one manner: it encourages specification in place of implementation. Hammock enforces RESTful resource access by abstracting actions away from the controller in favour of a clean, model-like callback system. Hammock tackles the hard and soft sides of security at once with a scoping security system on your models. Specify who can verb what resources under what conditions once, and everything else - the actual security, link generation, index filtering - just happens. Hammock inspects your routes and resources to generate a routing tree for each resource. Parent resources in a nested route are handled transparently at every point - record retrieval, creation, and linking. It makes more sense when you see how it works though, so check out the screencast!}
11
11
  s.email = ["ben@hoskings.net"]
12
12
  s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.rdoc", "misc/scaffold.txt"]
@@ -105,7 +105,11 @@ module Hammock
105
105
  end
106
106
 
107
107
  def partitioned_scope account
108
- lambda {|record| record.id == account.id }
108
+ if account.is_a? self
109
+ lambda {|record| record.id == account.id }
110
+ else
111
+ empty_scope
112
+ end
109
113
  end
110
114
 
111
115
  def empty_scope
@@ -3,6 +3,7 @@ module Hammock
3
3
 
4
4
  module Constants
5
5
 
6
+ ImpliedVerbs = [:index, :create, :show, :update, :destroy]
6
7
  ImpliedUnsafeActions = [:new, :edit, :destroy]
7
8
 
8
9
  end
@@ -47,6 +47,15 @@ module Hammock
47
47
  ends_with?(str) ? self : self + str
48
48
  end
49
49
 
50
+ # Return +self+ joined to other using File#join. This allows paths to be constructed
51
+ # with a nice syntax; for example, the following two expressions are equivalent.
52
+ #
53
+ # File.join RAILS_ROOT, 'views', controller_name, 'index.html.haml'
54
+ # RAILS_ROOT / 'views' / controller_name / 'index.html.haml'
55
+ def / other
56
+ File.join self, other
57
+ end
58
+
50
59
  def possessive
51
60
  "#{self}'#{'s' unless ends_with?('s')}"
52
61
  end
@@ -137,7 +137,7 @@ module Hammock
137
137
  end
138
138
 
139
139
  def safe_verb_and_implication?
140
- request.get? && !action_name.to_s.in?(Hammock::Constants::ImpliedUnsafeActions)
140
+ request.get? && !Hammock::Constants::ImpliedUnsafeActions.include?(action_name.to_sym)
141
141
  end
142
142
 
143
143
  def set_editing
@@ -60,13 +60,13 @@ module Hammock
60
60
  def delete?; :delete == http_method end
61
61
 
62
62
  def safe?
63
- get? && !verb.in?(Hammock::Constants::ImpliedUnsafeActions)
63
+ get? && !Hammock::Constants::ImpliedUnsafeActions.include?(verb)
64
64
  end
65
65
 
66
66
  private
67
67
 
68
68
  def implied_verb? verb
69
- verb.in? :index, :create, :show, :update, :destroy
69
+ Hammock::Constants::ImpliedVerbs.include? verb
70
70
  end
71
71
 
72
72
  def raise_unless_setup_while_trying_to task
data/lib/hammock/scope.rb CHANGED
@@ -84,7 +84,7 @@ module Hammock
84
84
  end
85
85
 
86
86
  def current_scope
87
- dlog "#{current_hammock_resource.mdl}, #{current_hammock_resource.ancestry.map(&:mdl).inspect}"
87
+ # dlog "#{current_hammock_resource.mdl}, #{current_hammock_resource.ancestry.map(&:mdl).inspect}"
88
88
  if (verb_scope = current_verb_scope).nil?
89
89
  nil
90
90
  elsif (resultant_scope = verb_scope.within(current_nest_scope, current_hammock_resource.routing_parent)).nil?
@@ -92,7 +92,7 @@ module Hammock
92
92
  else
93
93
  # dlog "nest: #{current_nest_scope.clauses.inspect}"
94
94
  # dlog "verb: #{current_verb_scope.clauses.inspect}"
95
- dlog "chained in (#{resultant_scope.owner}) current_scope: #{resultant_scope.clauses.inspect}"
95
+ # dlog "chained in (#{resultant_scope.owner}) current_scope: #{resultant_scope.clauses.inspect}"
96
96
  resultant_scope = resultant_scope.chain(custom_scope) unless custom_scope.nil?
97
97
  resultant_scope.sort_by &mdl.sorter
98
98
  end
data/lib/hammock.rb CHANGED
@@ -4,7 +4,7 @@ require 'ambition'
4
4
  require 'ambition/adapters/active_record'
5
5
 
6
6
  module Hammock
7
- VERSION = '0.2.14'
7
+ VERSION = '0.2.15'
8
8
 
9
9
  def self.included base # :nodoc:
10
10
  puts "Loading Hammock from #{loaded_from_gem? ? 'gem' : 'plugin'}"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hammock
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.14
4
+ version: 0.2.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Hoskings
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-04-08 00:00:00 +10:00
12
+ date: 2009-04-15 00:00:00 +10:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency