action_parameter 0.0.1 → 0.0.2

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: aa9cc72cb78003cacc9033f3fd23a76bdf326123
4
- data.tar.gz: a718df9d730d24e5950ace918081cf65048a3798
3
+ metadata.gz: 20349d935998f29c2416ce507da7a788fe501219
4
+ data.tar.gz: d70fda5403bfee909f7f3af9fa19133d6b43b31d
5
5
  SHA512:
6
- metadata.gz: dd62ba7e769620aa895c2d5942c3144be5395acc9785cdf25e8a014053f71edbe84bcf7117e2380758990b28740af78ac56faa8fb775262cdfbb6542538d9736
7
- data.tar.gz: 9065aa9389ec2ab881ddfffe93cf20bab5a6c7510a46d024ac615275f19d9b2424c2a029c63aba07764c3dad2543333f33e86721b2822af6192626b46dce8bb2
6
+ metadata.gz: 00ea0e919832434b7d2d3954ad0ada4a5d2f91a3270716a8db0d5d19f9eb9fdb4a4e4eb11aded1193a9fcc9bc22930fee2ea3a6ef5706b3152ce545b099bda5c
7
+ data.tar.gz: 93165ee51a9168c294503f7e76fdc96a0ddc196ac4dd4fa198fb176957849b13ce6a27c0227c76b4fbec458271917aa738e72b9ca6f7514ac375d0804583d126
data/.coveralls.yml ADDED
@@ -0,0 +1,2 @@
1
+ service_name: travis-ci
2
+ repo_token: UyOEGDlk0CRMGA13fGDYwg96fLKh1hOXs
data/.travis.yml ADDED
@@ -0,0 +1,9 @@
1
+ language: ruby
2
+ script: "bundle exec rake test"
3
+ rvm:
4
+ - 1.9.3
5
+ - 2.0.0
6
+ gemfile:
7
+ - Gemfile
8
+ notifications:
9
+ email: false
data/CHANGELOG.md ADDED
@@ -0,0 +1,8 @@
1
+ ### 0.0.2
2
+
3
+ * enhancements
4
+ * Adds `locals` method to permitted_params to create helpers methods on ActionParameter
5
+
6
+ * deprecations
7
+ * `permitted_params(locals: {})` in favor of `permitted_params.locals({})`
8
+ * `rails g parameter` rails' generator in favor of `rails g parameters`
data/Gemfile CHANGED
@@ -5,4 +5,5 @@ gemspec
5
5
  gem 'actionpack', '~> 3.0.0'
6
6
  gem 'activesupport', '~> 3.0.0'
7
7
  gem 'mocha', '~> 0.13.2', require: false
8
- gem 'rake'
8
+ gem 'rake'
9
+ gem 'coveralls', require: false
data/README.md CHANGED
@@ -1,3 +1,6 @@
1
+ [![Gem Version](https://badge.fury.io/rb/action_parameter.png)](http://badge.fury.io/rb/action_parameter)
2
+ [![Build Status](https://travis-ci.org/edelpero/action_parameter.png?branch=master)](https://travis-ci.org/edelpero/action_parameter)
3
+ [![Coverage Status](https://coveralls.io/repos/edelpero/action_parameter/badge.png)](https://coveralls.io/r/edelpero/action_parameter)
1
4
  [![Code Climate](https://codeclimate.com/github/edelpero/action_parameter.png)](https://codeclimate.com/github/edelpero/action_parameter)
2
5
 
3
6
  ActionParameter
@@ -5,10 +8,49 @@ ActionParameter
5
8
 
6
9
  ActionParameter helps you move all your parameter's logic into it's own class. This way you'll keep your controllers dry and they would be easier to test.
7
10
 
11
+ Before
12
+ ------
13
+
14
+ ```ruby
15
+ # app/controllers/users_controllers.rb
16
+ class UsersController < ActionController::Base
17
+ def create
18
+ User.create(user_params)
19
+ end
20
+
21
+ private
22
+ def user_params
23
+ params.require(:user).permit(:name, :age)
24
+ end
25
+ end
26
+ ```
27
+
28
+ After
29
+ -----
30
+
31
+ ```ruby
32
+ # app/controllers/users_controllers.rb
33
+ class UsersController < ActionController::Base
34
+ def create
35
+ # It automatically deduces which Parameters class from Controller's name
36
+ User.create(permitted_params.permit)
37
+ end
38
+ end
39
+ ```
40
+
41
+ ```ruby
42
+ # app/parameters/user_parameters.rb
43
+ class UserParameter < ActionParameter::Base
44
+ def permit
45
+ params.require(:user).permit(:name, :age)
46
+ end
47
+ end
48
+ ```
49
+
8
50
  Install
9
51
  -------
10
52
 
11
- ActionParameter works with Rails 3.0 onwards and Ruby 1.9. You can add it to your Gemfile with:
53
+ ActionParameter works with Rails 3.0 onwards and Ruby 1.9.3 onwards. You can add it to your Gemfile with:
12
54
 
13
55
  ```ruby
14
56
  gem 'action_parameter'
@@ -22,7 +64,7 @@ Usage
22
64
  ####Generator
23
65
 
24
66
  ```ruby
25
- rails generate parameter [MODEL_NAME]
67
+ rails generate parameters [MODEL_NAME]
26
68
  ```
27
69
  Will create **app/parameters/[model_name]_parameters.rb**.
28
70
 
@@ -36,9 +78,8 @@ permitted_params(options={})
36
78
 
37
79
  #####Options Hash
38
80
 
39
- * **options** - Hash with two valid keys **:class** and **:locals**.
40
- * **options[:class]** - Symbol value with the name of the Parameters class you want to use.
41
- * **options[:locals]** - Hash used to create helper methods available for the ActionParameter instance.
81
+ * **options** - Hash with one valid key: **:class**.
82
+ * **options[:class]** - Symbol value with the name of the Parameters class you want to use.
42
83
 
43
84
  #####Example 1
44
85
 
@@ -80,7 +121,7 @@ class UserParameters < ActionParameter::Base
80
121
  end
81
122
  ```
82
123
 
83
- ####Parameter Helpers
124
+ ####Parameter Class Helpers
84
125
 
85
126
  #####Default Helpers
86
127
 
@@ -90,11 +131,11 @@ end
90
131
 
91
132
  #####Creating New Helpers
92
133
 
93
- If you want to create new helper methods for you parameters class, just pass a hash using **:locals**. Let say you want to make **@current_user** available for the UserParameter's class, then you'll need to use the **:locals** option to tell the UserParameters class to create a new helper that returns **@current_user**.
134
+ If you want to create new helper methods for you parameters class, just call **:locals** over **permitted_params**. Let say you want to make **@current_user** available for the UserParameter's class, then you'll need to use the **:locals** method to tell the UserParameters class to create a new helper that returns **@current_user**.
94
135
 
95
136
  ```ruby
96
- permitted_params(class: :user, locals: { current_user: @current_user,
97
- another_helper: @value })
137
+ permitted_params(class: :user).locals( current_user: @current_user,
138
+ another_helper: @value )
98
139
  ```
99
140
  This will create **current_user** and **another_helper** methods and they will be available in UserParameters class.
100
141
 
@@ -104,21 +145,19 @@ This will create **current_user** and **another_helper** methods and they will b
104
145
  # app/controllers/people_controllers.rb
105
146
  class UsersController < ActionController::Base
106
147
  def create
107
- Person.create(permitted_params(locals: { current_user: @current_user }).sign_up)
108
- # This will call to UserParameters' sign_up method and will also create a
109
- # helper method named 'current_user' which will return @current_user
148
+ User.create(permitted_params.locals(current_user: @current_user).permit) # This will call to PersonParameters' permit method
110
149
  end
111
150
  end
112
151
  ```
113
152
 
114
153
  ```ruby
115
- # app/parameters/user_parameters.rb
154
+ # app/parameters/person_parameters.rb
116
155
  class UserParameters < ActionParameter::Base
117
- def sign_up
118
- if current_user # Method created using :locals option
119
- params.permit!
156
+ def permit
157
+ if user.admin?
158
+ params.require(:person).permit(:name, :age, :admin)
120
159
  else
121
- params.require(:person).permit(:name, :age)
160
+ params.require(:person).permit(:name, :age)
122
161
  end
123
162
  end
124
163
  end
data/README.rdoc CHANGED
@@ -1,3 +1,6 @@
1
+ {<img src="https://badge.fury.io/rb/action_parameter.png" alt="Gem Version" />}[http://badge.fury.io/rb/action_parameter]
2
+ {<img src="https://travis-ci.org/edelpero/action_parameter.png?branch=master" alt="Build Status" />}[https://travis-ci.org/edelpero/action_parameter]
3
+ {<img src="https://coveralls.io/repos/edelpero/action_parameter/badge.png" alt="Coverage Status" />}[https://coveralls.io/r/edelpero/action_parameter]
1
4
  {<img src="https://codeclimate.com/github/edelpero/action_parameter.png" />}[https://codeclimate.com/github/edelpero/action_parameter]
2
5
 
3
6
  ActionParameter
@@ -5,10 +8,49 @@ ActionParameter
5
8
 
6
9
  ActionParameter helps you move all your parameter's logic into it's own class. This way you'll keep your controllers dry and they would be easier to test.
7
10
 
11
+ Before
12
+ ------
13
+
14
+ ```ruby
15
+ # app/controllers/users_controllers.rb
16
+ class UsersController < ActionController::Base
17
+ def create
18
+ User.create(user_params)
19
+ end
20
+
21
+ private
22
+ def user_params
23
+ params.require(:user).permit(:name, :age)
24
+ end
25
+ end
26
+ ```
27
+
28
+ After
29
+ -----
30
+
31
+ ```ruby
32
+ # app/controllers/users_controllers.rb
33
+ class UsersController < ActionController::Base
34
+ def create
35
+ # It automatically deduces which Parameters class from Controller's name
36
+ User.create(permitted_params.permit)
37
+ end
38
+ end
39
+ ```
40
+
41
+ ```ruby
42
+ # app/parameters/user_parameters.rb
43
+ class UserParameter < ActionParameter::Base
44
+ def permit
45
+ params.require(:user).permit(:name, :age)
46
+ end
47
+ end
48
+ ```
49
+
8
50
  Install
9
51
  -------
10
52
 
11
- ActionParameter works with Rails 3.0 onwards and Ruby 1.9. You can add it to your Gemfile with:
53
+ ActionParameter works with Rails 3.0 onwards and Ruby 1.9.3 onwards. You can add it to your Gemfile with:
12
54
 
13
55
  ```ruby
14
56
  gem 'action_parameter'
@@ -22,7 +64,7 @@ Usage
22
64
  ####Generator
23
65
 
24
66
  ```ruby
25
- rails generate parameter [MODEL_NAME]
67
+ rails generate parameters [MODEL_NAME]
26
68
  ```
27
69
  Will create **app/parameters/[model_name]_parameters.rb**.
28
70
 
@@ -36,9 +78,8 @@ permitted_params(options={})
36
78
 
37
79
  #####Options Hash
38
80
 
39
- * **options** - Hash with two valid keys **:class** and **:locals**.
40
- * **options[:class]** - Symbol value with the name of the Parameters class you want to use.
41
- * **options[:locals]** - Hash used to create helper methods available for the ActionParameter instance.
81
+ * **options** - Hash with one valid key: **:class**.
82
+ * **options[:class]** - Symbol value with the name of the Parameters class you want to use.
42
83
 
43
84
  #####Example 1
44
85
 
@@ -80,7 +121,7 @@ class UserParameters < ActionParameter::Base
80
121
  end
81
122
  ```
82
123
 
83
- ####Parameter Helpers
124
+ ####Parameter Class Helpers
84
125
 
85
126
  #####Default Helpers
86
127
 
@@ -90,11 +131,11 @@ end
90
131
 
91
132
  #####Creating New Helpers
92
133
 
93
- If you want to create new helper methods for you parameters class, just pass a hash using **:locals**. Let say you want to make **@current_user** available for the UserParameter's class, then you'll need to use the **:locals** option to tell the UserParameters class to create a new helper that returns **@current_user**.
134
+ If you want to create new helper methods for you parameters class, just call **:locals** over **permitted_params**. Let say you want to make **@current_user** available for the UserParameter's class, then you'll need to use the **:locals** method to tell the UserParameters class to create a new helper that returns **@current_user**.
94
135
 
95
136
  ```ruby
96
- permitted_params(class: :user, locals: { current_user: @current_user,
97
- another_helper: @value })
137
+ permitted_params(class: :user).locals( current_user: @current_user,
138
+ another_helper: @value )
98
139
  ```
99
140
  This will create **current_user** and **another_helper** methods and they will be available in UserParameters class.
100
141
 
@@ -104,21 +145,19 @@ This will create **current_user** and **another_helper** methods and they will b
104
145
  # app/controllers/people_controllers.rb
105
146
  class UsersController < ActionController::Base
106
147
  def create
107
- Person.create(permitted_params(locals: { current_user: @current_user }).sign_up)
108
- # This will call to UserParameters' sign_up method and will also create a
109
- # helper method named 'current_user' which will return @current_user
148
+ User.create(permitted_params.locals(current_user: @current_user).permit) # This will call to PersonParameters' permit method
110
149
  end
111
150
  end
112
151
  ```
113
152
 
114
153
  ```ruby
115
- # app/parameters/user_parameters.rb
154
+ # app/parameters/person_parameters.rb
116
155
  class UserParameters < ActionParameter::Base
117
- def sign_up
118
- if current_user # Method created using :locals option
119
- params.permit!
156
+ def permit
157
+ if user.admin?
158
+ params.require(:person).permit(:name, :age, :admin)
120
159
  else
121
- params.require(:person).permit(:name, :age)
160
+ params.require(:person).permit(:name, :age)
122
161
  end
123
162
  end
124
163
  end
@@ -3,20 +3,43 @@ module ActionParameter
3
3
 
4
4
  attr_accessor :params
5
5
 
6
- # initialize: Initialize parameter class.
6
+ # initialize: Initialize parameter class and creates controller_name and action_name helpers.
7
7
  #
8
8
  # == Options
9
9
  #
10
10
  # * <tt>params</tt> - The ActionController::Parameters instance from the controller who initialize this.
11
- # * <tt>locals</tt> - Hash used to create helper methods available for the ActionParameter instance.
12
- def initialize(params, locals = {})
11
+ def initialize(params)
13
12
  @params = params
13
+ create_base_helpers
14
+ end
15
+
16
+ # locals: Creates helper methods for the ActionParameter instace.
17
+ #
18
+ # == Options
19
+ #
20
+ # * <tt>locals</tt> - Hash used to create helper methods available for the ActionParameter instance.
21
+ #
22
+ # == Examples
23
+ #
24
+ # * locals(new_method: @value, another_method: @other_value)
25
+ # # => 'ActionParameter instace'
26
+ #
27
+ # Returns the ActionParameter instace.
28
+ def locals(locals = {})
14
29
  create_methods(locals)
30
+ self
15
31
  end
16
32
 
17
33
  protected
18
34
 
19
- # create_methods: Creates instance methods using locals hash's keys and values, params[:controller] and params[:action].
35
+ # create_base_helpers: Creates controller_name and action_name helper methods, every time an ActionParameter instace is created.
36
+ def create_base_helpers
37
+ locals = { controller_name: params[:controller],
38
+ action_name: params[:action] }
39
+ create_methods(locals)
40
+ end
41
+
42
+ # create_methods: Creates instance methods using locals hash's keys and values.
20
43
  #
21
44
  # == Options
22
45
  #
@@ -26,18 +49,13 @@ module ActionParameter
26
49
  #
27
50
  # create_methods(current_user: @user, another_key: @another_variable)
28
51
  #
29
- # Will create 'current_user', 'another_key', 'controller_name' and 'action_name' instance methods.
52
+ # Will create 'current_user' and 'another_key' instance methods.
30
53
  # This methods will be aviable only in the current parameter class where create_method was called.
31
54
  # 'current_user' will return @user.
32
55
  # 'another_key' will return @another_variable
33
- # 'controller_name' will return the controller instance's name
34
- # 'action_name' will return the controller action instance's name
35
56
  def create_methods(locals = {})
36
57
  locals = {} unless locals
37
58
 
38
- locals.merge!(controller_name: params[:controller],
39
- action_name: params[:action])
40
-
41
59
  klass = class << self; self; end
42
60
 
43
61
  locals.each do |method_name, value|
@@ -7,37 +7,36 @@ module ActionParameter
7
7
  #
8
8
  # == Options
9
9
  #
10
- # * <tt>options</tt> - Hash with two valid keys: class and locals.
10
+ # * <tt>options</tt> - Hash with one valid key: class.
11
11
  # * <tt>options[:class]</tt> - Symbol value with the name of the Parameters class you want to use.
12
- # * <tt>options[:locals]</tt> - Hash used to create helper methods available for the ActionParameter instance.
13
12
  #
14
13
  # == Examples
15
14
  #
16
- # permitted_params(class: customer, locals: { current_user: @user }) # called from UsersController
17
- #
15
+ # permitted_params(class: customer) # called from UsersController
16
+ #
18
17
  # This will create an instance of CustomerParameters and also will make
19
- # 'current_user', 'params', 'controller_name' and 'action_name' helper methods
18
+ # 'params', 'controller_name' and 'action_name' helper methods
20
19
  # available on the CustomerParameters instace.
21
20
  def permitted_params(options = {})
22
21
  parameter_class = permitted_params_class(options[:class])
23
- @permitted_params ||= parameter_class.new(params, options[:locals])
22
+ @permitted_params ||= parameter_class.new(params)
24
23
  end
25
24
 
26
25
  # permitted_params_class: Returns a Parameters class.
27
26
  #
28
27
  # == Options
29
28
  #
30
- # * <tt>options[:class]</tt> - Symbol value with the name of the Parameters class you want to use.
29
+ # * <tt>class_name</tt> - Symbol value with the name of the Parameters class you want to use.
31
30
  #
32
31
  # == Examples
33
32
  #
34
- # permitted_params_class(class: :customer) # called from PeopleController
35
- # # => CustomerParameters
33
+ # permitted_params_class(:customer) # called from PeopleController
34
+ # # => CustomerParameters
36
35
  #
37
- # permitted_params_class(class: :customers) # called from PeopleController
38
- # # => CustomersParameters
36
+ # permitted_params_class(:customers) # called from PeopleController
37
+ # # => CustomerParameters
39
38
  #
40
- # permitted_params_class() # called from PeopleController
39
+ # permitted_params_class() # called from PeopleController
41
40
  # # => PersonParameters
42
41
  def permitted_params_class(class_name = nil)
43
42
  class_name = class_name || params[:controller].to_s.singularize
@@ -1,3 +1,3 @@
1
1
  module ActionParameter
2
- VERSION = "0.0.1".freeze
2
+ VERSION = "0.0.2".freeze
3
3
  end
@@ -2,7 +2,7 @@ Description:
2
2
  Explain the generator
3
3
 
4
4
  Example:
5
- rails generate parameter Thing
5
+ rails generate parameters Thing
6
6
 
7
7
  This will create:
8
8
  what/will/it/create
@@ -1,10 +1,10 @@
1
1
  require 'rails/generators'
2
2
  require 'rails/generators/named_base'
3
3
 
4
- class ParameterGenerator < Rails::Generators::NamedBase
4
+ class ParametersGenerator < Rails::Generators::NamedBase
5
5
  source_root File.expand_path('../templates', __FILE__)
6
6
 
7
- def parameter
7
+ def parameters
8
8
  template "parameter_class.rb", "app/parameters/#{name.underscore}_parameters.rb"
9
9
  end
10
10
 
@@ -14,7 +14,7 @@ class UsersController < ApplicationController
14
14
  end
15
15
 
16
16
  def permitted_params_with_locals
17
- permitted_params(locals: { current_user: 'user'})
17
+ permitted_params.locals(current_user: 'user')
18
18
  render nothing: true
19
19
  end
20
20
 
data/test/test_helper.rb CHANGED
@@ -1,3 +1,6 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
3
+
1
4
  require 'bundler'
2
5
 
3
6
  Bundler.setup
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: action_parameter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ezequiel Delpero
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-08 00:00:00.000000000 Z
11
+ date: 2013-12-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -57,7 +57,10 @@ executables: []
57
57
  extensions: []
58
58
  extra_rdoc_files: []
59
59
  files:
60
+ - .coveralls.yml
60
61
  - .gitignore
62
+ - .travis.yml
63
+ - CHANGELOG.md
61
64
  - Gemfile
62
65
  - MIT-LICENSE
63
66
  - README.md
@@ -69,9 +72,9 @@ files:
69
72
  - lib/action_parameter/helpers.rb
70
73
  - lib/action_parameter/railtie.rb
71
74
  - lib/action_parameter/version.rb
72
- - lib/generators/parameter/USAGE
73
- - lib/generators/parameter/parameter_generator.rb
74
- - lib/generators/parameter/templates/parameter_class.rb
75
+ - lib/generators/parameters/USAGE
76
+ - lib/generators/parameters/parameters_generator.rb
77
+ - lib/generators/parameters/templates/parameter_class.rb
75
78
  - test/action_parameter_test.rb
76
79
  - test/test_helper.rb
77
80
  homepage: https://github.com/edelpero/action_parameter