action_args 1.1.0 → 1.1.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: e820e5d9674aa0054496752320674fc8c57c364d
4
- data.tar.gz: c854a76604f95d555872c93cc360ad42d19425e8
3
+ metadata.gz: 0bc1d9d90cd395b886fc828a35a63c5d0064af53
4
+ data.tar.gz: 15bbdff4daa2bfa5413ed8a1a14f54770359fd87
5
5
  SHA512:
6
- metadata.gz: b82fea159869a228853c9362d9b321c9a4ef3e9f88b20be10a74b16c96c494317a96fa99936ff7ae2261812645cf89c6e68f959ee802eb942310c35df6126ccf
7
- data.tar.gz: 85e3e9513651c34edce33142cc2fa4dc0d539f1eb9163a0464bcdb82686ebac6e549b2963406b56605f3376519b1d3847b576d2f14949749704ef80d4351960e
6
+ metadata.gz: 03ab97f8deb9229b3c1c158ad0d4a414324e848665c8ee3bf090dc4d9367a3bdf87d9991b9c054ae19436201dd10f942b1b401200d2b16949af994c2e1789c98
7
+ data.tar.gz: d1e480e53600b3a14e39741c85678f76fc8f3f1c3dba7a31b3fd27c9b1a5c7b40e911cfe37200e19e8dd7e05a5fa60b48ddc2789cbc93aefd6482f21c9ac6ea8
data/README.md CHANGED
@@ -1,11 +1,11 @@
1
1
  # ActionArgs
2
2
 
3
- Controller action arguments parameterizer for Rails 3+
3
+ Controller action arguments parameterizer for Rails 3 and 4
4
4
 
5
5
 
6
6
  ## What is this?
7
7
 
8
- ActionArgs is a Rails plugin that extends your controller action methods to look and act like simple general Ruby methods with meaningful parameters, or in short, Merbish.
8
+ ActionArgs is a Rails plugin that extends your controller action methods to allow you to specify arguments of interest in the method definition for any action. - in short, Merbish.
9
9
 
10
10
 
11
11
  ## The Controllers
@@ -21,16 +21,18 @@ end
21
21
  ```
22
22
 
23
23
  Hitting "/hoge/fuga?piyo=foo" will call `fuga('foo')` and output 'foo'.
24
- So, you do never need to touch the ugly `params` Hash in order to fetch the request parameters.
24
+ This allows you to explicitly state which members of the `params` Hash are used in your controller actions,
25
25
 
26
26
 
27
27
  ## StrongParameters
28
28
 
29
29
  ActionArgs plays very nice with Rails 4 StrongParameters.
30
30
 
31
- In this `show` action, ActionArgs `require`s the `id` parameter.
32
- Hence, if the `id` value has not been specified in the request parameter, it raises an error in the same way as usual Ruby methods do.
31
+ ### Required Parameters
32
+ Method parameters that you specify are required. If a key of the same name does not exist in the params Hash,
33
+ an ArgumentError is raised.
33
34
 
35
+ In this `show` action, ActionArgs will require that `id` parameter is provided.
34
36
  ```ruby
35
37
  class UsersController < ApplicationController
36
38
  # the `id` parameter is mandatory
@@ -40,8 +42,8 @@ class UsersController < ApplicationController
40
42
  end
41
43
  ```
42
44
 
43
- If you don't want ActionArgs to check the existence of some action parameters, you can make them optional by defining their default values.
44
- Again, it just acts in the same way as usual Ruby methods do.
45
+ ### Optional Parameters
46
+ Default parameter values are assigned in the standard way. Parameters with a default value will not require a matching item in the `params` Hash.
45
47
 
46
48
  ```ruby
47
49
  class UsersController < ApplicationController
@@ -52,7 +54,11 @@ class UsersController < ApplicationController
52
54
  end
53
55
  ```
54
56
 
55
- Hashes in the action method arguments simply respond to the StrongParameters' `permit` method.
57
+ ### StrongParameters - permit
58
+
59
+ 1. Inline declaration
60
+
61
+ Hashes simply respond to the StrongParameters' `permit` method.
56
62
 
57
63
  ```ruby
58
64
  class UsersController < ApplicationController
@@ -63,10 +69,10 @@ class UsersController < ApplicationController
63
69
  end
64
70
  ```
65
71
 
66
- Moreover, ActionArgs provides declarative `permits` method for controller classes,
67
- so that you can DRY up your `permit` calls in the most comprehensible way.
68
- The `permits` method assumes the model class from the controller name, and
69
- `permit`s the action arguments containing attributes for that model.
72
+ 2. Declarative white-listing
73
+
74
+ ActionArgs also provides a declarative `permits` method for controller classes.
75
+ Use this to keep your `permit` calls DRY in a comprehensible way.
70
76
 
71
77
  ```ruby
72
78
  class UsersController < ApplicationController
@@ -213,7 +219,7 @@ class BooksController < ApplicationController
213
219
  end
214
220
  ```
215
221
 
216
- However, due to some implementational reasons, the `page` variable will be actually defaulted to nil when `page` parameter was not given.
222
+ However, due to some implementation reasons, the `page` variable will be actually defaulted to nil when `page` parameter was not given.
217
223
 
218
224
  In order to provide default parameter values in perfect Ruby manner, we recommend you to use the Ruby 2.0 "keyword arguments" syntax instead.
219
225
 
@@ -229,4 +235,4 @@ This way, the `page` parameter will be defaulted to 1 as everyone might expect.
229
235
 
230
236
  ## Copyright
231
237
 
232
- Copyright (c) 2011 Asakusa.rb. See MIT-LICENSE for further details.
238
+ Copyright (c) 2011~2013 Asakusa.rb. See MIT-LICENSE for further details.
@@ -1,8 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'rails', github: 'rails/rails'
4
- gem 'activerecord-deprecated_finders', github: 'rails/activerecord-deprecated_finders'
5
- gem 'journey', github: 'rails/journey'
3
+ gem 'rails', '>= 4.0.0'
6
4
  gem 'rspec-rails', '>= 2.0'
7
5
 
8
6
  gemspec :path => '../'
@@ -3,6 +3,7 @@ module AbstractController
3
3
  if defined? ActionController::StrongParameters
4
4
  def send_action(method_name, *args)
5
5
  return send method_name, *args unless args.empty?
6
+ return send method_name, *args unless defined?(params)
6
7
 
7
8
  method_parameters = method(method_name).parameters
8
9
  ActionArgs::ParamsHandler.strengthen_params!(self.class, method_parameters, params)
@@ -29,6 +30,7 @@ module AbstractController
29
30
  else
30
31
  def send_action(method_name, *args)
31
32
  return send method_name, *args unless args.empty?
33
+ return send method_name, *args unless defined?(params)
32
34
 
33
35
  values = ActionArgs::ParamsHandler.extract_method_arguments_from_params method(method_name).parameters, params
34
36
  send method_name, *values
@@ -1,3 +1,3 @@
1
1
  module ActionArgs
2
- VERSION = '1.1.0'
2
+ VERSION = '1.1.1'
3
3
  end
data/spec/fake_app.rb CHANGED
@@ -31,6 +31,19 @@ end
31
31
  class Store < ActiveRecord::Base
32
32
  end
33
33
 
34
+ # mailers
35
+ require "action_mailer/railtie"
36
+ class UserMailer < ActionMailer::Base
37
+ def send_email_without_args
38
+ mail(
39
+ to: 'to@example.com',
40
+ from: 'from@example.com',
41
+ subject: 'Action Args!!!',
42
+ body: 'test'
43
+ )
44
+ end
45
+ end
46
+
34
47
  # helpers
35
48
  module ApplicationHelper; end
36
49
 
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe UserMailer do
4
+ describe '#send_email_without_args' do
5
+ it "should not raise NameError: undefined local variable or method `params' for ..." do
6
+ expect{ UserMailer.send_email_without_args }.to_not raise_error(NameError)
7
+ end
8
+ end
9
+ end
@@ -146,12 +146,16 @@ describe ActionArgs::ParamsHandler do
146
146
  its([:b]) { should be }
147
147
  end
148
148
 
149
- context 'requiring via :key, permitting all scalars' do
150
- let(:controller) { FugaController ||= Class.new(ApplicationController) { permits :a, :b; def a(fuga: {}) end } }
151
- subject { params[:fuga] }
152
- it { should be_permitted }
153
- its([:a]) { should be }
154
- its([:b]) { should be }
149
+ if RUBY_VERSION >= '2'
150
+ eval <<-KWARGS_TEST
151
+ context 'requiring via :key, permitting all scalars' do
152
+ let(:controller) { FugaController ||= Class.new(ApplicationController) { permits :a, :b; def a(fuga: {}) end } }
153
+ subject { params[:fuga] }
154
+ it { should be_permitted }
155
+ its([:a]) { should be }
156
+ its([:b]) { should be }
157
+ end
158
+ KWARGS_TEST
155
159
  end
156
160
  end
157
161
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: action_args
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Akira Matsuda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-21 00:00:00.000000000 Z
11
+ date: 2013-07-25 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Rails plugin gem that supports Merbish style controller action arguments.
14
14
  email:
@@ -40,6 +40,7 @@ files:
40
40
  - spec/controllers/strong_parameters_spec.rb
41
41
  - spec/fake_app.rb
42
42
  - spec/kwargs_controllers.rb
43
+ - spec/mailers/action_mailer_spec.rb
43
44
  - spec/params_handler/params_handler_spec.rb
44
45
  - spec/spec_helper.rb
45
46
  homepage: http://asakusa.rubyist.net/
@@ -61,7 +62,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
61
62
  version: '0'
62
63
  requirements: []
63
64
  rubyforge_project: action_args
64
- rubygems_version: 2.0.2
65
+ rubygems_version: 2.0.3
65
66
  signing_key:
66
67
  specification_version: 4
67
68
  summary: Controller action arguments parameterizer for Rails 3+ & Ruby 1.9+
@@ -72,5 +73,6 @@ test_files:
72
73
  - spec/controllers/strong_parameters_spec.rb
73
74
  - spec/fake_app.rb
74
75
  - spec/kwargs_controllers.rb
76
+ - spec/mailers/action_mailer_spec.rb
75
77
  - spec/params_handler/params_handler_spec.rb
76
78
  - spec/spec_helper.rb