Skip to content

Commit c8acfcd

Browse files
Proper Rails 5 Mime type check
1 parent 2790d03 commit c8acfcd

File tree

6 files changed

+18
-7
lines changed

6 files changed

+18
-7
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,8 @@ class UserMailer < ActionMailer::Base
205205
xlsx = render_to_string layout: false, handlers: [:axlsx], formats: [:xlsx], template: "users/export", locals: {users: users}
206206
attachment = Base64.encode64(xlsx)
207207
attachments["Users.xlsx"] = {mime_type: Mime[:xlsx], content: attachment, encoding: 'base64'}
208+
# For rails 4 use Mime::XLSX
209+
# attachments["Users.xlsx"] = {mime_type: Mime::XLSX, content: attachment, encoding: 'base64'}
208210
# self.instance_variable_set(:@_lookup_context, nil) # If attachments are rendered as content, try this and open an issue
209211
...
210212
end
@@ -244,6 +246,8 @@ class UserMailer < ActionMailer::Base
244246
def export(users)
245247
xlsx = render_to_string handlers: [:axlsx], formats: [:xlsx], template: "users/export", locals: {users: users}
246248
attachments["Users.xlsx"] = {mime_type: Mime[:xlsx], content: xlsx, encoding: 'base64'}
249+
# For Rails 4 use Mime::XLSX
250+
# attachments["Users.xlsx"] = {mime_type: Mime::XLSX, content: xlsx, encoding: 'base64'}
247251
# self.instance_variable_set(:@_lookup_context, nil) # If attachments are rendered as content, try this and open an issue
248252
...
249253
end

lib/axlsx_rails/action_controller.rb

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
require 'action_controller'
2-
unless defined? Mime[:xlsx]
3-
Mime::Type.register "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", :xlsx
2+
3+
if Rails.version.to_f >= 5
4+
unless Mime[:xlsx]
5+
Mime::Type.register "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", :xlsx
6+
end
7+
else
8+
unless defined? Mime::XLSX
9+
Mime::Type.register "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", :xlsx
10+
end
411
end
512

613
ActionController::Renderers.add :xlsx do |filename, options|
@@ -42,7 +49,7 @@
4249
options[:locals][:xlsx_use_shared_strings] = options.delete(:xlsx_use_shared_strings)
4350
end
4451

45-
mime = Mime[:xlsx]
52+
mime = Rails.version.to_f >= 5 ? Mime[:xlsx] : Mime::XLSX
4653
send_data render_to_string(options), :filename => file_name, :type => mime, :disposition => disposition
4754
end
4855

lib/axlsx_rails/template_handler.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module ActionView
33
module Template::Handlers
44
class AxlsxBuilder
55
def default_format
6-
Mime[:xlsx]
6+
Rails.version.to_f >= 5 ? Mime[:xlsx] : Mime::XLSX
77
end
88

99
def self.call(template)

spec/dummy/app/mailers/notifier.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ def instructions(user)
66

77
# normal syntax
88
xlsx = render_to_string handlers: [:axlsx], template: 'users/send_instructions', layout: false
9-
attachments["user_#{user.id}.xlsx"] = {mime_type: Mime[:xlsx], content: xlsx}
9+
attachments["user_#{user.id}.xlsx"] = {mime_type: Mime::XLSX, content: xlsx}
1010

1111
mail :to => user.email, :subject => 'Instructions'
1212
end

spec/dummy_4/app/mailers/notifier.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ def instructions(user)
66

77
# normal syntax
88
xlsx = render_to_string handlers: [:axlsx], template: 'users/send_instructions', layout: false, formats: [:xlsx]
9-
attachments["user_#{user.id}.xlsx"] = {mime_type: Mime[:xlsx], content: xlsx}
9+
attachments["user_#{user.id}.xlsx"] = {mime_type: Mime::XLSX, content: xlsx}
1010

1111
mail :to => user.email, :subject => 'Instructions'
1212
end

spec/spec_helper.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,5 +40,5 @@ class ExampleGroup
4040
end
4141

4242
def mime_type
43-
Mime[:xlsx]
43+
Rails.version.to_f >= 5 ? Mime[:xlsx] : Mime::XLSX
4444
end

0 commit comments

Comments
 (0)