resource_awareness 0.0.3 → 0.0.4
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/lib/rails/resource.rb +24 -6
- data/lib/rails/singleton_resource.rb +0 -1
- data/lib/resource_awareness/action_controller_extensions.rb +2 -6
- data/lib/resource_awareness/application_extensions.rb +0 -2
- data/lib/resource_awareness/mapper_extensions.rb +7 -13
- data/lib/resource_awareness/railtie.rb +5 -5
- data/lib/tasks/resource_awareness.rake +2 -2
- metadata +6 -6
data/lib/rails/resource.rb
CHANGED
@@ -1,17 +1,35 @@
|
|
1
1
|
module Rails
|
2
2
|
class Resource
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
attr_accessor :id, :name, :singular_name, :controller_name, :name_prefix, :path_prefix, :home_route
|
4
|
+
|
6
5
|
def initialize(entity, scope, options)
|
7
6
|
self.name_prefix = scope[:name_prefix]
|
8
7
|
self.name = entity.to_s
|
9
8
|
self.singular_name = name.singularize
|
10
9
|
self.id = [name_prefix, name].compact.join('_')
|
11
|
-
self.
|
12
|
-
self.
|
13
|
-
self.
|
10
|
+
self.home_route = Rails.application.routes.named_routes[id]
|
11
|
+
self.path_prefix = home_route.path.sub("/#{name}(.:format)", '')
|
12
|
+
self.path_prefix = nil if path_prefix.blank?
|
13
|
+
self.controller_name = home_route.requirements[:controller]
|
14
|
+
end
|
15
|
+
|
16
|
+
def path
|
17
|
+
path_prefix ? "#{path_prefix}/#{name}" : "/#{name}"
|
14
18
|
end
|
15
19
|
|
20
|
+
def attributes
|
21
|
+
{
|
22
|
+
:id => id,
|
23
|
+
:name => name,
|
24
|
+
:singular_name => singular_name,
|
25
|
+
:path_prefix => path_prefix,
|
26
|
+
:path => path,
|
27
|
+
:controller_name => controller_name
|
28
|
+
}
|
29
|
+
end
|
30
|
+
|
31
|
+
def to_xml
|
32
|
+
attributes.to_xml
|
33
|
+
end
|
16
34
|
end
|
17
35
|
end
|
@@ -1,11 +1,7 @@
|
|
1
1
|
require 'action_controller/base'
|
2
2
|
|
3
3
|
class ActionController::Base
|
4
|
-
|
5
|
-
|
6
|
-
def resource
|
7
|
-
@resource ||= Rails.application.resources.find { |r| r.controller == self }
|
8
|
-
end
|
9
|
-
|
4
|
+
def resource
|
5
|
+
@resource ||= Rails.application.resources.find { |r| r.controller_name == self.controller_name }
|
10
6
|
end
|
11
7
|
end
|
@@ -4,33 +4,27 @@ require 'rails/singleton_resource'
|
|
4
4
|
|
5
5
|
module ResourceAwareness
|
6
6
|
module MapperExtensions
|
7
|
-
|
8
7
|
def resources(*entities, &block)
|
9
8
|
super
|
10
9
|
options = entities.extract_options!
|
11
|
-
|
12
|
-
Rails.application.resources << Rails::Resource.new(entities.first, @scope, options)
|
10
|
+
Rails.application.resources << Rails::Resource.new(entities.first, @scope, options) if leaf_call?(entities, options)
|
13
11
|
end
|
14
|
-
|
12
|
+
|
15
13
|
def resource(*entities, &block)
|
16
14
|
super
|
17
15
|
options = entities.extract_options!
|
18
|
-
|
19
|
-
Rails.application.resources << Rails::SingletonResource.new(entities.first, @scope, options)
|
16
|
+
Rails.application.resources << Rails::SingletonResource.new(entities.first, @scope, options) if leaf_call?(entities, options)
|
20
17
|
end
|
21
|
-
|
18
|
+
|
22
19
|
private
|
23
|
-
|
20
|
+
|
24
21
|
# the resource(s) methods call themselves recursively in certain conditions
|
25
22
|
# (see the Mapper#apply_common_behavior_for method for details)
|
26
23
|
# this method returns true only if this is a 'leaf call' (a call that doesn't call itself again)
|
24
|
+
# TODO: there should be a better way to determine this
|
27
25
|
def leaf_call?(entities, options)
|
28
|
-
|
29
|
-
return false if entities.length > 1
|
30
|
-
return false if options[:path_names]
|
31
|
-
true
|
26
|
+
!(@scope[:scope_level] == :resources || entities.length > 1 || options[:path_names])
|
32
27
|
end
|
33
|
-
|
34
28
|
end
|
35
29
|
end
|
36
30
|
|
@@ -3,22 +3,22 @@ require 'rails'
|
|
3
3
|
|
4
4
|
module ResourceAwareness
|
5
5
|
class Railtie < Rails::Railtie
|
6
|
-
|
6
|
+
|
7
7
|
initializer 'resource_awareness.extend_application' do
|
8
8
|
require 'resource_awareness/application_extensions'
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
initializer 'resource_awareness.extend_mapper' do
|
12
12
|
require 'resource_awareness/mapper_extensions'
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
initializer 'resource_awareness.extend_action_controller' do
|
16
16
|
require 'resource_awareness/action_controller_extensions'
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
rake_tasks do
|
20
20
|
load 'tasks/resource_awareness.rake'
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
end
|
24
24
|
end
|
@@ -1,4 +1,4 @@
|
|
1
1
|
task :resources => :environment do
|
2
|
-
|
3
|
-
puts Rails.application.resources.collect { |r| "%-#{
|
2
|
+
width_of_widest_route_id = Rails.application.resources.collect(&:id).max.length
|
3
|
+
puts Rails.application.resources.collect { |r| "%-#{width_of_widest_route_id + 20}s%s" % [r.id, r.path] }
|
4
4
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 4
|
9
|
+
version: 0.0.4
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Ingo Weiss
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-04-
|
17
|
+
date: 2010-04-25 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -31,7 +31,7 @@ dependencies:
|
|
31
31
|
type: :runtime
|
32
32
|
version_requirements: *id001
|
33
33
|
description: |
|
34
|
-
Makes a Rails application's resources (as defined via the 'resource(s)' routing DSL methods) available
|
34
|
+
Makes information about a Rails application's resources (as defined via the 'resource(s)' routing DSL methods) available via Rails.application.resources
|
35
35
|
|
36
36
|
email: ingo@ingoweiss.com
|
37
37
|
executables: []
|
@@ -74,10 +74,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
74
74
|
version: "0"
|
75
75
|
requirements: []
|
76
76
|
|
77
|
-
rubyforge_project:
|
77
|
+
rubyforge_project:
|
78
78
|
rubygems_version: 1.3.6
|
79
79
|
signing_key:
|
80
80
|
specification_version: 3
|
81
|
-
summary:
|
81
|
+
summary: Makes Rails applications aware of their resources
|
82
82
|
test_files: []
|
83
83
|
|