resource_awareness 0.0.3
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 +17 -0
- data/lib/rails/singleton_resource.rb +5 -0
- data/lib/resource_awareness.rb +3 -0
- data/lib/resource_awareness/action_controller_extensions.rb +11 -0
- data/lib/resource_awareness/application_extensions.rb +13 -0
- data/lib/resource_awareness/mapper_extensions.rb +37 -0
- data/lib/resource_awareness/railtie.rb +24 -0
- data/lib/tasks/resource_awareness.rake +4 -0
- metadata +83 -0
@@ -0,0 +1,17 @@
|
|
1
|
+
module Rails
|
2
|
+
class Resource
|
3
|
+
|
4
|
+
attr_accessor :name, :singular_name, :id, :route, :controller_name, :controller, :name_prefix
|
5
|
+
|
6
|
+
def initialize(entity, scope, options)
|
7
|
+
self.name_prefix = scope[:name_prefix]
|
8
|
+
self.name = entity.to_s
|
9
|
+
self.singular_name = name.singularize
|
10
|
+
self.id = [name_prefix, name].compact.join('_')
|
11
|
+
self.route = Rails.application.routes.named_routes[id]
|
12
|
+
self.controller_name = route.defaults[:controller]
|
13
|
+
self.controller = (controller_name + '_controller').camelize.constantize
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'action_dispatch/routing/mapper'
|
2
|
+
require 'rails/resource'
|
3
|
+
require 'rails/singleton_resource'
|
4
|
+
|
5
|
+
module ResourceAwareness
|
6
|
+
module MapperExtensions
|
7
|
+
|
8
|
+
def resources(*entities, &block)
|
9
|
+
super
|
10
|
+
options = entities.extract_options!
|
11
|
+
return unless leaf_call?(entities, options)
|
12
|
+
Rails.application.resources << Rails::Resource.new(entities.first, @scope, options)
|
13
|
+
end
|
14
|
+
|
15
|
+
def resource(*entities, &block)
|
16
|
+
super
|
17
|
+
options = entities.extract_options!
|
18
|
+
return unless leaf_call?(entities, options)
|
19
|
+
Rails.application.resources << Rails::SingletonResource.new(entities.first, @scope, options)
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
# the resource(s) methods call themselves recursively in certain conditions
|
25
|
+
# (see the Mapper#apply_common_behavior_for method for details)
|
26
|
+
# this method returns true only if this is a 'leaf call' (a call that doesn't call itself again)
|
27
|
+
def leaf_call?(entities, options)
|
28
|
+
return false if @scope[:scope_level] == :resources
|
29
|
+
return false if entities.length > 1
|
30
|
+
return false if options[:path_names]
|
31
|
+
true
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
ActionDispatch::Routing::Mapper.send(:include, ResourceAwareness::MapperExtensions)
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'resource_awareness'
|
2
|
+
require 'rails'
|
3
|
+
|
4
|
+
module ResourceAwareness
|
5
|
+
class Railtie < Rails::Railtie
|
6
|
+
|
7
|
+
initializer 'resource_awareness.extend_application' do
|
8
|
+
require 'resource_awareness/application_extensions'
|
9
|
+
end
|
10
|
+
|
11
|
+
initializer 'resource_awareness.extend_mapper' do
|
12
|
+
require 'resource_awareness/mapper_extensions'
|
13
|
+
end
|
14
|
+
|
15
|
+
initializer 'resource_awareness.extend_action_controller' do
|
16
|
+
require 'resource_awareness/action_controller_extensions'
|
17
|
+
end
|
18
|
+
|
19
|
+
rake_tasks do
|
20
|
+
load 'tasks/resource_awareness.rake'
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
metadata
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: resource_awareness
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 3
|
9
|
+
version: 0.0.3
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Ingo Weiss
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-04-21 00:00:00 +02:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: rails
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ~>
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 3
|
29
|
+
- 0
|
30
|
+
version: "3.0"
|
31
|
+
type: :runtime
|
32
|
+
version_requirements: *id001
|
33
|
+
description: |
|
34
|
+
Makes a Rails application's resources (as defined via the 'resource(s)' routing DSL methods) available as Rails.application.resources
|
35
|
+
|
36
|
+
email: ingo@ingoweiss.com
|
37
|
+
executables: []
|
38
|
+
|
39
|
+
extensions: []
|
40
|
+
|
41
|
+
extra_rdoc_files: []
|
42
|
+
|
43
|
+
files:
|
44
|
+
- lib/rails/resource.rb
|
45
|
+
- lib/rails/singleton_resource.rb
|
46
|
+
- lib/resource_awareness/action_controller_extensions.rb
|
47
|
+
- lib/resource_awareness/application_extensions.rb
|
48
|
+
- lib/resource_awareness/mapper_extensions.rb
|
49
|
+
- lib/resource_awareness/railtie.rb
|
50
|
+
- lib/resource_awareness.rb
|
51
|
+
- lib/tasks/resource_awareness.rake
|
52
|
+
has_rdoc: true
|
53
|
+
homepage: http://www.ingoweiss.com
|
54
|
+
licenses: []
|
55
|
+
|
56
|
+
post_install_message:
|
57
|
+
rdoc_options: []
|
58
|
+
|
59
|
+
require_paths:
|
60
|
+
- lib
|
61
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
segments:
|
66
|
+
- 0
|
67
|
+
version: "0"
|
68
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
segments:
|
73
|
+
- 0
|
74
|
+
version: "0"
|
75
|
+
requirements: []
|
76
|
+
|
77
|
+
rubyforge_project: "[none]"
|
78
|
+
rubygems_version: 1.3.6
|
79
|
+
signing_key:
|
80
|
+
specification_version: 3
|
81
|
+
summary: Make Rails aware of it's resources
|
82
|
+
test_files: []
|
83
|
+
|