rails_stuff 0.1.0 → 0.2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 82159ba1a8b42ef1cea7d901d966408ae47dc832
4
- data.tar.gz: c4d212a0f28c39142139945488c73c7c5eb10eb4
3
+ metadata.gz: c06d5c2ac89db00eb5633892fdf69367b9e9ced5
4
+ data.tar.gz: f0ba6b7bf860d9bb0931f9b8cb547df9f016ba7b
5
5
  SHA512:
6
- metadata.gz: 767e814c2d06cc0ec03988d0a5a510edeba5407310a3d72c1592ff6e947fb4ee58adba0ad0efa6ee2d0e33a8fbd0d58c5a250a900d2fd5bbb766c7b067028443
7
- data.tar.gz: 49ce30b733a8a28ab71dcb6a7cafd496f74f391000f52ae9597be8605810564b781bfc838dff3f92ad8f60d922d6f8ecbf00a99d77390c929caf1a8d4bae3f60
6
+ metadata.gz: b51f09107487046881c04e942df7bb649471944cc50b99cba5d33209b1689957310671393034e74ca5d210252152bcf2992204eb0a8cdcf68200616211ba2f18
7
+ data.tar.gz: 0eb990db1e6304d7126c92bd8e6a8759fad4d4eb798a19c53ae75219fa58c0294dc1e60a086dc5f77d6cdde6894fb1e05be563da19d898735815e09d24ff8d71
data/CHANGELOG.md ADDED
@@ -0,0 +1,7 @@
1
+ ## 0.2.0
2
+
3
+ - Bypass block to `respond_with`.
4
+
5
+ - `url_for_keeping_params`
6
+
7
+ - `params.require_permitted`
data/README.md CHANGED
@@ -30,6 +30,10 @@ Collection of useful modules for Rails.
30
30
  - __[RedisStorage](#redisstorage)__
31
31
  Simple way to store collections in key-value storage. With scoping and
32
32
  key generation.
33
+ - __[StrongParameters](#strongparameters)__
34
+ `require_permitted` helper.
35
+ - __UrlFor__
36
+ `#url_for_keeping_params` merges passed options with request's query params.
33
37
 
34
38
  #### Helpers:
35
39
 
@@ -293,6 +297,16 @@ Model.next_id or Model.next_id(['composite', 'scope'])
293
297
  Model.reset_id_seq or Model.reset_id_seq(['composite', 'scope'])
294
298
  ```
295
299
 
300
+ ### StrongParameters
301
+
302
+ `#require_permitted` ensures that required values are scalar:
303
+
304
+ ```ruby
305
+ params.require_permitted(:access_token, :refresh_token)
306
+ # instead of
307
+ params.permit(:access_token, :refresh_token).require(:access_token, :refresh_token)
308
+ ```
309
+
296
310
  ### Helpers
297
311
 
298
312
  Include helper module into `ApplicationHelper`.
@@ -10,6 +10,8 @@ module RailsStuff
10
10
  -> { ResourcesController.kaminari! if defined?(::Kaminari) },
11
11
  ],
12
12
  sort_scope: -> { defined?(::HasScope) && :controller },
13
+ strong_parameters: -> { defined?(ActionController::Parameters) && :require },
14
+ url_for_keeping_params: -> { defined?(ActionDispatch::Routing) && :require },
13
15
  }
14
16
 
15
17
  class << self
@@ -34,12 +36,13 @@ module RailsStuff
34
36
  def setup_modules!
35
37
  modules_to_load = load_modules || MODULES.keys
36
38
  MODULES.slice(*modules_to_load).each do |m, (type, init)|
37
- m = const_get m.to_s.camelize
38
39
  case type.respond_to?(:call) ? type.call : type
39
40
  when :controller
40
- RailsStuff.base_controller.extend m
41
+ RailsStuff.base_controller.extend const_get(m.to_s.camelize)
41
42
  when :model
42
- RailsStuff.base_model.extend m
43
+ RailsStuff.base_model.extend const_get(m.to_s.camelize)
44
+ when :require
45
+ require "rails_stuff/#{m}"
43
46
  end
44
47
  init.try!(:call)
45
48
  end
@@ -6,25 +6,25 @@ module RailsStuff
6
6
  build_resource
7
7
  end
8
8
 
9
- def create(options = {})
9
+ def create(options = {}, &block)
10
10
  if create_resource
11
11
  options[:location] = after_save_url
12
12
  end
13
- respond_with(resource, options)
13
+ respond_with(resource, options, &block)
14
14
  end
15
15
 
16
- def update(options = {})
16
+ def update(options = {}, &block)
17
17
  if update_resource
18
18
  options[:location] = after_save_url
19
19
  end
20
- respond_with(resource, options)
20
+ respond_with(resource, options, &block)
21
21
  end
22
22
 
23
- def destroy(options = {})
23
+ def destroy(options = {}, &block)
24
24
  resource.destroy
25
25
  options[:location] = after_destroy_url
26
26
  flash_errors!
27
- respond_with(resource, options)
27
+ respond_with(resource, options, &block)
28
28
  end
29
29
  end
30
30
  end
@@ -0,0 +1,6 @@
1
+ ActionController::Parameters.class_eval do
2
+ # Permits and then checks all fields for presence.
3
+ def require_permitted(*fields)
4
+ permit(*fields).tap { |permitted| fields.each { |f| permitted.require(f) } }
5
+ end
6
+ end
@@ -0,0 +1,9 @@
1
+ ActionDispatch::Routing::UrlFor.class_eval do
2
+ # Safe way to generate url keeping params from request.
3
+ #
4
+ # It requires `request` to be present. Please don't use it in mailers
5
+ # or in other places where it's not supposed to.
6
+ def url_for_keeping_params(params)
7
+ url_for params: request.query_parameters.merge(params)
8
+ end
9
+ end
@@ -5,7 +5,7 @@ module RailsStuff
5
5
 
6
6
  module VERSION #:nodoc:
7
7
  MAJOR = 0
8
- MINOR = 1
8
+ MINOR = 2
9
9
  TINY = 0
10
10
  PRE = nil
11
11
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_stuff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Max Melentiev
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-09-11 00:00:00.000000000 Z
11
+ date: 2015-09-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -63,6 +63,7 @@ files:
63
63
  - ".rspec"
64
64
  - ".rubocop.yml"
65
65
  - ".travis.yml"
66
+ - CHANGELOG.md
66
67
  - Gemfile
67
68
  - LICENSE.txt
68
69
  - README.md
@@ -94,9 +95,11 @@ files:
94
95
  - lib/rails_stuff/resources_controller/sti_helpers.rb
95
96
  - lib/rails_stuff/sort_scope.rb
96
97
  - lib/rails_stuff/statusable.rb
98
+ - lib/rails_stuff/strong_parameters.rb
97
99
  - lib/rails_stuff/test_helpers/rails.rb
98
100
  - lib/rails_stuff/test_helpers/response.rb
99
101
  - lib/rails_stuff/types_tracker.rb
102
+ - lib/rails_stuff/url_for_keeping_params.rb
100
103
  - lib/rails_stuff/version.rb
101
104
  - rails_stuff.gemspec
102
105
  homepage: https://github.com/printercu/rails_stuff