strong_parameters_dsl 0.0.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 018dc2ab845cd370c8a1b4ebaec7975a00c8de1c
4
+ data.tar.gz: 1e2264d99089254a34ddd43e6bb14bf7140d9f7f
5
+ SHA512:
6
+ metadata.gz: 27c35b3882c4ea0d538266949889701b810d879ed89eb8f5d70f83a0f944a719a919ab7d9105c3ca2059244db1ebafc502837bf75ab7554f8b6c6513ffe4f915
7
+ data.tar.gz: 3319b8c977e50466945e58884be203352a9a8495f89d70baef671818ea7966efe66f289e8aebac57a813924de6bf4591da4d6a11d546f3031a95dc51e22f3767
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in strong_parameters_dsl.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Diego Salazar
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,51 @@
1
+ # StrongParametersDsl
2
+
3
+ The missing Rails controller class method that lets you declare your strong parameters.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'strong_parameters_dsl'
10
+
11
+ Or install it yourself as:
12
+
13
+ $ gem install strong_parameters_dsl
14
+
15
+ ## Usage
16
+
17
+ When Rails came out with [Strong Parameters](http://edgeapi.rubyonrails.org/classes/ActionController/StrongParameters.html) it just didn't feel Ruby enough.
18
+ This gem is a simple workaround that will let you declaratively define your strong parameters as you would your filters.
19
+
20
+ ```ruby
21
+ class UsersController < ActionController::Base
22
+ strong_params :user do
23
+ permit :name, :email, comments_attributes: [:comment, :post_id]
24
+ end
25
+ # ... or ...
26
+ strong_params :user, permit: [:name, :email, comments_attributes: [:comment, :post_id]]
27
+
28
+
29
+ def create
30
+ # the named param method is created based on the argument passed
31
+ # to the strong_params call
32
+ User.create user_params
33
+
34
+ ... rest of code ...
35
+ end
36
+ end
37
+ ```
38
+
39
+ The block passed to ```strong_params``` is evaluated in the context of the ActionController::Parameters instance that is returned by ```params```.
40
+ Or more specifically by the strongified instance returned by calling ```params.require(:some_key)```.
41
+
42
+ There is an issue regarding allowing arbitrary hashes in some keys which was [debated here](https://github.com/rails/rails/issues/9454#issuecomment-14167664).
43
+ The solution wasn't very neat but it could be added as an instance method on the Parameters instance and then used as part of this DSL. Ideas welcome.
44
+
45
+ ## Contributing
46
+
47
+ 1. Fork it
48
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
49
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
50
+ 4. Push to the branch (`git push origin my-new-feature`)
51
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,3 @@
1
+ module StrongParametersDsl
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,45 @@
1
+ require "strong_parameters_dsl/version"
2
+
3
+ module StrongParametersDsl
4
+ class Railtie < Rails::Railtie
5
+ initializer "strong_parameters_dsl.initializer" do |app|
6
+ ActionController::Base.class_eval do
7
+ # Examples
8
+ # ========
9
+ #
10
+ # class UsersController < ActionController::Base
11
+ # strong_params :user do
12
+ # permit :name, :email, comments_attributes: [:comment, :post_id]
13
+ # end
14
+ # ... or ...
15
+ # strong_params :user, permit: [name, :email, comments_attributes: [:comment, :post_id]]
16
+ #
17
+ #
18
+ # def create
19
+ # # the named param method is created based on the argument passed
20
+ # # to the strong_params call
21
+ # User.create user_params
22
+ #
23
+ # ... rest of code ...
24
+ # end
25
+ # end
26
+ #
27
+ def self.strong_params(name, options = {}, &block)
28
+ param_method_name = "#{name}_params".to_sym
29
+
30
+ define_method param_method_name do
31
+ strongified = params.require name
32
+
33
+ if block_given?
34
+ strongified.instance_exec &block
35
+ else
36
+ strongified.permit *Array(options[:permit])
37
+ end
38
+ end
39
+
40
+ private param_method_name
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'strong_parameters_dsl/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "strong_parameters_dsl"
8
+ spec.version = StrongParametersDsl::VERSION
9
+ spec.authors = ["Diego Salazar"]
10
+ spec.email = ["diego@greyrobot.com"]
11
+ spec.description = %q{Provides a light DSL for defining strong parameters in Rails controllers}
12
+ spec.summary = %q{Provides a light DSL for defining strong parameters in Rails controllers}
13
+ spec.homepage = "https://github.com/DiegoSalazar/StrongParametersDSL"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+ end
metadata ADDED
@@ -0,0 +1,80 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: strong_parameters_dsl
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Diego Salazar
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-11-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: Provides a light DSL for defining strong parameters in Rails controllers
42
+ email:
43
+ - diego@greyrobot.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - .gitignore
49
+ - Gemfile
50
+ - LICENSE.txt
51
+ - README.md
52
+ - Rakefile
53
+ - lib/strong_parameters_dsl.rb
54
+ - lib/strong_parameters_dsl/version.rb
55
+ - strong_parameters_dsl.gemspec
56
+ homepage: https://github.com/DiegoSalazar/StrongParametersDSL
57
+ licenses:
58
+ - MIT
59
+ metadata: {}
60
+ post_install_message:
61
+ rdoc_options: []
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - '>='
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ requirements: []
75
+ rubyforge_project:
76
+ rubygems_version: 2.0.3
77
+ signing_key:
78
+ specification_version: 4
79
+ summary: Provides a light DSL for defining strong parameters in Rails controllers
80
+ test_files: []