mr_common 1.2.0 → 1.3.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 +4 -4
- data/README.md +10 -2
- data/app/controllers/mr_common/registrations/export_controller.rb +4 -1
- data/app/models/concerns/mr_common/csv_exportable.rb +2 -11
- data/app/models/mr_common/csv_exporter.rb +35 -0
- data/app/models/mr_common/default_csv_export_adapter.rb +23 -0
- data/lib/mr_common/version.rb +1 -1
- data/spec/dummy/log/development.log +797 -0
- data/spec/dummy/log/test.log +704 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ba/bA8hAXQKANJzBTuQbpIP80FrF8klqsuYOtwuosQ4c5M.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/F2/F20HIwdY1_oIp6GrPRxocFAmMMtPNn05JWkUM0eiloY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LT/LTto-AZOGT_7LqZRJJlYVLaZXme34JlW6i5YO1-hrGU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/M-/m-gYrUz1942LmvKayV1K_Do9TtnA6UvVY_7yHHSxBTY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/PE/pEFyHpYnSNZ7VFg7gEphAXtD136lqFr1bvNrjOVmGLw.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/PF/pfcazMoEPzIlvi6vy1SWeojc3_EkULHyrhNJIbgLTXg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cg/Cg9p5LkxKD-IRPNf-k1yZ_HWd6ZX3JzR0yWQ985G0ZU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/f4/F4dxUCWat3Nq8_1jItIFx4nkOhrAiNFEtQDOTQXbbQI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/iD/IdsFsTMyyW-5MqmBEcAYJWX01RqeThhknBeeEHP_x3Y.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/iD/iddALNcjHFMWIbupLvJ9nEWVgsAlQRi6N-dimttO4lU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/iI/iIBc8Ww_W04keUlRNdzPYMs398pQYMiqA8A7fh5g2hQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/n0/N0766whV3_I5PD4CDMXdk9UJd5IHi129OMooZK4kGtU.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vP/Vp6TmwPplvA0CbnC7GxMNgD6E2vUKJsrefNNq-2cX48.cache +1 -0
- data/spec/dummy/tmp/pids/server.pid +1 -1
- metadata +30 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e0885e32d5643b86e1da2fe11974a06eb9c5a327fd82bd7bebcf8d85484e8ef
|
4
|
+
data.tar.gz: 0e20a6e34659744854a5ed28eac632c92c4b5f7d969ad201d8fa31e31a21944a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a1070f2831e2216c89b387e6a1fa4c0c0e88519f2d01a0fd93af120cefeeabeed64fc40fe572fbf809c67610f93f86dcbf8936f288b9ced626dc6be1a22cd48e
|
7
|
+
data.tar.gz: 3af9a459afe31200e94a344ac87299f9b09bc3c6a2d2e30156e7ae61a21bcb3dc0ded109747ac462db7a34c87c3120841bdac00219f340e946c10ac7dc4deac7
|
data/README.md
CHANGED
@@ -10,6 +10,8 @@ Common utilities extracted from starter-reg-site for use elsewhere
|
|
10
10
|
* MrCommon::Concerns::CSVExportable - include to add `.as_csv` to any ActiveRecord model
|
11
11
|
|
12
12
|
## Installation
|
13
|
+
Ensure devise is installed and a User class defines the instance method `mr_common_admin?`
|
14
|
+
|
13
15
|
Add to Gemfile
|
14
16
|
|
15
17
|
```ruby
|
@@ -24,10 +26,16 @@ mount MrCommon::Engine, at: '/common'
|
|
24
26
|
# If you plan to use the default registration model,
|
25
27
|
# set the host app's root route to the default registration
|
26
28
|
# form, and override the the templates. (See MrCommon::Reminder for more instructions )
|
27
|
-
|
29
|
+
root to: "mr_common/registrations/public#new"
|
30
|
+
```
|
31
|
+
|
32
|
+
Generate view overrides in the host project
|
33
|
+
|
34
|
+
```
|
35
|
+
$ bin/rails g mr_common:views
|
28
36
|
```
|
29
37
|
|
30
|
-
Configure initializer
|
38
|
+
Configure an initializer if you need different values than the defaults listed here
|
31
39
|
```ruby
|
32
40
|
# config/initializers/mr_common.rb
|
33
41
|
MrCommon.base_controller_name = "::ApplicationController"
|
@@ -4,7 +4,10 @@ module MrCommon
|
|
4
4
|
module Registrations
|
5
5
|
class ExportController < BaseController
|
6
6
|
def index
|
7
|
-
send_data
|
7
|
+
send_data(
|
8
|
+
Registration.as_csv(format_rules: Registration.try(:csv_format_rules)),
|
9
|
+
filename: "Registrations-#{Date.today}.csv"
|
10
|
+
)
|
8
11
|
end
|
9
12
|
end
|
10
13
|
end
|
@@ -5,17 +5,8 @@ module MrCommon
|
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
7
|
class_methods do
|
8
|
-
def as_csv
|
9
|
-
|
10
|
-
csv << csv_column_names
|
11
|
-
all.each do |item|
|
12
|
-
csv << item.attributes.values_at(*csv_column_names)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def csv_column_names
|
18
|
-
column_names
|
8
|
+
def as_csv(adapter: nil, format_rules: nil)
|
9
|
+
CSVExporter.new(self, adapter: adapter, format_rules: format_rules).generate_csv
|
19
10
|
end
|
20
11
|
end
|
21
12
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module MrCommon
|
4
|
+
class CSVExporter
|
5
|
+
attr_reader :exportable
|
6
|
+
attr_reader :adapter
|
7
|
+
attr_reader :format_rules
|
8
|
+
|
9
|
+
def initialize(exportable, adapter: nil, format_rules: nil)
|
10
|
+
@exportable = exportable
|
11
|
+
@adapter = adapter ? adapter.new(exportable) : DefaultCSVExportAdapter.new(exportable)
|
12
|
+
@format_rules = format_rules || {}
|
13
|
+
end
|
14
|
+
|
15
|
+
def generate_csv
|
16
|
+
CSV.generate do |csv|
|
17
|
+
csv << adapter.headers
|
18
|
+
|
19
|
+
adapter.collection.each do |item|
|
20
|
+
row = adapter.row_from_item(item)
|
21
|
+
csv << format_row(row)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def format_row(row)
|
27
|
+
format_rules.each do |column_name, proc|
|
28
|
+
idx = adapter.headers.index(column_name.to_s)
|
29
|
+
row[idx] = proc.call(row[idx])
|
30
|
+
end
|
31
|
+
|
32
|
+
row
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module MrCommon
|
4
|
+
class DefaultCSVExportAdapter
|
5
|
+
attr_reader :exportable
|
6
|
+
|
7
|
+
def initialize(exportable)
|
8
|
+
@exportable = exportable
|
9
|
+
end
|
10
|
+
|
11
|
+
def collection
|
12
|
+
exportable.all
|
13
|
+
end
|
14
|
+
|
15
|
+
def row_from_item(item)
|
16
|
+
item.attributes.values_at(*headers)
|
17
|
+
end
|
18
|
+
|
19
|
+
def headers
|
20
|
+
exportable.column_names
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/mr_common/version.rb
CHANGED