hammock 0.3.10.4 → 0.3.11

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,11 @@
1
+ == 0.3.11 2009-08-19
2
+ Removed some old debug logging.
3
+ Added String#quote_for_shell.
4
+ Added &=' to the name-part of the String#valid_email? regex.
5
+ Added after[_failed]_find_on_create callback definitions, and calls within #find_record_on_create.
6
+ Renamed Account to User in log message.
7
+
8
+
1
9
  == 0.3.10.4 2009-07-29
2
10
  Temporary fix: re-fetch records in find_record_on_create to avoid readonly errors.
3
11
 
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.3.10.4"
5
+ s.version = "0.3.11"
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-07-29}
9
+ s.date = %q{2009-08-19}
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.
11
11
 
12
12
 
@@ -24,7 +24,7 @@ It makes more sense when you see how it works though. There's a screencast comin
24
24
  s.rdoc_options = ["--main", "README.rdoc"]
25
25
  s.require_paths = ["lib"]
26
26
  s.rubyforge_project = %q{hammock}
27
- s.rubygems_version = %q{1.3.4}
27
+ s.rubygems_version = %q{1.3.5}
28
28
  s.summary = %q{Hammock is a Rails plugin that eliminates redundant code in a very RESTful manner}
29
29
 
30
30
  if s.respond_to? :specification_version then
@@ -9,18 +9,20 @@ module Hammock
9
9
  include ActiveSupport::Callbacks
10
10
 
11
11
  define_hammock_callbacks *%w[
12
- before_find during_find after_failed_find
12
+ before_find during_find after_failed_find
13
+ after_find_on_create
14
+ after_failed_find_on_create
13
15
 
14
- before_index before_show
15
- before_modify before_new before_edit
16
+ before_index before_show
17
+ before_modify before_new before_edit
16
18
 
17
- before_save after_save after_failed_save
18
- before_create after_create after_failed_create
19
- before_update after_update after_failed_update
20
- before_destroy after_destroy
21
- before_undestroy after_undestroy
19
+ before_save after_save after_failed_save
20
+ before_create after_create after_failed_create
21
+ before_update after_update after_failed_update
22
+ before_destroy after_destroy
23
+ before_undestroy after_undestroy
22
24
 
23
- before_suggest after_suggest
25
+ before_suggest after_suggest
24
26
  ]
25
27
  }
26
28
  end
@@ -18,7 +18,7 @@ module Hammock
18
18
  request.remote_ip.colorize('green'),
19
19
  (@current_site.subdomain unless @current_site.nil?),
20
20
  (request.session_options[:id].nil? ? 'nil' : ('...' + request.session_options[:id][-8, 8])),
21
- (current_user.nil? ? "unauthed" : "Account<#{current_user.id}> #{current_user.name}").colorize('green'),
21
+ (current_user.nil? ? "unauthed" : "User<#{current_user.id}> #{current_user.name}").colorize('green'),
22
22
  response.status,
23
23
  log_hit_request_info,
24
24
  log_hit_route_info
@@ -60,6 +60,10 @@ module Hammock
60
60
  "#{self}'#{'s' unless ends_with?('s')}"
61
61
  end
62
62
 
63
+ def quote_for_shell
64
+ %Q{"#{gsub('"', '\"')}"}
65
+ end
66
+
63
67
  # TODO any more to add?
64
68
  NamePrefixes = %w[de den la von].freeze
65
69
 
@@ -133,7 +137,7 @@ module Hammock
133
137
 
134
138
  # Returns true if the string represents a valid email address.
135
139
  def valid_email?
136
- /^([a-z0-9\-\+\_\.]{2,})\@([a-z0-9\-]+\.)*([a-z0-9\-]{2,}\.)([a-z0-9\-]{2,})$/ =~ self
140
+ /^([a-z0-9\-\+\=\&\'\_\.]{2,})\@([a-z0-9\-]+\.)*([a-z0-9\-]{2,}\.)([a-z0-9\-]{2,})$/ =~ self
137
141
  end
138
142
 
139
143
  def clean_email!
@@ -131,8 +131,11 @@ module Hammock
131
131
  if findable_on_create?
132
132
  if record = mdl.ambition_context.within(current_nest_scope).find(:first, :conditions => params_for(mdl.symbolize))
133
133
  log "Suitable #{record.class}<#{record.id}> already exists."
134
- assign_entity mdl.resource.find record.id
134
+ returning assign_entity mdl.resource.find record.id do
135
+ callback :after_find_on_create
136
+ end
135
137
  else
138
+ callback :after_failed_find_on_create
136
139
  log "Couldn't find a suitable #{mdl}, proceeding with creation."
137
140
  end
138
141
  end
@@ -92,9 +92,7 @@ module Hammock
92
92
 
93
93
  def nesting_scope_segment_for params
94
94
  raise "The root of the route map isn't associated with a resource." if root?
95
- puts "is this undefined? #{resource.accessible_attributes_on_create.inspect}"
96
95
  value = params.delete resource.param_key
97
- puts "resource.select {|r| r.#{resource.routing_attribute} == value }"
98
96
  eval "resource.select {|r| r.#{resource.routing_attribute} == value }"
99
97
  end
100
98
 
@@ -103,7 +101,6 @@ module Hammock
103
101
  end
104
102
 
105
103
  def add entity, options, path_steps = nil
106
- # puts "add(#{entity.inspect}, #{options.inspect}, #{path_steps.inspect})"
107
104
  if path_steps.nil?
108
105
  path_steps = (options[:path_prefix] || '').split('/').squash.discard {|i| i.starts_with? ':' }.map(&:to_sym)
109
106
  add entity, options, path_steps
@@ -134,19 +131,14 @@ module Hammock
134
131
  end
135
132
 
136
133
  def determine_routing_parent
137
- # puts "\ndetermine_routing_parent: #{mdl}:"
138
134
  if parent.nil? || parent.resource.nil?
139
135
  # puts "Resource for #{mdl} has either no parent or no resource - not nestable."
140
136
  nil
141
137
  else
142
- # puts "reflections: #{resource.reflections.keys.inspect}"
143
138
  scannable_reflections = resource.nestable_reflections
144
- # puts "scannable reflections: #{scannable_reflections.keys.inspect}"
145
139
  valid_reflections = scannable_reflections.selekt {|k,v|
146
- # puts "#{v.klass}<#{v.object_id}> == #{parent.resource}<#{parent.resource.object_id}> #=> #{v.klass == parent.resource}"
147
140
  v.klass == parent.resource
148
141
  }
149
- # puts "valid reflections: #{valid_reflections.keys.inspect}"
150
142
 
151
143
  if valid_reflections.keys.length < 1
152
144
  raise "The routing table specifies that #{mdl} is nested within #{parent.mdl}, but there is no ActiveRecord association linking #{resource} to #{parent.resource}. Example: 'belongs_to :#{parent.resource.base_model}' in the #{resource} model."
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.3.10.4'
7
+ VERSION = '0.3.11'
8
8
  IncludeTarget = ActionController::Base
9
9
 
10
10
  def self.included base # :nodoc:
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.3.10.4
4
+ version: 0.3.11
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-07-29 00:00:00 +10:00
12
+ date: 2009-08-19 00:00:00 +10:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -139,7 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
139
  requirements: []
140
140
 
141
141
  rubyforge_project: hammock
142
- rubygems_version: 1.3.4
142
+ rubygems_version: 1.3.5
143
143
  signing_key:
144
144
  specification_version: 3
145
145
  summary: Hammock is a Rails plugin that eliminates redundant code in a very RESTful manner