rails_csv_renderer 0.2.1 → 0.2.2

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: be2a02e163df9e40eb13fc2a2f84f4037d1fb1bb
4
- data.tar.gz: 2995b56dbdfb98207f1ac9bfb9499e06813b3085
3
+ metadata.gz: 37c2f5e8053d5bbdf02851c4ea72453254d5b17b
4
+ data.tar.gz: 637653750d478b23e90decaa7d6f76b88df77e33
5
5
  SHA512:
6
- metadata.gz: e0c9a2506b68e27c5a67f17020c8a3b520319eb502fab0a7820233bc48c8641b8ddd95d35adb78411cd9eae6c2fa2003e061701c1304eba16a968679f572ad34
7
- data.tar.gz: 692e3b63fdfb9305055158a248b171edc0cfe134277a68dceba8d38f544129f88d1ba3fa846be98b48d55967e9d14ce70eb3c7e270f60335556c13f6c2c9920f
6
+ metadata.gz: 6fd346cb1a208a14b8c77e0840229556fea3d47506a7ac85f0dcb9d1532d047cf09f971f7e9c76ffad7a5bd85144b5f8d1c2e02544a3c0edfa7809ce81e0ee53
7
+ data.tar.gz: fcfc2a6acdb34a3e7e110569fe26f9fd4a9d0f5087b3039d4c294161d3a24ea72d72bc7aa4f9ec6ecb027beedf3587d9d695480e7e361cf262cca8d5c0b223ed
data/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.2
4
+ * Fix: show CSV header for empty Drapper collections(decorated AR collections)
5
+
3
6
  ## 0.2.1
4
7
 
5
8
  * Fix: init renderer
@@ -10,7 +10,7 @@ module RailsCsvRenderer
10
10
  csv_options = default_csv_options.merge(options[:csv_options] || {})
11
11
 
12
12
  if is_active_record?
13
- if !(model.respond_to?(:csv_header) || model.respond_to?(:csv_row)) || model.class_variable_defined?(:@@dynamic_generated_csv_methods)
13
+ if !(model.respond_to?(:csv_header) || model.method_defined?(:csv_row)) || model.class_variable_defined?(:@@dynamic_generated_csv_methods)
14
14
  define_csv_methods(options)
15
15
  end
16
16
  end
@@ -33,26 +33,41 @@ module RailsCsvRenderer
33
33
  columns = options[:columns] || model.column_names
34
34
 
35
35
  model.class_variable_set(:@@dynamic_generated_csv_methods, true)
36
- model.class_eval(%Q{
36
+ model.class_eval(%Q/
37
37
  class << self
38
38
  def csv_header
39
39
  ["#{ columns.map { |column_name| model.human_attribute_name(column_name) }.join('", "') }"]
40
40
  end
41
41
  end
42
- })
43
- model.class_eval(%Q{
42
+ /)
43
+ model.class_eval(%Q/
44
44
  def csv_row
45
45
  [#{ columns.join(', ') }]
46
46
  end
47
- })
47
+ /)
48
48
  end
49
49
 
50
50
  def is_active_record?
51
- is_a?(ActiveRecord::Relation) || (present? && first.is_a?(ActiveRecord::Base))
51
+ is_a?(ActiveRecord::Relation) ||
52
+ (present? && first.is_a?(ActiveRecord::Base)) ||
53
+ try(:decorator_class).respond_to?(:column_names)
52
54
  end
53
55
 
54
56
  def model
55
- @model ||= is_a?(ActiveRecord::Relation) ? klass : first.class
57
+ if is_active_record?
58
+ is_ar_array = ->(obj) { obj.present? && obj.first.is_a?(ActiveRecord::Base)}
59
+ is_drapper_collection = ->(obj) { try(:decorator_class) }
60
+
61
+ @model ||=
62
+ case self
63
+ when ActiveRecord::Relation
64
+ klass
65
+ when is_ar_array
66
+ first.class
67
+ when is_drapper_collection
68
+ decorator_class
69
+ end
70
+ end
56
71
  end
57
72
 
58
73
  def default_csv_options
@@ -1,3 +1,3 @@
1
1
  module RailsCsvRenderer
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_csv_renderer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dennis Sheleh