inherited_resources 1.5.0 → 1.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e6392aaded1e0d085dc72577ecbc0793327b6a00
4
- data.tar.gz: d4891c303bae5e1255a5a74b580a1cfb0162f5d9
3
+ metadata.gz: 121b6dce978ba43045adaee54c37906c299ced3a
4
+ data.tar.gz: 1b1549e0cc0feae4551f0455434c2df483c11598
5
5
  SHA512:
6
- metadata.gz: 034f81e33b0c640c9f4ca86499b7a9869fced0a34d278ce89b73e146c96ed2a0dece341bbe398de25b68c54add3142395f71224c15ecc01dd039cf435726669d
7
- data.tar.gz: 606ca852e3a8b8a548e1edb65500dd7491dd692498298aaf12b555b036778334f442d98cbf04b030641abc7f033fe7d2f99105e3822c92c55b83aacb1b1b2a50
6
+ metadata.gz: 747c499e0d0f62c0a42ac5915782159678471318a232ce00251315edddd86f900edbb0aeef47c93ad8883983df2fafc426680a1b1812fa87bc4d987a385ade7a
7
+ data.tar.gz: b687a4fd01330c6246fc57748c8d522e46e2e892a185d8aac18b9c6c148432864a49947f6587724a0f7191739e52764abe95487cffb07a382252a19fb7ee57c0
data/CHANGELOG CHANGED
@@ -1,4 +1,10 @@
1
- # 1.5.0
1
+ # Version 1.5.1
2
+
3
+ * Lock the Rails version until only 4.2.
4
+ * Fix parent class lookup.
5
+ * Fix resource_class default value definition.
6
+
7
+ # Version 1.5.0
2
8
 
3
9
  * Supports nested modules (namespaced models and controllers).
4
10
  * Supports Rails 4 Strong Parameters notation.
data/Gemfile CHANGED
@@ -2,9 +2,8 @@ source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
- gem 'rails', '>= 3.2', '< 5'
6
5
  gem 'mocha'
7
- gem 'turn'
6
+ gem 'minitest-rg'
8
7
 
9
8
  group :test do
10
9
  gem 'strong_parameters'
data/Gemfile.lock CHANGED
@@ -1,106 +1,71 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- inherited_resources (1.5.0)
4
+ inherited_resources (1.5.1)
5
+ actionpack (>= 3.2, < 4.2)
5
6
  has_scope (~> 0.6.0.rc)
7
+ railties (>= 3.2, < 4.2)
6
8
  responders (~> 1.0)
7
9
 
8
10
  GEM
9
11
  remote: https://rubygems.org/
10
12
  specs:
11
- actionmailer (4.0.0)
12
- actionpack (= 4.0.0)
13
- mail (~> 2.5.3)
14
- actionpack (4.0.0)
15
- activesupport (= 4.0.0)
16
- builder (~> 3.1.0)
17
- erubis (~> 2.7.0)
13
+ actionpack (4.1.5)
14
+ actionview (= 4.1.5)
15
+ activesupport (= 4.1.5)
18
16
  rack (~> 1.5.2)
19
17
  rack-test (~> 0.6.2)
20
- activemodel (4.0.0)
21
- activesupport (= 4.0.0)
22
- builder (~> 3.1.0)
23
- activerecord (4.0.0)
24
- activemodel (= 4.0.0)
25
- activerecord-deprecated_finders (~> 1.0.2)
26
- activesupport (= 4.0.0)
27
- arel (~> 4.0.0)
28
- activerecord-deprecated_finders (1.0.3)
29
- activesupport (4.0.0)
30
- i18n (~> 0.6, >= 0.6.4)
31
- minitest (~> 4.2)
32
- multi_json (~> 1.3)
18
+ actionview (4.1.5)
19
+ activesupport (= 4.1.5)
20
+ builder (~> 3.1)
21
+ erubis (~> 2.7.0)
22
+ activemodel (4.1.5)
23
+ activesupport (= 4.1.5)
24
+ builder (~> 3.1)
25
+ activesupport (4.1.5)
26
+ i18n (~> 0.6, >= 0.6.9)
27
+ json (~> 1.7, >= 1.7.7)
28
+ minitest (~> 5.1)
33
29
  thread_safe (~> 0.1)
34
- tzinfo (~> 0.3.37)
35
- ansi (1.4.3)
36
- arel (4.0.0)
37
- atomic (1.1.10)
38
- builder (3.1.4)
30
+ tzinfo (~> 1.1)
31
+ builder (3.2.2)
39
32
  erubis (2.7.0)
40
33
  has_scope (0.6.0.rc)
41
34
  actionpack (>= 3.2, < 5)
42
35
  activesupport (>= 3.2, < 5)
43
- hike (1.2.3)
44
- i18n (0.6.4)
45
- mail (2.5.4)
46
- mime-types (~> 1.16)
47
- treetop (~> 1.4.8)
48
- metaclass (0.0.1)
49
- mime-types (1.23)
50
- minitest (4.7.5)
51
- mocha (0.14.0)
36
+ i18n (0.6.11)
37
+ json (1.8.1)
38
+ metaclass (0.0.4)
39
+ minitest (5.4.1)
40
+ minitest-rg (5.1.0)
41
+ minitest (~> 5.0)
42
+ mocha (1.1.0)
52
43
  metaclass (~> 0.0.1)
53
- multi_json (1.7.7)
54
- polyglot (0.3.3)
55
44
  rack (1.5.2)
56
45
  rack-test (0.6.2)
57
46
  rack (>= 1.0)
58
- rails (4.0.0)
59
- actionmailer (= 4.0.0)
60
- actionpack (= 4.0.0)
61
- activerecord (= 4.0.0)
62
- activesupport (= 4.0.0)
63
- bundler (>= 1.3.0, < 2.0)
64
- railties (= 4.0.0)
65
- sprockets-rails (~> 2.0.0)
66
- railties (4.0.0)
67
- actionpack (= 4.0.0)
68
- activesupport (= 4.0.0)
47
+ railties (4.1.5)
48
+ actionpack (= 4.1.5)
49
+ activesupport (= 4.1.5)
69
50
  rake (>= 0.8.7)
70
51
  thor (>= 0.18.1, < 2.0)
71
- rake (10.1.0)
72
- responders (1.1.0)
73
- railties (>= 3.2, < 5)
74
- sprockets (2.10.0)
75
- hike (~> 1.2)
76
- multi_json (~> 1.0)
77
- rack (~> 1.0)
78
- tilt (~> 1.1, != 1.3.0)
79
- sprockets-rails (2.0.0)
80
- actionpack (>= 3.0)
81
- activesupport (>= 3.0)
82
- sprockets (~> 2.8)
52
+ rake (10.3.2)
53
+ responders (1.1.1)
54
+ railties (>= 3.2, < 4.2)
83
55
  strong_parameters (0.1.4)
84
56
  actionpack (>= 3.2.0)
85
57
  activemodel (>= 3.2.0)
86
58
  railties (>= 3.2.0)
87
- thor (0.18.1)
88
- thread_safe (0.1.2)
89
- atomic
90
- tilt (1.4.1)
91
- treetop (1.4.14)
92
- polyglot
93
- polyglot (>= 0.3.1)
94
- turn (0.9.6)
95
- ansi
96
- tzinfo (0.3.37)
59
+ thor (0.19.1)
60
+ thread_safe (0.3.4)
61
+ tzinfo (1.2.2)
62
+ thread_safe (~> 0.1)
97
63
 
98
64
  PLATFORMS
99
65
  ruby
100
66
 
101
67
  DEPENDENCIES
102
68
  inherited_resources!
69
+ minitest-rg
103
70
  mocha
104
- rails (>= 3.2, < 5)
105
71
  strong_parameters
106
- turn
data/MIT-LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2009-2012 José Valim http://blog.plataformatec.com.br
1
+ Copyright (c) 2009-2012 José Valim
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,3 +1,12 @@
1
+ ## Deprecation notice
2
+
3
+ Since Rails 3 came out, I have no longer used Inherited Resources and it is no
4
+ longer actively maintained. I have found that the responders abstraction
5
+ offers the perfect balance between hiding and showing too much logic in controllers.
6
+ That said, I suggest developers to make use of Rails' `respond_with` feature
7
+ alongside the [responders gem](https://github.com/plataformatec/responders) as a
8
+ replacement to Inherited Resources.
9
+
1
10
  ## Inherited Resources
2
11
 
3
12
  Inherited Resources speeds up development by making your controllers inherit
@@ -208,7 +217,7 @@ projects collection:
208
217
  class ProjectsController < InheritedResources::Base
209
218
  protected
210
219
  def collection
211
- @projects ||= end_of_association_chain.paginate(:page => params[:page])
220
+ get_collection_ivar || set_collection_ivar(end_of_association_chain.paginate(:page => params[:page]))
212
221
  end
213
222
  end
214
223
  ```
@@ -726,5 +735,4 @@ If you discover any bugs, please describe it in the issues tracker, including Ra
726
735
 
727
736
  Questions are better handled on StackOverflow.
728
737
 
729
- Copyright (c) 2009-2012 José Valim http://blog.plataformatec.com.br
730
- See the attached MIT License.
738
+ MIT License. Copyright (c) 2009-2012 José Valim.
@@ -19,5 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.require_paths = ["lib"]
20
20
 
21
21
  s.add_dependency("responders", "~> 1.0")
22
+ s.add_dependency("actionpack", ">= 3.2", "< 4.2")
23
+ s.add_dependency("railties", ">= 3.2", "< 4.2")
22
24
  s.add_dependency("has_scope", "~> 0.6.0.rc")
23
25
  end
@@ -2,4 +2,13 @@ class <%= controller_class_name %>Controller < InheritedResources::Base
2
2
  <% if options[:singleton] -%>
3
3
  defaults :singleton => true
4
4
  <% end -%>
5
+ <% if Rails::VERSION::MAJOR >= 4 || defined?(ActiveModel::ForbiddenAttributesProtection) -%>
6
+
7
+ private
8
+
9
+ def <%= singular_name %>_params
10
+ params.require(:<%= singular_name %>).permit(<%= attributes_names.map{ |a_name| ":#{a_name}" }.join(", ") %>)
11
+ end
12
+ <% end -%>
5
13
  end
14
+
@@ -182,8 +182,9 @@ module InheritedResources
182
182
 
183
183
  klass = model_name
184
184
  while namespace != ''
185
- klass = "#{namespace}::#{model_name}"
186
- if klass.safe_constantize
185
+ new_klass = "#{namespace}::#{model_name}"
186
+ if new_klass.safe_constantize
187
+ klass = new_klass
187
188
  break
188
189
  else
189
190
  namespace = namespace.deconstantize
@@ -312,7 +313,7 @@ module InheritedResources
312
313
  def initialize_resources_class_accessors! #:nodoc:
313
314
  # First priority is the namespaced model, e.g. User::Group
314
315
  self.resource_class ||= begin
315
- namespaced_class = self.name.sub(/Controller/, '').singularize
316
+ namespaced_class = self.name.sub(/Controller$/, '').singularize
316
317
  namespaced_class.constantize
317
318
  rescue NameError
318
319
  nil
@@ -320,7 +321,7 @@ module InheritedResources
320
321
 
321
322
  # Second priority is the top namespace model, e.g. EngineName::Article for EngineName::Admin::ArticlesController
322
323
  self.resource_class ||= begin
323
- namespaced_classes = self.name.sub(/Controller/, '').split('::')
324
+ namespaced_classes = self.name.sub(/Controller$/, '').split('::')
324
325
  namespaced_class = [namespaced_classes.first, namespaced_classes.last].join('::').singularize
325
326
  namespaced_class.constantize
326
327
  rescue NameError
@@ -329,7 +330,7 @@ module InheritedResources
329
330
 
330
331
  # Third priority the camelcased c, i.e. UserGroup
331
332
  self.resource_class ||= begin
332
- camelcased_class = self.name.sub(/Controller/, '').gsub('::', '').singularize
333
+ camelcased_class = self.name.sub(/Controller$/, '').gsub('::', '').singularize
333
334
  camelcased_class.constantize
334
335
  rescue NameError
335
336
  nil
@@ -15,9 +15,15 @@ module InheritedResources
15
15
  #
16
16
  # Your routes should be something like:
17
17
  #
18
- # m.resources :files, :has_many => :comments #=> /files/13/comments
19
- # m.resources :tasks, :has_many => :comments #=> /tasks/17/comments
20
- # m.resources :messages, :has_many => :comments #=> /messages/11/comments
18
+ # resources :files do
19
+ # resources :comments #=> /files/13/comments
20
+ # end
21
+ # resources :tasks do
22
+ # resources :comments #=> /tasks/17/comments
23
+ # end
24
+ # resources :messages do
25
+ # resources :comments #=> /messages/11/comments
26
+ # end
21
27
  #
22
28
  # When using polymorphic associations, you get some free helpers:
23
29
  #
@@ -74,10 +80,16 @@ module InheritedResources
74
80
  #
75
81
  # Finally your routes should be something like:
76
82
  #
77
- # map.resources :projects do |m|
78
- # m.resources :files, :has_many => :comments #=> /projects/1/files/13/comments
79
- # m.resources :tasks, :has_many => :comments #=> /projects/1/tasks/17/comments
80
- # m.resources :messages, :has_many => :comments #=> /projects/1/messages/11/comments
83
+ # resources :projects do
84
+ # resources :files do
85
+ # resources :comments #=> /projects/1/files/13/comments
86
+ # end
87
+ # resources :tasks do
88
+ # resources :comments #=> /projects/1/tasks/17/comments
89
+ # end
90
+ # resources :messages do
91
+ # resources :comments #=> /projects/1/messages/11/comments
92
+ # end
81
93
  # end
82
94
  #
83
95
  # The helpers work in the same way as above.
@@ -1,3 +1,3 @@
1
1
  module InheritedResources
2
- VERSION = '1.5.0'.freeze
2
+ VERSION = '1.5.1'.freeze
3
3
  end
data/test/aliases_test.rb CHANGED
@@ -129,13 +129,6 @@ class AliasesTest < ActionController::TestCase
129
129
  mock_student = mock_student(:save => true, :to_xml => "XML")
130
130
  Student.stubs(:new).returns(mock_student)
131
131
 
132
- # Bug in mocha does not accept strings on respond_to
133
- mock_student.singleton_class.class_eval do
134
- def respond_to?(method, *)
135
- method == "to_xml" || super
136
- end
137
- end
138
-
139
132
  post :create
140
133
  assert_equal "http://test.host/", @response.location
141
134
  end
data/test/base_test.rb CHANGED
@@ -105,13 +105,6 @@ class ShowActionBaseTest < ActionController::TestCase
105
105
  User.expects(:find).with('42').returns(mock_user)
106
106
  mock_user.expects(:to_xml).returns("Generated XML")
107
107
 
108
- # Bug in mocha does not accept strings on respond_to
109
- mock_user.singleton_class.class_eval do
110
- def respond_to?(method, *)
111
- method == "to_xml" || super
112
- end
113
- end
114
-
115
108
  get :show, :id => '42'
116
109
  assert_response :success
117
110
  assert_equal 'Generated XML', @response.body
@@ -139,13 +132,6 @@ class NewActionBaseTest < ActionController::TestCase
139
132
  User.expects(:new).returns(mock_user)
140
133
  mock_user.expects(:to_xml).returns("Generated XML")
141
134
 
142
- # Bug in mocha does not accept strings on respond_to
143
- mock_user.singleton_class.class_eval do
144
- def respond_to?(method, *)
145
- method == "to_xml" || super
146
- end
147
- end
148
-
149
135
  get :new
150
136
  assert_response :success
151
137
  assert_equal 'Generated XML', @response.body
@@ -198,7 +184,7 @@ class CreateActionBaseTest < ActionController::TestCase
198
184
  def test_redirect_to_the_created_user
199
185
  User.stubs(:new).returns(mock_user(:save => true))
200
186
  @controller.expects(:resource_url).returns('http://test.host/')
201
- post :create
187
+ post :create, format: :html
202
188
  assert_redirected_to 'http://test.host/'
203
189
  end
204
190
 
@@ -23,6 +23,22 @@ class DeansController < InheritedResources::Base
23
23
  belongs_to :school
24
24
  end
25
25
 
26
+ module Controller
27
+ class User; end
28
+
29
+ class UsersController < InheritedResources::Base; end
30
+
31
+ module Admin
32
+ class UsersController < InheritedResources::Base; end
33
+ end
34
+ end
35
+
36
+ class ControllerGroup; end
37
+
38
+ module Controller
39
+ class GroupsController < InheritedResources::Base; end
40
+ end
41
+
26
42
  module Library
27
43
  class Category
28
44
  end
@@ -148,8 +164,22 @@ class BelongsToErrorsTest < ActiveSupport::TestCase
148
164
  assert_equal Library::Category, Library::SubcategoriesController.resources_configuration[:category][:parent_class]
149
165
  end
150
166
 
167
+ def test_belongs_to_for_namespaced_controller_and_non_namespaced_model_sets_parent_class_properly
168
+ Library::SubcategoriesController.send(:belongs_to, :book)
169
+ assert_equal Book, Library::SubcategoriesController.resources_configuration[:book][:parent_class]
170
+ end
171
+
151
172
  def test_belongs_to_without_namespace_sets_parent_class_properly
152
173
  FoldersController.send(:belongs_to, :book)
153
174
  assert_equal Book, FoldersController.resources_configuration[:book][:parent_class]
154
175
  end
155
176
  end
177
+
178
+ class SpecialCasesClassMethodTest < ActionController::TestCase
179
+
180
+ def test_resource_class_to_corresponding_model_class
181
+ assert_equal Controller::User, Controller::UsersController.send(:resource_class)
182
+ assert_equal Controller::User, Controller::Admin::UsersController.send(:resource_class)
183
+ assert_equal ControllerGroup, Controller::GroupsController.send(:resource_class)
184
+ end
185
+ end
data/test/test_helper.rb CHANGED
@@ -3,9 +3,10 @@ require 'bundler'
3
3
 
4
4
  Bundler.setup
5
5
 
6
- require 'test/unit'
7
- require 'mocha/setup'
8
- begin; require 'turn/autorun'; rescue LoadError; end
6
+ require 'minitest'
7
+ require 'mocha/mini_test'
8
+ require 'minitest/rg'
9
+ require 'minitest/autorun'
9
10
 
10
11
  ENV["RAILS_ENV"] = "test"
11
12
  RAILS_ROOT = "anywhere"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inherited_resources
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - José Valim
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-06-03 00:00:00.000000000 Z
12
+ date: 2014-10-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: responders
@@ -25,6 +25,46 @@ dependencies:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
27
  version: '1.0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: actionpack
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '3.2'
35
+ - - "<"
36
+ - !ruby/object:Gem::Version
37
+ version: '4.2'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: '3.2'
45
+ - - "<"
46
+ - !ruby/object:Gem::Version
47
+ version: '4.2'
48
+ - !ruby/object:Gem::Dependency
49
+ name: railties
50
+ requirement: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '3.2'
55
+ - - "<"
56
+ - !ruby/object:Gem::Version
57
+ version: '4.2'
58
+ type: :runtime
59
+ prerelease: false
60
+ version_requirements: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: '3.2'
65
+ - - "<"
66
+ - !ruby/object:Gem::Version
67
+ version: '4.2'
28
68
  - !ruby/object:Gem::Dependency
29
69
  name: has_scope
30
70
  requirement: !ruby/object:Gem::Requirement
@@ -190,7 +230,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
190
230
  version: '0'
191
231
  requirements: []
192
232
  rubyforge_project: inherited_resources
193
- rubygems_version: 2.2.2
233
+ rubygems_version: 2.4.2
194
234
  signing_key:
195
235
  specification_version: 4
196
236
  summary: Inherited Resources speeds up development by making your controllers inherit
@@ -295,3 +335,4 @@ test_files:
295
335
  - test/views/users/update.js.erb
296
336
  - test/views/venue/show.html.erb
297
337
  - test/views/widgets/new.html.erb
338
+ has_rdoc: