rails-excel-reporter 0.1.0 → 0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cab2208fe66d4d978d2ee278824b4f763269c13e434d61b156499c76003886d1
4
- data.tar.gz: 7f5d12a44647eed1036c570cf5f0a4752e64382ef8b222fac512205f5258da7c
3
+ metadata.gz: 980f4f3ce34363580563962788c6d6066d88bca4c156d11bfc6a4305a9f23e03
4
+ data.tar.gz: 218cff5d4b639629b76e48262e17ec3ffe180c773c83b3ec7cd558a822129d1e
5
5
  SHA512:
6
- metadata.gz: bbfc84c48105979757adaff62eed4924e8520bfece1e22524f5e4c78e3bdb32a9fbd096902784482debb23a1aeef3021f85233b9cf9af5347484e516b1a63571
7
- data.tar.gz: 54c81b98c90949ea5c5fc791e9693ecf35942cf8c4e1d37f88961d8ce263e70a18372d7b0f1967c1183ccf1268d1ba63b49f187012ca603458ff37a4fa02e4f9
6
+ metadata.gz: 16418a929a485fd2e1215280024b0a366b6cefc65a08b9df506a5fff40cb255473ab6ae52fd28406cd19699e2ce44a0f8b1ac098e8691f201006ea7d31c5be24
7
+ data.tar.gz: 4acfa9b21a2f59426b7a19abb3471f960c4042f51eac7fb4fd4dd74356ed3f86ed28a3cbbf8dd5d9376bfe91e06b83dc161ed29feba7018cae4939a94b2581b8
data/Gemfile.lock CHANGED
@@ -1,10 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rails-excel-reporter (0.1.0)
5
- activesupport (~> 8.0)
4
+ rails-excel-reporter (0.2.0)
5
+ activesupport (>= 7.0)
6
6
  caxlsx (~> 4.0)
7
- rails (~> 8.0)
7
+ rails (>= 7.0)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Rails Excel Reporter
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/rails-excel-reporter.svg)](https://badge.fury.io/rb/rails-excel-reporter)
4
- [![Build Status](https://github.com/rails-excel-reporter/rails-excel-reporter/workflows/CI/badge.svg)](https://github.com/rails-excel-reporter/rails-excel-reporter/actions)
4
+ [![Build Status](https://github.com/EliSebastian/rails-excel-reporter/workflows/CI/badge.svg)](https://github.com/EliSebastian/rails-excel-reporter/actions)
5
5
 
6
6
  A Ruby gem that integrates seamlessly with Ruby on Rails to generate Excel reports (.xlsx format) using a simple DSL. Features include streaming for large datasets, custom styling, callbacks, and Rails helpers.
7
7
 
@@ -45,7 +45,7 @@ Create a report in `app/reports/`:
45
45
  ```ruby
46
46
  class UserReport < RailsExcelReporter::Base
47
47
  attributes :id, :name, :email, :created_at
48
-
48
+
49
49
  def created_at
50
50
  object.created_at.strftime("%Y-%m-%d")
51
51
  end
@@ -80,10 +80,10 @@ This creates `app/reports/user_report.rb` with the basic structure.
80
80
  class ProductReport < RailsExcelReporter::Base
81
81
  # Simple attributes
82
82
  attributes :id, :name, :price
83
-
83
+
84
84
  # Custom headers
85
85
  attributes :id, { name: :product_name, header: "Product Name" }, :price
86
-
86
+
87
87
  # Or use individual attribute method
88
88
  attribute :sku, header: "SKU Code"
89
89
  end
@@ -96,15 +96,15 @@ Override attribute methods to customize output:
96
96
  ```ruby
97
97
  class OrderReport < RailsExcelReporter::Base
98
98
  attributes :id, :customer_name, :total, :status
99
-
99
+
100
100
  def customer_name
101
101
  "#{object.customer.first_name} #{object.customer.last_name}"
102
102
  end
103
-
103
+
104
104
  def total
105
105
  "$#{object.total.round(2)}"
106
106
  end
107
-
107
+
108
108
  def status
109
109
  object.status.upcase
110
110
  end
@@ -139,7 +139,7 @@ Automatically handles large datasets with streaming:
139
139
  ```ruby
140
140
  class LargeDataReport < RailsExcelReporter::Base
141
141
  attributes :id, :name, :data
142
-
142
+
143
143
  # Customize streaming threshold (default: 1000)
144
144
  self.streaming_threshold = 5000
145
145
  end
@@ -157,7 +157,7 @@ Apply custom styles to headers and columns:
157
157
  ```ruby
158
158
  class StyledReport < RailsExcelReporter::Base
159
159
  attributes :id, :name, :email, :status
160
-
160
+
161
161
  # Header styling
162
162
  style :header, {
163
163
  bg_color: "4472C4",
@@ -165,13 +165,13 @@ class StyledReport < RailsExcelReporter::Base
165
165
  bold: true,
166
166
  font_size: 12
167
167
  }
168
-
168
+
169
169
  # Column-specific styling
170
170
  style :id, {
171
171
  alignment: { horizontal: :center },
172
172
  font_size: 10
173
173
  }
174
-
174
+
175
175
  style :status, {
176
176
  bold: true,
177
177
  bg_color: "E7E6E6"
@@ -186,19 +186,19 @@ Hook into the generation process:
186
186
  ```ruby
187
187
  class CallbackReport < RailsExcelReporter::Base
188
188
  attributes :id, :name, :email
189
-
189
+
190
190
  def before_render
191
191
  Rails.logger.info "Starting report generation at #{Time.current}"
192
192
  end
193
-
193
+
194
194
  def after_render
195
195
  Rails.logger.info "Report generated successfully"
196
196
  end
197
-
197
+
198
198
  def before_row(object)
199
199
  # Called before each row is processed
200
200
  end
201
-
201
+
202
202
  def after_row(object)
203
203
  # Called after each row is processed
204
204
  end
@@ -215,16 +215,16 @@ The gem provides several helper methods for controllers:
215
215
  class ReportsController < ApplicationController
216
216
  def download_users
217
217
  report = UserReport.new(User.all)
218
-
218
+
219
219
  # Simple download
220
220
  send_excel_report(report)
221
-
221
+
222
222
  # With custom filename
223
223
  send_excel_report(report, filename: "users_#{Date.current}.xlsx")
224
-
224
+
225
225
  # Stream large reports
226
226
  stream_excel_report(report)
227
-
227
+
228
228
  # Automatic streaming based on size
229
229
  excel_report_response(report)
230
230
  end
@@ -289,7 +289,7 @@ RailsExcelReporter.configure do |config|
289
289
  border: { style: :thin, color: "CCCCCC" }
290
290
  }
291
291
  }
292
-
292
+
293
293
  config.date_format = "%d/%m/%Y"
294
294
  config.streaming_threshold = 2000
295
295
  config.temp_directory = Rails.root.join("tmp", "reports")
@@ -344,7 +344,7 @@ The gem includes test helpers for easier testing:
344
344
  RSpec.describe UserReport do
345
345
  let(:users) { create_list(:user, 3) }
346
346
  let(:report) { UserReport.new(users) }
347
-
347
+
348
348
  describe "#to_xlsx" do
349
349
  it "generates Excel file" do
350
350
  xlsx_data = report.to_xlsx
@@ -352,7 +352,7 @@ RSpec.describe UserReport do
352
352
  expect(xlsx_data[0, 4]).to eq("PK\x03\x04") # ZIP signature
353
353
  end
354
354
  end
355
-
355
+
356
356
  describe "#filename" do
357
357
  it "generates appropriate filename" do
358
358
  expect(report.filename).to match(/user_report_\d{4}_\d{2}_\d{2}\.xlsx/)
@@ -381,11 +381,11 @@ bundle exec rspec --format documentation
381
381
  ```ruby
382
382
  class ProductReport < RailsExcelReporter::Base
383
383
  attributes :id, :name, :price, :category
384
-
384
+
385
385
  def price
386
386
  "$#{object.price.round(2)}"
387
387
  end
388
-
388
+
389
389
  def category
390
390
  object.category.name
391
391
  end
@@ -402,40 +402,40 @@ report.save_to("products.xlsx")
402
402
  ```ruby
403
403
  class SalesReport < RailsExcelReporter::Base
404
404
  attributes :date, :product, :quantity, :revenue, :profit
405
-
405
+
406
406
  style :header, {
407
407
  bg_color: "1F4E79",
408
408
  fg_color: "FFFFFF",
409
409
  bold: true,
410
410
  font_size: 14
411
411
  }
412
-
412
+
413
413
  style :revenue, {
414
414
  bg_color: "E2EFDA",
415
415
  alignment: { horizontal: :right }
416
416
  }
417
-
417
+
418
418
  style :profit, {
419
419
  bg_color: "FCE4D6",
420
420
  alignment: { horizontal: :right }
421
421
  }
422
-
422
+
423
423
  def date
424
424
  object.created_at.strftime("%Y-%m-%d")
425
425
  end
426
-
426
+
427
427
  def product
428
428
  object.product.name
429
429
  end
430
-
430
+
431
431
  def revenue
432
432
  "$#{object.revenue.round(2)}"
433
433
  end
434
-
434
+
435
435
  def profit
436
436
  "$#{object.profit.round(2)}"
437
437
  end
438
-
438
+
439
439
  def before_render
440
440
  Rails.logger.info "Generating sales report for #{collection.count} records"
441
441
  end
@@ -447,9 +447,9 @@ end
447
447
  ```ruby
448
448
  class MassiveDataReport < RailsExcelReporter::Base
449
449
  attributes :id, :data, :processed_at
450
-
450
+
451
451
  self.streaming_threshold = 10000
452
-
452
+
453
453
  def processed_at
454
454
  object.processed_at.strftime("%Y-%m-%d %H:%M:%S")
455
455
  end
@@ -464,7 +464,7 @@ end
464
464
  ## Requirements
465
465
 
466
466
  - Ruby 2.7+
467
- - Rails 6.0+
467
+ - Rails 7.0+
468
468
  - caxlsx ~> 4.0
469
469
 
470
470
  ## Contributing
@@ -479,7 +479,7 @@ end
479
479
 
480
480
  ```bash
481
481
  # Clone the repository
482
- git clone https://github.com/rails-excel-reporter/rails-excel-reporter.git
482
+ git clone https://github.com/EliSebastian/rails-excel-reporter.git
483
483
  cd rails-excel-reporter
484
484
 
485
485
  # Install dependencies
@@ -501,6 +501,6 @@ This gem is available as open source under the terms of the [MIT License](https:
501
501
 
502
502
  ## Support
503
503
 
504
- - **Issues**: [GitHub Issues](https://github.com/rails-excel-reporter/rails-excel-reporter/issues)
505
- - **Documentation**: [GitHub Wiki](https://github.com/rails-excel-reporter/rails-excel-reporter/wiki)
506
- - **Changelog**: [CHANGELOG.md](https://github.com/rails-excel-reporter/rails-excel-reporter/blob/main/CHANGELOG.md)
504
+ - **Issues**: [GitHub Issues](https://github.com/EliSebastian/rails-excel-reporter/issues)
505
+ - **Documentation**: [GitHub Wiki](https://github.com/EliSebastian/rails-excel-reporter/wiki)
506
+ - **Changelog**: [CHANGELOG.md](https://github.com/EliSebastian/rails-excel-reporter/blob/main/CHANGELOG.md)
@@ -1,3 +1,3 @@
1
1
  module RailsExcelReporter
2
- VERSION = '0.1.0'
2
+ VERSION = '0.3.0'
3
3
  end
@@ -22,9 +22,9 @@ Gem::Specification.new do |spec|
22
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
23
  spec.require_paths = ['lib']
24
24
 
25
- spec.add_dependency 'activesupport', '~> 8.0'
25
+ spec.add_dependency 'activesupport', '>= 7.0'
26
26
  spec.add_dependency 'caxlsx', '~> 4.0'
27
- spec.add_dependency 'rails', '~> 8.0'
27
+ spec.add_dependency 'rails', '>= 7.0'
28
28
 
29
29
  spec.add_development_dependency 'pry', '~> 0.14'
30
30
  spec.add_development_dependency 'rspec', '~> 3.0'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-excel-reporter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elí Sebastian Herrera Aguilar
@@ -14,16 +14,16 @@ dependencies:
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '8.0'
19
+ version: '7.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '8.0'
26
+ version: '7.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: caxlsx
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: rails
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '8.0'
47
+ version: '7.0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '8.0'
54
+ version: '7.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: pry
57
57
  requirement: !ruby/object:Gem::Requirement