rails_com 1.2.1 → 1.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +165 -0
- data/README.md +18 -26
- data/Rakefile +6 -9
- data/app/assets/config/rails_com_manifest.js +2 -0
- data/app/assets/javascripts/controllers/active_storage_ext/videos/show.ready.js +1 -0
- data/app/assets/javascripts/rails_com/common.js +3 -0
- data/app/assets/javascripts/rails_com/fetch_xhr_script.js +3 -2
- data/app/assets/stylesheets/controllers/active_storage_ext/videos/show.css +7 -0
- data/app/assets/stylesheets/controllers/active_storage_ext/videos/transfer.css +4 -0
- data/app/controllers/active_storage/attachments_controller.rb +13 -0
- data/app/controllers/active_storage_ext/videos_controller.rb +25 -0
- data/app/controllers/concerns/the_common_api.rb +7 -1
- data/app/helpers/rails_com/active_helper.rb +14 -10
- data/app/helpers/rails_com/assets_helper.rb +40 -14
- data/app/helpers/rails_com/format_helper.rb +37 -0
- data/app/models/state_machine.rb +10 -6
- data/app/views/active_storage/attachments/_image_item.html.erb +6 -0
- data/app/views/active_storage/attachments/_list.html.erb +28 -0
- data/app/views/active_storage/attachments/_list_edit.html.erb +25 -0
- data/app/views/active_storage/attachments/_list_form.html.erb +28 -0
- data/app/views/active_storage/attachments/_video_item.html.erb +6 -0
- data/app/views/active_storage/attachments/destroy.js.erb +1 -0
- data/app/views/active_storage_ext/videos/show.html.erb +6 -0
- data/app/views/kaminari/_next_page.html.erb +1 -1
- data/app/views/kaminari/_prev_page.html.erb +1 -1
- data/app/views/shared/_error_messages.html.erb +1 -1
- data/config/locales/en.yml +5 -0
- data/config/locales/zh.yml +5 -0
- data/config/routes.rb +10 -5
- data/lib/assets/javascripts/input-attachment.js +83 -22
- data/lib/mina/git2.rb +59 -0
- data/lib/rails_com.rb +22 -12
- data/lib/rails_com/config.rb +3 -1
- data/lib/rails_com/core_ext/array.rb +35 -17
- data/lib/rails_com/core_ext/date.rb +24 -0
- data/lib/rails_com/core_ext/numeric.rb +11 -0
- data/lib/rails_com/core_ext/string.rb +15 -0
- data/lib/rails_com/engine.rb +23 -11
- data/lib/rails_com/{controller_helper.rb → helpers/controller_helper.rb} +0 -20
- data/lib/rails_com/{model_helper.rb → helpers/model_helper.rb} +3 -3
- data/lib/rails_com/{controllers.rb → meta/controllers.rb} +0 -0
- data/lib/rails_com/{models.rb → meta/models.rb} +1 -0
- data/lib/rails_com/{routes.rb → meta/routes.rb} +9 -0
- data/lib/rails_com/rails_ext/activestorage_attached.rb +5 -5
- data/lib/rails_com/rails_ext/attachment_transfer.rb +40 -0
- data/lib/rails_com/rails_ext/named_base.rb +9 -0
- data/lib/rails_com/rails_ext/template_renderer.rb +18 -1
- data/lib/rails_com/rails_ext/video_response.rb +28 -0
- data/lib/{utils → rails_com/utils}/ip_helper.rb +0 -0
- data/lib/rails_com/{helpers → utils}/jobber.rb +0 -0
- data/lib/rails_com/utils/num_helper.rb +45 -0
- data/lib/rails_com/{setting.rb → utils/setting.rb} +0 -0
- data/lib/rails_com/utils/time_helper.rb +58 -0
- data/lib/rails_com/{helpers → utils}/uid_helper.rb +0 -0
- data/lib/rails_com/version.rb +1 -1
- data/lib/templates/erb/scaffold/_form.html.erb.tt +2 -2
- data/lib/templates/erb/scaffold/index.html.erb.tt +21 -13
- data/lib/templates/erb/scaffold/show.html.erb.tt +14 -5
- data/lib/templates/rails/scaffold_controller/api_controller.rb.tt +48 -0
- data/lib/templates/rails/scaffold_controller/controller.rb.tt +16 -15
- metadata +45 -35
- data/MIT-LICENSE +0 -20
- data/app/controllers/common_controller.rb +0 -10
- data/app/controllers/the_guards_controller.rb +0 -18
- data/app/helpers/rails_com/common_helper.rb +0 -13
- data/app/views/the_guards/index.html.erb +0 -18
- data/lib/utils/time_helper.rb +0 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c54bcd9f05cfb6a9d5b1199c293866a7076a44522650d2801594567de4c10126
|
4
|
+
data.tar.gz: f41944cdcac6ff2100ff828f32892ee528ff5cc365a9dd9ececedfa8b0b94a02
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 422d7410cbd9d0511506ff8a6ffcfe80151fe2319515a88386ed6d084bda156d138b98827b3fa6ef01212029cf4aa319337a3760a39ed923b3dae807370dfcdc
|
7
|
+
data.tar.gz: 4ef5503d7a5987eae283234e681a6b8e10a0c2bdd1be62f538f5cfbb749f645b817ab52d6e146c5e902a2b94d7d1abd66f91a1183a0a46a5f71f34ff07bb0084
|
data/LICENSE
ADDED
@@ -0,0 +1,165 @@
|
|
1
|
+
GNU LESSER GENERAL PUBLIC LICENSE
|
2
|
+
Version 3, 29 June 2007
|
3
|
+
|
4
|
+
Copyright (C) 2018 Mingyuan Qin.
|
5
|
+
Everyone is permitted to copy and distribute verbatim copies
|
6
|
+
of this license document, but changing it is not allowed.
|
7
|
+
|
8
|
+
|
9
|
+
This version of the GNU Lesser General Public License incorporates
|
10
|
+
the terms and conditions of version 3 of the GNU General Public
|
11
|
+
License, supplemented by the additional permissions listed below.
|
12
|
+
|
13
|
+
0. Additional Definitions.
|
14
|
+
|
15
|
+
As used herein, "this License" refers to version 3 of the GNU Lesser
|
16
|
+
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
17
|
+
General Public License.
|
18
|
+
|
19
|
+
"The Library" refers to a covered work governed by this License,
|
20
|
+
other than an Application or a Combined Work as defined below.
|
21
|
+
|
22
|
+
An "Application" is any work that makes use of an interface provided
|
23
|
+
by the Library, but which is not otherwise based on the Library.
|
24
|
+
Defining a subclass of a class defined by the Library is deemed a mode
|
25
|
+
of using an interface provided by the Library.
|
26
|
+
|
27
|
+
A "Combined Work" is a work produced by combining or linking an
|
28
|
+
Application with the Library. The particular version of the Library
|
29
|
+
with which the Combined Work was made is also called the "Linked
|
30
|
+
Version".
|
31
|
+
|
32
|
+
The "Minimal Corresponding Source" for a Combined Work means the
|
33
|
+
Corresponding Source for the Combined Work, excluding any source code
|
34
|
+
for portions of the Combined Work that, considered in isolation, are
|
35
|
+
based on the Application, and not on the Linked Version.
|
36
|
+
|
37
|
+
The "Corresponding Application Code" for a Combined Work means the
|
38
|
+
object code and/or source code for the Application, including any data
|
39
|
+
and utility programs needed for reproducing the Combined Work from the
|
40
|
+
Application, but excluding the System Libraries of the Combined Work.
|
41
|
+
|
42
|
+
1. Exception to Section 3 of the GNU GPL.
|
43
|
+
|
44
|
+
You may convey a covered work under sections 3 and 4 of this License
|
45
|
+
without being bound by section 3 of the GNU GPL.
|
46
|
+
|
47
|
+
2. Conveying Modified Versions.
|
48
|
+
|
49
|
+
If you modify a copy of the Library, and, in your modifications, a
|
50
|
+
facility refers to a function or data to be supplied by an Application
|
51
|
+
that uses the facility (other than as an argument passed when the
|
52
|
+
facility is invoked), then you may convey a copy of the modified
|
53
|
+
version:
|
54
|
+
|
55
|
+
a) under this License, provided that you make a good faith effort to
|
56
|
+
ensure that, in the event an Application does not supply the
|
57
|
+
function or data, the facility still operates, and performs
|
58
|
+
whatever part of its purpose remains meaningful, or
|
59
|
+
|
60
|
+
b) under the GNU GPL, with none of the additional permissions of
|
61
|
+
this License applicable to that copy.
|
62
|
+
|
63
|
+
3. Object Code Incorporating Material from Library Header Files.
|
64
|
+
|
65
|
+
The object code form of an Application may incorporate material from
|
66
|
+
a header file that is part of the Library. You may convey such object
|
67
|
+
code under terms of your choice, provided that, if the incorporated
|
68
|
+
material is not limited to numerical parameters, data structure
|
69
|
+
layouts and accessors, or small macros, inline functions and templates
|
70
|
+
(ten or fewer lines in length), you do both of the following:
|
71
|
+
|
72
|
+
a) Give prominent notice with each copy of the object code that the
|
73
|
+
Library is used in it and that the Library and its use are
|
74
|
+
covered by this License.
|
75
|
+
|
76
|
+
b) Accompany the object code with a copy of the GNU GPL and this license
|
77
|
+
document.
|
78
|
+
|
79
|
+
4. Combined Works.
|
80
|
+
|
81
|
+
You may convey a Combined Work under terms of your choice that,
|
82
|
+
taken together, effectively do not restrict modification of the
|
83
|
+
portions of the Library contained in the Combined Work and reverse
|
84
|
+
engineering for debugging such modifications, if you also do each of
|
85
|
+
the following:
|
86
|
+
|
87
|
+
a) Give prominent notice with each copy of the Combined Work that
|
88
|
+
the Library is used in it and that the Library and its use are
|
89
|
+
covered by this License.
|
90
|
+
|
91
|
+
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
92
|
+
document.
|
93
|
+
|
94
|
+
c) For a Combined Work that displays copyright notices during
|
95
|
+
execution, include the copyright notice for the Library among
|
96
|
+
these notices, as well as a reference directing the user to the
|
97
|
+
copies of the GNU GPL and this license document.
|
98
|
+
|
99
|
+
d) Do one of the following:
|
100
|
+
|
101
|
+
0) Convey the Minimal Corresponding Source under the terms of this
|
102
|
+
License, and the Corresponding Application Code in a form
|
103
|
+
suitable for, and under terms that permit, the user to
|
104
|
+
recombine or relink the Application with a modified version of
|
105
|
+
the Linked Version to produce a modified Combined Work, in the
|
106
|
+
manner specified by section 6 of the GNU GPL for conveying
|
107
|
+
Corresponding Source.
|
108
|
+
|
109
|
+
1) Use a suitable shared library mechanism for linking with the
|
110
|
+
Library. A suitable mechanism is one that (a) uses at run time
|
111
|
+
a copy of the Library already present on the user's computer
|
112
|
+
system, and (b) will operate properly with a modified version
|
113
|
+
of the Library that is interface-compatible with the Linked
|
114
|
+
Version.
|
115
|
+
|
116
|
+
e) Provide Installation Information, but only if you would otherwise
|
117
|
+
be required to provide such information under section 6 of the
|
118
|
+
GNU GPL, and only to the extent that such information is
|
119
|
+
necessary to install and execute a modified version of the
|
120
|
+
Combined Work produced by recombining or relinking the
|
121
|
+
Application with a modified version of the Linked Version. (If
|
122
|
+
you use option 4d0, the Installation Information must accompany
|
123
|
+
the Minimal Corresponding Source and Corresponding Application
|
124
|
+
Code. If you use option 4d1, you must provide the Installation
|
125
|
+
Information in the manner specified by section 6 of the GNU GPL
|
126
|
+
for conveying Corresponding Source.)
|
127
|
+
|
128
|
+
5. Combined Libraries.
|
129
|
+
|
130
|
+
You may place library facilities that are a work based on the
|
131
|
+
Library side by side in a single library together with other library
|
132
|
+
facilities that are not Applications and are not covered by this
|
133
|
+
License, and convey such a combined library under terms of your
|
134
|
+
choice, if you do both of the following:
|
135
|
+
|
136
|
+
a) Accompany the combined library with a copy of the same work based
|
137
|
+
on the Library, uncombined with any other library facilities,
|
138
|
+
conveyed under the terms of this License.
|
139
|
+
|
140
|
+
b) Give prominent notice with the combined library that part of it
|
141
|
+
is a work based on the Library, and explaining where to find the
|
142
|
+
accompanying uncombined form of the same work.
|
143
|
+
|
144
|
+
6. Revised Versions of the GNU Lesser General Public License.
|
145
|
+
|
146
|
+
The Free Software Foundation may publish revised and/or new versions
|
147
|
+
of the GNU Lesser General Public License from time to time. Such new
|
148
|
+
versions will be similar in spirit to the present version, but may
|
149
|
+
differ in detail to address new problems or concerns.
|
150
|
+
|
151
|
+
Each version is given a distinguishing version number. If the
|
152
|
+
Library as you received it specifies that a certain numbered version
|
153
|
+
of the GNU Lesser General Public License "or any later version"
|
154
|
+
applies to it, you have the option of following the terms and
|
155
|
+
conditions either of that published version or of any later version
|
156
|
+
published by the Free Software Foundation. If the Library as you
|
157
|
+
received it does not specify a version number of the GNU Lesser
|
158
|
+
General Public License, you may choose any version of the GNU Lesser
|
159
|
+
General Public License ever published by the Free Software Foundation.
|
160
|
+
|
161
|
+
If the Library as you received it specifies that a proxy can decide
|
162
|
+
whether future versions of the GNU Lesser General Public License shall
|
163
|
+
apply, that proxy's public statement of acceptance of any version is
|
164
|
+
permanent authorization for you to choose that version for the
|
165
|
+
Library.
|
data/README.md
CHANGED
@@ -1,38 +1,30 @@
|
|
1
1
|
# RailsCom
|
2
|
-
Rails
|
2
|
+
Rails 通用基础库
|
3
3
|
|
4
|
-
##
|
5
|
-
Add this line to your application's Gemfile:
|
6
|
-
|
7
|
-
```ruby
|
8
|
-
gem 'rails_com'
|
9
|
-
```
|
10
|
-
|
11
|
-
And then execute:
|
12
|
-
```bash
|
13
|
-
$ bundle
|
14
|
-
```
|
15
|
-
|
16
|
-
Or install it yourself as:
|
17
|
-
```bash
|
18
|
-
$ gem install rails_com
|
19
|
-
```
|
20
|
-
## Features
|
4
|
+
## 说明
|
21
5
|
* examples: puma, configs etc.
|
22
6
|
* rails and ruby core extension;
|
23
7
|
* methods deal rails model/controller/routes etc.
|
24
8
|
* some helpers, for generator uuid based on time and more;
|
25
9
|
|
26
|
-
|
10
|
+
## Module
|
11
|
+
* Ruby core extension
|
12
|
+
* Rails meta information: Controller/Model/Routes
|
13
|
+
* Rails core extension
|
14
|
+
- ActiveStorage sync with url
|
15
|
+
- ActiveStorage copy to mirror
|
16
|
+
* Utils
|
17
|
+
- UidHelper
|
18
|
+
- TimeHelper
|
19
|
+
- Jobber
|
20
|
+
- IpHelper
|
21
|
+
|
22
|
+
### Locals support
|
23
|
+
|
27
24
|
```erb
|
28
|
-
<%=
|
29
|
-
<i class="translate icon"></i>
|
30
|
-
<% end %>
|
25
|
+
<%= render 'shared/locales' %>
|
31
26
|
```
|
32
27
|
|
33
28
|
|
34
|
-
## Contributing
|
35
|
-
Contribution directions go here.
|
36
|
-
|
37
29
|
## License
|
38
|
-
The gem is available as open source under the terms of the [
|
30
|
+
The gem is available as open source under the terms of the [LGPL License](https://opensource.org/licenses/LGPL-3.0).
|
data/Rakefile
CHANGED
@@ -4,26 +4,23 @@ rescue LoadError
|
|
4
4
|
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
5
|
end
|
6
6
|
|
7
|
+
require 'sdoc'
|
7
8
|
require 'rdoc/task'
|
8
9
|
|
9
|
-
RDoc::Task.new(:
|
10
|
-
rdoc.rdoc_dir = '
|
11
|
-
rdoc.title
|
12
|
-
rdoc.options << '--
|
10
|
+
RDoc::Task.new(:sdoc) do |rdoc|
|
11
|
+
rdoc.rdoc_dir = 'docs'
|
12
|
+
rdoc.title = 'RailsCom'
|
13
|
+
rdoc.options << '--format=sdoc'
|
14
|
+
rdoc.template = 'rails'
|
13
15
|
rdoc.rdoc_files.include('README.md')
|
14
16
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
17
|
end
|
16
18
|
|
17
19
|
APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
|
18
20
|
load 'rails/tasks/engine.rake'
|
19
|
-
|
20
|
-
|
21
21
|
load 'rails/tasks/statistics.rake'
|
22
22
|
|
23
|
-
|
24
|
-
|
25
23
|
require 'bundler/gem_tasks'
|
26
|
-
|
27
24
|
require 'rake/testtask'
|
28
25
|
|
29
26
|
Rake::TestTask.new(:test) do |t|
|
@@ -0,0 +1 @@
|
|
1
|
+
//# require video.js/dist/video.js
|
@@ -24,6 +24,9 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
24
24
|
document.addEventListener('turbolinks:load', function() {
|
25
25
|
timeForLocalized()
|
26
26
|
});
|
27
|
+
document.addEventListener('turbolinks:visit', function() {
|
28
|
+
timeForLocalized()
|
29
|
+
});
|
27
30
|
|
28
31
|
document.addEventListener('turbolinks:request-start', function(event) {
|
29
32
|
var xhr = event.data.xhr;
|
@@ -2,12 +2,13 @@ function fetch_xhr_script(url, params){
|
|
2
2
|
var default_params = {
|
3
3
|
credentials: 'include',
|
4
4
|
headers: {
|
5
|
-
|
5
|
+
Accept: 'application/javascript',
|
6
6
|
'X-CSRF-Token': document.head.querySelector("[name=csrf-token]").content
|
7
7
|
}
|
8
8
|
};
|
9
|
+
var _params = Object.assign(default_params, params)
|
9
10
|
|
10
|
-
fetch(url,
|
11
|
+
fetch(url, _params).then(function(response) {
|
11
12
|
return response.text();
|
12
13
|
}).then(function(text) {
|
13
14
|
var script = document.createElement('script');
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class ActiveStorage::AttachmentsController < ActiveStorage::BaseController
|
2
|
+
before_action :set_attachment, only: [:destroy]
|
3
|
+
|
4
|
+
def destroy
|
5
|
+
@attachment.purge
|
6
|
+
end
|
7
|
+
|
8
|
+
private
|
9
|
+
def set_attachment
|
10
|
+
@attachment = ActiveStorage::Attachment.find(params[:id])
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class ActiveStorageExt::VideosController < RailsCom.config.app_class.constantize
|
2
|
+
before_action :set_video, only: [:show, :transfer]
|
3
|
+
before_action do
|
4
|
+
ActiveStorage::Current.host = request.base_url
|
5
|
+
end
|
6
|
+
|
7
|
+
def show
|
8
|
+
expires_in ActiveStorage::Blob.service.url_expires_in
|
9
|
+
end
|
10
|
+
|
11
|
+
def transfer
|
12
|
+
attached = @attachment.transfer_faststart
|
13
|
+
@video = attached.blob
|
14
|
+
|
15
|
+
flash[:notice] = 'well done!'
|
16
|
+
render 'show'
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
def set_video
|
21
|
+
@attachment = ActiveStorage::Attachment.find(params[:id])
|
22
|
+
@video = @attachment.blob
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -5,10 +5,10 @@ module TheCommonApi
|
|
5
5
|
rescue_from 'ActiveRecord::RecordNotFound' do |exp|
|
6
6
|
render json: { error: exp.message, backtrace: exp.backtarce }, status: :not_found
|
7
7
|
end
|
8
|
+
|
8
9
|
# rescue_from 'StandardError' do |exp|
|
9
10
|
# render json: { error: exp.message, backtrace: exp.backtrace }, status: 500
|
10
11
|
# end
|
11
|
-
after_action :wrap_body
|
12
12
|
end
|
13
13
|
|
14
14
|
def process_errors(model)
|
@@ -18,6 +18,7 @@ module TheCommonApi
|
|
18
18
|
}, status: 200
|
19
19
|
end
|
20
20
|
|
21
|
+
# used after_action :warp_body
|
21
22
|
def wrap_body
|
22
23
|
if self.response.media_type == 'application/json'
|
23
24
|
begin
|
@@ -29,4 +30,9 @@ module TheCommonApi
|
|
29
30
|
end
|
30
31
|
end
|
31
32
|
|
33
|
+
# process_js
|
34
|
+
def process_js
|
35
|
+
|
36
|
+
end
|
37
|
+
|
32
38
|
end
|
@@ -21,12 +21,13 @@ module RailsCom::ActiveHelper
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
#
|
25
|
-
#
|
24
|
+
# paths: active_helper paths: '/work/employees' or active_helper paths: ['/work/employees']
|
25
|
+
# controllers: active_helper controllers: 'xxx' or active_helper controllers: ['xxx1', 'admin/xxx2']
|
26
|
+
# modules: active_helper modules: 'admin/oa'
|
26
27
|
# action: active_helper 'work/employee': ['index', 'show']
|
27
28
|
# params: active_params state: 'xxx'
|
28
29
|
# active_helper controller: 'users', action: 'show', id: 371
|
29
|
-
def active_helper(paths: [], controllers: [], active_class: 'item active', item_class: 'item', **options)
|
30
|
+
def active_helper(paths: [], controllers: [], modules: [], active_class: 'item active', item_class: 'item', **options)
|
30
31
|
check_parameters = options.delete(:check_parameters)
|
31
32
|
|
32
33
|
if paths.present?
|
@@ -39,10 +40,17 @@ module RailsCom::ActiveHelper
|
|
39
40
|
return active_class if (Array(controllers) & [controller_name, controller_path]).size > 0
|
40
41
|
end
|
41
42
|
|
43
|
+
if modules.present?
|
44
|
+
this_modules = controller_path.split('/')
|
45
|
+
this_modules.pop
|
46
|
+
_this_modules = this_modules.map.with_index { |_, index| this_modules[0, index + 1].join('/') }
|
47
|
+
return active_class if (Array(modules) & _this_modules).size > 0
|
48
|
+
end
|
49
|
+
|
42
50
|
return active_class if options.present? && current_page?(options)
|
43
51
|
|
44
52
|
options.select { |k, _| [controller_name, controller_path].include?(k.to_s) }.each do |_, value|
|
45
|
-
return active_class if value.include?(action_name)
|
53
|
+
return active_class if Array(value).include?(action_name)
|
46
54
|
end
|
47
55
|
|
48
56
|
item_class
|
@@ -62,22 +70,18 @@ module RailsCom::ActiveHelper
|
|
62
70
|
except = options.delete(:except)
|
63
71
|
only = options.delete(:only)
|
64
72
|
query = ActionController::Parameters.new(request.GET)
|
73
|
+
query.merge!(options)
|
65
74
|
|
66
75
|
if only
|
67
76
|
query = query.permit(only)
|
68
77
|
else
|
69
78
|
excepts = []
|
70
|
-
|
71
|
-
excepts += except
|
72
|
-
elsif except.present?
|
73
|
-
excepts << except
|
74
|
-
end
|
79
|
+
excepts += (Array(except).map(&:to_s) & request.GET.keys)
|
75
80
|
excepts += ['commit', 'utf8', 'page']
|
76
81
|
|
77
82
|
query = query.permit!.except(*excepts)
|
78
83
|
end
|
79
84
|
|
80
|
-
query.merge!(options)
|
81
85
|
query.reject! { |_, value| value.blank? }
|
82
86
|
query
|
83
87
|
end
|