requested 0.1.1
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/Manifest +7 -0
- data/README.textile +124 -0
- data/Rakefile +15 -0
- data/init.rb +2 -0
- data/lib/requested.rb +75 -0
- data/lib/requested/action.rb +69 -0
- data/requested.gemspec +30 -0
- metadata +81 -0
data/Manifest
ADDED
data/README.textile
ADDED
@@ -0,0 +1,124 @@
|
|
1
|
+
h1. Requested
|
2
|
+
|
3
|
+
ActionController::Request improvements with several methods to get info on requested actions and resources.
|
4
|
+
|
5
|
+
h2. Use It
|
6
|
+
|
7
|
+
h3. In your controller
|
8
|
+
|
9
|
+
<pre>
|
10
|
+
if request.action.collection?
|
11
|
+
@collection = request.resource.all
|
12
|
+
|
13
|
+
elsif request.action.single_object?
|
14
|
+
@object = request.resource.find params[:id]
|
15
|
+
|
16
|
+
end
|
17
|
+
</pre>
|
18
|
+
|
19
|
+
h3. In your views
|
20
|
+
|
21
|
+
<pre>
|
22
|
+
<% if request.action.new_or_create? %>
|
23
|
+
<%= f.input :image, :required => true %>
|
24
|
+
<% else %>
|
25
|
+
<%= f.input :image, :required => true, :hint => button('crop', crop_image_path(@object)) %>
|
26
|
+
<% end %>
|
27
|
+
</pre>
|
28
|
+
|
29
|
+
h2. Installation
|
30
|
+
|
31
|
+
h3. As a gem:
|
32
|
+
|
33
|
+
Add this line to your @environment.rb@:
|
34
|
+
|
35
|
+
<pre>
|
36
|
+
config.gem "requested", :source => 'http://gems.github.com'
|
37
|
+
</pre>
|
38
|
+
|
39
|
+
and then do
|
40
|
+
|
41
|
+
<pre>
|
42
|
+
rake gems:install
|
43
|
+
</pre>
|
44
|
+
|
45
|
+
or just
|
46
|
+
|
47
|
+
<pre>
|
48
|
+
gem install requested --source='http://gems.github.com'
|
49
|
+
</pre>
|
50
|
+
|
51
|
+
|
52
|
+
h3. As a plugin
|
53
|
+
|
54
|
+
<pre>
|
55
|
+
script/plugin install git://github.com/mcasimir/requested.git
|
56
|
+
</pre>
|
57
|
+
|
58
|
+
|
59
|
+
h2. Usage
|
60
|
+
|
61
|
+
h3. Test if user agent is a robot
|
62
|
+
|
63
|
+
<pre>
|
64
|
+
request.is_robot?
|
65
|
+
</pre>
|
66
|
+
|
67
|
+
h3. Controller and Action names
|
68
|
+
|
69
|
+
<pre>
|
70
|
+
request.controller
|
71
|
+
request.action
|
72
|
+
</pre>
|
73
|
+
|
74
|
+
|
75
|
+
h3. Action details
|
76
|
+
|
77
|
+
<pre>
|
78
|
+
# Test if action is one of index, new, create, edit, update, destroy, show:
|
79
|
+
request.action.rest?
|
80
|
+
|
81
|
+
# Test single restful actions
|
82
|
+
request.action.index?
|
83
|
+
request.action.new?
|
84
|
+
request.action.create?
|
85
|
+
request.action.edit?
|
86
|
+
request.action.update?
|
87
|
+
request.action.destroy?
|
88
|
+
|
89
|
+
# Test if action is for a collection (index) or for a single resource:
|
90
|
+
request.collection?
|
91
|
+
request.single_object?
|
92
|
+
|
93
|
+
# Creating resources
|
94
|
+
request.new_or_create?
|
95
|
+
|
96
|
+
# Updating resources
|
97
|
+
request.edit_or_update?
|
98
|
+
</pre>
|
99
|
+
|
100
|
+
h3. Resource
|
101
|
+
|
102
|
+
<pre>
|
103
|
+
# Retrieve the resource model class belonging to current controller
|
104
|
+
# eg. ArticlesController --> Article
|
105
|
+
|
106
|
+
request.resource
|
107
|
+
|
108
|
+
|
109
|
+
# Retrieve the name of the resource belonging to current controller
|
110
|
+
# eg. ArticlesController --> "article"
|
111
|
+
|
112
|
+
request.resource_name
|
113
|
+
|
114
|
+
|
115
|
+
# Retrieve the collection name of the resource belonging to current controller
|
116
|
+
# eg. ArticlesController --> "articles"
|
117
|
+
|
118
|
+
request.collection_name
|
119
|
+
</pre>
|
120
|
+
|
121
|
+
h2. Project Details
|
122
|
+
|
123
|
+
Copyright © 2010 Maurizio Casimirri, released under the LGPL license.
|
124
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'echoe'
|
4
|
+
|
5
|
+
Echoe.new('requested', '0.1.1') do |p|
|
6
|
+
p.description = "ActionController::Request improvements with several methods to get info on requested actions"
|
7
|
+
p.url = "http://github.com/mcasimir/requested"
|
8
|
+
p.author = "Maurizio Casimirri"
|
9
|
+
p.email = "maurizio.cas@gmail.com"
|
10
|
+
p.ignore_pattern = ["tmp/*", "script/*"]
|
11
|
+
p.development_dependencies = []
|
12
|
+
end
|
13
|
+
|
14
|
+
Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
|
15
|
+
|
data/init.rb
ADDED
data/lib/requested.rb
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
# Author:: Maurizio Casimirri (mailto:maurizio.cas@gmail.com)
|
2
|
+
# Copyright:: Copyright (c) 2010 Maurizio Casimirri
|
3
|
+
|
4
|
+
# This library is free software; you can redistribute it and/or
|
5
|
+
# modify it under the terms of the GNU Lesser General Public
|
6
|
+
# License as published by the Free Software Foundation; either
|
7
|
+
# version 2.1 of the License, or (at your option) any later version.
|
8
|
+
|
9
|
+
# This library is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12
|
+
# Lesser General Public License for more details.
|
13
|
+
|
14
|
+
# You should have received a copy of the GNU Lesser General Public
|
15
|
+
# License along with this library; if not, write to the Free Software
|
16
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
17
|
+
|
18
|
+
module Requested
|
19
|
+
|
20
|
+
def self.included(base)
|
21
|
+
base.extend ClassMethods
|
22
|
+
base.send :include, InstanceMethods
|
23
|
+
end
|
24
|
+
|
25
|
+
module InstanceMethods
|
26
|
+
|
27
|
+
def is_robot?()
|
28
|
+
self.user_agent =~ /\b(Baidu|Gigabot|Googlebot|libwww-perl|lwp-trivial|msnbot|SiteUptime|Slurp|WordPress|ZIBB|ZyBorg)\b/i
|
29
|
+
end
|
30
|
+
|
31
|
+
def robot?()
|
32
|
+
self.is_robot?
|
33
|
+
end
|
34
|
+
|
35
|
+
def action()
|
36
|
+
@requested_action ||= Requested::Action.new(path_parameters['action'])
|
37
|
+
end
|
38
|
+
|
39
|
+
def controller()
|
40
|
+
path_parameters['controller']
|
41
|
+
end
|
42
|
+
|
43
|
+
def query_params()
|
44
|
+
@query_params ||= request_parameters.dup.delete_if {|k,v| [:action, :controller, :url, :source, :authenticity_token].include?(k.to_sym)}
|
45
|
+
end
|
46
|
+
|
47
|
+
def resource
|
48
|
+
@resource ||= controller.gsub(/Controller$/, "").singularize.camelize.constantize rescue nil
|
49
|
+
end
|
50
|
+
|
51
|
+
def resource_name
|
52
|
+
@resource_name ||= self.resource.name.tableize.singularize rescue ""
|
53
|
+
end
|
54
|
+
|
55
|
+
def collection_name
|
56
|
+
@collection_name ||= self.resource_name.pluralize
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
module ClassMethods
|
62
|
+
|
63
|
+
def self.build_query_string(params)
|
64
|
+
params.map{|k,v| "#{k}=#{v}"}.join("&")
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
|
72
|
+
class ActionController::Request
|
73
|
+
include Requested
|
74
|
+
end
|
75
|
+
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# Author:: Maurizio Casimirri (mailto:maurizio.cas@gmail.com)
|
2
|
+
# Copyright:: Copyright (c) 2010 Maurizio Casimirri
|
3
|
+
|
4
|
+
# This library is free software; you can redistribute it and/or
|
5
|
+
# modify it under the terms of the GNU Lesser General Public
|
6
|
+
# License as published by the Free Software Foundation; either
|
7
|
+
# version 2.1 of the License, or (at your option) any later version.
|
8
|
+
|
9
|
+
# This library is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12
|
+
# Lesser General Public License for more details.
|
13
|
+
|
14
|
+
# You should have received a copy of the GNU Lesser General Public
|
15
|
+
# License along with this library; if not, write to the Free Software
|
16
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
17
|
+
|
18
|
+
module Requested
|
19
|
+
class Action < String
|
20
|
+
def rest?
|
21
|
+
%w(index new create edit update destroy show).include? self
|
22
|
+
end
|
23
|
+
|
24
|
+
def index?
|
25
|
+
self == "index"
|
26
|
+
end
|
27
|
+
|
28
|
+
def new?
|
29
|
+
self == "new"
|
30
|
+
end
|
31
|
+
|
32
|
+
def edit?
|
33
|
+
self == "edit"
|
34
|
+
end
|
35
|
+
|
36
|
+
def show?
|
37
|
+
self == "show"
|
38
|
+
end
|
39
|
+
|
40
|
+
def create?
|
41
|
+
self == "create"
|
42
|
+
end
|
43
|
+
|
44
|
+
def update?
|
45
|
+
self == "update"
|
46
|
+
end
|
47
|
+
|
48
|
+
def destroy?
|
49
|
+
self == "destroy"
|
50
|
+
end
|
51
|
+
|
52
|
+
def single_object?
|
53
|
+
self.rest? && !self.index
|
54
|
+
end
|
55
|
+
|
56
|
+
def collection?
|
57
|
+
self.index?
|
58
|
+
end
|
59
|
+
|
60
|
+
def new_or_create?
|
61
|
+
%w(new create).include? self
|
62
|
+
end
|
63
|
+
|
64
|
+
def edit_or_update?
|
65
|
+
%w(edit update).include? self
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
data/requested.gemspec
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{requested}
|
5
|
+
s.version = "0.1.1"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Maurizio Casimirri"]
|
9
|
+
s.date = %q{2010-07-17}
|
10
|
+
s.description = %q{ActionController::Request improvements with several methods to get info on requested actions}
|
11
|
+
s.email = %q{maurizio.cas@gmail.com}
|
12
|
+
s.extra_rdoc_files = ["README.textile", "lib/requested.rb", "lib/requested/action.rb"]
|
13
|
+
s.files = ["README.textile", "Rakefile", "init.rb", "lib/requested.rb", "lib/requested/action.rb", "requested.gemspec", "Manifest"]
|
14
|
+
s.homepage = %q{http://github.com/mcasimir/requested}
|
15
|
+
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Requested", "--main", "README.textile"]
|
16
|
+
s.require_paths = ["lib"]
|
17
|
+
s.rubyforge_project = %q{requested}
|
18
|
+
s.rubygems_version = %q{1.3.7}
|
19
|
+
s.summary = %q{ActionController::Request improvements with several methods to get info on requested actions}
|
20
|
+
|
21
|
+
if s.respond_to? :specification_version then
|
22
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
23
|
+
s.specification_version = 3
|
24
|
+
|
25
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
26
|
+
else
|
27
|
+
end
|
28
|
+
else
|
29
|
+
end
|
30
|
+
end
|
metadata
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: requested
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 25
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Maurizio Casimirri
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2010-07-17 00:00:00 +02:00
|
19
|
+
default_executable:
|
20
|
+
dependencies: []
|
21
|
+
|
22
|
+
description: ActionController::Request improvements with several methods to get info on requested actions
|
23
|
+
email: maurizio.cas@gmail.com
|
24
|
+
executables: []
|
25
|
+
|
26
|
+
extensions: []
|
27
|
+
|
28
|
+
extra_rdoc_files:
|
29
|
+
- README.textile
|
30
|
+
- lib/requested.rb
|
31
|
+
- lib/requested/action.rb
|
32
|
+
files:
|
33
|
+
- README.textile
|
34
|
+
- Rakefile
|
35
|
+
- init.rb
|
36
|
+
- lib/requested.rb
|
37
|
+
- lib/requested/action.rb
|
38
|
+
- requested.gemspec
|
39
|
+
- Manifest
|
40
|
+
has_rdoc: true
|
41
|
+
homepage: http://github.com/mcasimir/requested
|
42
|
+
licenses: []
|
43
|
+
|
44
|
+
post_install_message:
|
45
|
+
rdoc_options:
|
46
|
+
- --line-numbers
|
47
|
+
- --inline-source
|
48
|
+
- --title
|
49
|
+
- Requested
|
50
|
+
- --main
|
51
|
+
- README.textile
|
52
|
+
require_paths:
|
53
|
+
- lib
|
54
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
hash: 3
|
60
|
+
segments:
|
61
|
+
- 0
|
62
|
+
version: "0"
|
63
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
64
|
+
none: false
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
hash: 11
|
69
|
+
segments:
|
70
|
+
- 1
|
71
|
+
- 2
|
72
|
+
version: "1.2"
|
73
|
+
requirements: []
|
74
|
+
|
75
|
+
rubyforge_project: requested
|
76
|
+
rubygems_version: 1.3.7
|
77
|
+
signing_key:
|
78
|
+
specification_version: 3
|
79
|
+
summary: ActionController::Request improvements with several methods to get info on requested actions
|
80
|
+
test_files: []
|
81
|
+
|