caxlsx_rails 0.6.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +97 -0
- data/Gemfile +53 -0
- data/Gemfile.lock +279 -0
- data/Gemfile.lock.4.2 +255 -0
- data/Gemfile.lock.5.1 +261 -0
- data/Gemfile.lock.5.2 +216 -0
- data/Guardfile +16 -0
- data/MIT-LICENSE +20 -0
- data/README.md +545 -0
- data/Rakefile +29 -0
- data/lib/axlsx_rails.rb +5 -0
- data/lib/axlsx_rails/action_controller.rb +68 -0
- data/lib/axlsx_rails/railtie.rb +16 -0
- data/lib/axlsx_rails/template_handler.rb +37 -0
- data/lib/axlsx_rails/version.rb +5 -0
- data/lib/caxlsx_rails.rb +3 -0
- data/lib/tasks/axlsx_rails_tasks.rake +4 -0
- data/spec/axlsx_builder_spec.rb +48 -0
- data/spec/axlsx_mailer_spec.rb +15 -0
- data/spec/axlsx_renderer_spec.rb +16 -0
- data/spec/axlsx_request_spec.rb +202 -0
- data/spec/ci.rb +15 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/assets/javascripts/application.js +15 -0
- data/spec/dummy/app/assets/stylesheets/application.css +13 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/controllers/home_controller.rb +54 -0
- data/spec/dummy/app/controllers/likes_controller.rb +18 -0
- data/spec/dummy/app/controllers/users_controller.rb +27 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/mailers/notifier.rb +14 -0
- data/spec/dummy/app/models/like.rb +3 -0
- data/spec/dummy/app/models/user.rb +10 -0
- data/spec/dummy/app/views/home/_cover_sheet.xlsx.axlsx +3 -0
- data/spec/dummy/app/views/home/index.html.erb +4 -0
- data/spec/dummy/app/views/home/index.xlsx.axlsx +8 -0
- data/spec/dummy/app/views/home/useheader.xlsx.axlsx +8 -0
- data/spec/dummy/app/views/home/withpartial.xlsx.axlsx +9 -0
- data/spec/dummy/app/views/layouts/application.html.erb +12 -0
- data/spec/dummy/app/views/likes/index.html.erb +17 -0
- data/spec/dummy/app/views/likes/index.xlsx.axlsx +7 -0
- data/spec/dummy/app/views/notifier/instructions.html.erb +14 -0
- data/spec/dummy/app/views/users/index.html.erb +23 -0
- data/spec/dummy/app/views/users/index.xlsx.axlsx +1 -0
- data/spec/dummy/app/views/users/respond_with.xlsx.axlsx +8 -0
- data/spec/dummy/app/views/users/send_instructions.xlsx.axlsx +5 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +70 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/database.yml +11 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +39 -0
- data/spec/dummy/config/environments/production.rb +69 -0
- data/spec/dummy/config/environments/test.rb +40 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/inflections.rb +15 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +8 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/config/routes.rb +14 -0
- data/spec/dummy/db/migrate/20120717192452_create_users.rb +12 -0
- data/spec/dummy/db/migrate/20121206210955_create_likes.rb +10 -0
- data/spec/dummy/db/schema.rb +32 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +25 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/dummy_4/Rakefile +6 -0
- data/spec/dummy_4/app/assets/javascripts/application.js +13 -0
- data/spec/dummy_4/app/assets/stylesheets/application.css +15 -0
- data/spec/dummy_4/app/controllers/application_controller.rb +5 -0
- data/spec/dummy_4/app/controllers/home_controller.rb +56 -0
- data/spec/dummy_4/app/controllers/likes_controller.rb +18 -0
- data/spec/dummy_4/app/controllers/users_controller.rb +27 -0
- data/spec/dummy_4/app/helpers/application_helper.rb +2 -0
- data/spec/dummy_4/app/mailers/notifier.rb +14 -0
- data/spec/dummy_4/app/models/like.rb +3 -0
- data/spec/dummy_4/app/models/user.rb +10 -0
- data/spec/dummy_4/app/views/home/_cover_sheet.xlsx.axlsx +3 -0
- data/spec/dummy_4/app/views/home/index.html.erb +4 -0
- data/spec/dummy_4/app/views/home/index.xlsx.axlsx +8 -0
- data/spec/dummy_4/app/views/home/only_html.html.erb +1 -0
- data/spec/dummy_4/app/views/home/useheader.xlsx.axlsx +8 -0
- data/spec/dummy_4/app/views/home/withpartial.xlsx.axlsx +9 -0
- data/spec/dummy_4/app/views/layouts/application.html.erb +12 -0
- data/spec/dummy_4/app/views/layouts/users.html.erb +12 -0
- data/spec/dummy_4/app/views/likes/index.html.erb +17 -0
- data/spec/dummy_4/app/views/likes/index.xlsx.axlsx +7 -0
- data/spec/dummy_4/app/views/notifier/instructions.html.erb +14 -0
- data/spec/dummy_4/app/views/notifier/instructions.txt.erb +6 -0
- data/spec/dummy_4/app/views/users/export.xlsx.axlsx +8 -0
- data/spec/dummy_4/app/views/users/index.html.erb +23 -0
- data/spec/dummy_4/app/views/users/index.xlsx.axlsx +1 -0
- data/spec/dummy_4/app/views/users/noaction.xlsx.axlsx +1 -0
- data/spec/dummy_4/app/views/users/respond_with.xlsx.axlsx +8 -0
- data/spec/dummy_4/app/views/users/send_instructions.xlsx.axlsx +5 -0
- data/spec/dummy_4/bin/bundle +3 -0
- data/spec/dummy_4/bin/rails +4 -0
- data/spec/dummy_4/bin/rake +4 -0
- data/spec/dummy_4/config.ru +4 -0
- data/spec/dummy_4/config/application.rb +23 -0
- data/spec/dummy_4/config/boot.rb +5 -0
- data/spec/dummy_4/config/database.yml +25 -0
- data/spec/dummy_4/config/environment.rb +5 -0
- data/spec/dummy_4/config/environments/development.rb +37 -0
- data/spec/dummy_4/config/environments/production.rb +83 -0
- data/spec/dummy_4/config/environments/test.rb +40 -0
- data/spec/dummy_4/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy_4/config/initializers/cookies_serializer.rb +3 -0
- data/spec/dummy_4/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy_4/config/initializers/inflections.rb +16 -0
- data/spec/dummy_4/config/initializers/mime_types.rb +4 -0
- data/spec/dummy_4/config/initializers/secret_token.rb +2 -0
- data/spec/dummy_4/config/initializers/session_store.rb +3 -0
- data/spec/dummy_4/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy_4/config/locales/en.yml +23 -0
- data/spec/dummy_4/config/routes.rb +17 -0
- data/spec/dummy_4/config/secrets.yml +22 -0
- data/spec/dummy_4/db/migrate/20120717192452_create_users.rb +12 -0
- data/spec/dummy_4/db/migrate/20121206210955_create_likes.rb +10 -0
- data/spec/dummy_4/db/schema.rb +32 -0
- data/spec/dummy_4/db/test.sqlite3 +0 -0
- data/spec/dummy_4/log/test.log +4652 -0
- data/spec/dummy_4/public/404.html +67 -0
- data/spec/dummy_4/public/422.html +67 -0
- data/spec/dummy_4/public/500.html +66 -0
- data/spec/dummy_4/public/favicon.ico +0 -0
- data/spec/dummy_5.0/Rakefile +6 -0
- data/spec/dummy_5.0/app/assets/javascripts/application.js +13 -0
- data/spec/dummy_5.0/app/assets/stylesheets/application.css +15 -0
- data/spec/dummy_5.0/app/controllers/application_controller.rb +5 -0
- data/spec/dummy_5.0/app/controllers/home_controller.rb +56 -0
- data/spec/dummy_5.0/app/controllers/likes_controller.rb +18 -0
- data/spec/dummy_5.0/app/controllers/users_controller.rb +37 -0
- data/spec/dummy_5.0/app/helpers/application_helper.rb +2 -0
- data/spec/dummy_5.0/app/mailers/notifier.rb +14 -0
- data/spec/dummy_5.0/app/models/like.rb +3 -0
- data/spec/dummy_5.0/app/models/user.rb +10 -0
- data/spec/dummy_5.0/app/views/home/_cover_sheet.xlsx.axlsx +3 -0
- data/spec/dummy_5.0/app/views/home/index.html.erb +4 -0
- data/spec/dummy_5.0/app/views/home/index.xlsx.axlsx +8 -0
- data/spec/dummy_5.0/app/views/home/only_html.html.erb +1 -0
- data/spec/dummy_5.0/app/views/home/useheader.xlsx.axlsx +8 -0
- data/spec/dummy_5.0/app/views/home/withpartial.xlsx.axlsx +9 -0
- data/spec/dummy_5.0/app/views/layouts/application.html.erb +12 -0
- data/spec/dummy_5.0/app/views/layouts/users.html.erb +12 -0
- data/spec/dummy_5.0/app/views/likes/index.html.erb +17 -0
- data/spec/dummy_5.0/app/views/likes/index.xlsx.axlsx +7 -0
- data/spec/dummy_5.0/app/views/notifier/instructions.html.erb +14 -0
- data/spec/dummy_5.0/app/views/notifier/instructions.txt.erb +6 -0
- data/spec/dummy_5.0/app/views/users/export.xlsx.axlsx +8 -0
- data/spec/dummy_5.0/app/views/users/index.html.erb +23 -0
- data/spec/dummy_5.0/app/views/users/index.xlsx.axlsx +1 -0
- data/spec/dummy_5.0/app/views/users/noaction.xlsx.axlsx +1 -0
- data/spec/dummy_5.0/app/views/users/respond_with.xlsx.axlsx +8 -0
- data/spec/dummy_5.0/app/views/users/send_instructions.xlsx.axlsx +5 -0
- data/spec/dummy_5.0/bin/bundle +3 -0
- data/spec/dummy_5.0/bin/rails +4 -0
- data/spec/dummy_5.0/bin/rake +4 -0
- data/spec/dummy_5.0/config.ru +4 -0
- data/spec/dummy_5.0/config/application.rb +23 -0
- data/spec/dummy_5.0/config/boot.rb +5 -0
- data/spec/dummy_5.0/config/database.yml +25 -0
- data/spec/dummy_5.0/config/environment.rb +5 -0
- data/spec/dummy_5.0/config/environments/development.rb +37 -0
- data/spec/dummy_5.0/config/environments/production.rb +83 -0
- data/spec/dummy_5.0/config/environments/test.rb +40 -0
- data/spec/dummy_5.0/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy_5.0/config/initializers/cookies_serializer.rb +3 -0
- data/spec/dummy_5.0/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy_5.0/config/initializers/inflections.rb +16 -0
- data/spec/dummy_5.0/config/initializers/mime_types.rb +4 -0
- data/spec/dummy_5.0/config/initializers/secret_token.rb +2 -0
- data/spec/dummy_5.0/config/initializers/session_store.rb +3 -0
- data/spec/dummy_5.0/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy_5.0/config/locales/en.yml +23 -0
- data/spec/dummy_5.0/config/routes.rb +17 -0
- data/spec/dummy_5.0/config/secrets.yml +22 -0
- data/spec/dummy_5.0/db/migrate/20120717192452_create_users.rb +12 -0
- data/spec/dummy_5.0/db/migrate/20121206210955_create_likes.rb +10 -0
- data/spec/dummy_5.0/db/schema.rb +31 -0
- data/spec/dummy_5.0/public/404.html +67 -0
- data/spec/dummy_5.0/public/422.html +67 -0
- data/spec/dummy_5.0/public/500.html +66 -0
- data/spec/dummy_5.0/public/favicon.ico +0 -0
- data/spec/dummy_5.1/Rakefile +6 -0
- data/spec/dummy_5.1/app/assets/javascripts/application.js +13 -0
- data/spec/dummy_5.1/app/assets/stylesheets/application.css +15 -0
- data/spec/dummy_5.1/app/controllers/application_controller.rb +5 -0
- data/spec/dummy_5.1/app/controllers/home_controller.rb +56 -0
- data/spec/dummy_5.1/app/controllers/likes_controller.rb +18 -0
- data/spec/dummy_5.1/app/controllers/users_controller.rb +37 -0
- data/spec/dummy_5.1/app/helpers/application_helper.rb +2 -0
- data/spec/dummy_5.1/app/mailers/notifier.rb +14 -0
- data/spec/dummy_5.1/app/models/like.rb +3 -0
- data/spec/dummy_5.1/app/models/user.rb +10 -0
- data/spec/dummy_5.1/app/views/home/_cover_sheet.xlsx.axlsx +3 -0
- data/spec/dummy_5.1/app/views/home/index.html.erb +4 -0
- data/spec/dummy_5.1/app/views/home/index.xlsx.axlsx +8 -0
- data/spec/dummy_5.1/app/views/home/only_html.html.erb +1 -0
- data/spec/dummy_5.1/app/views/home/useheader.xlsx.axlsx +8 -0
- data/spec/dummy_5.1/app/views/home/withpartial.xlsx.axlsx +9 -0
- data/spec/dummy_5.1/app/views/layouts/application.html.erb +12 -0
- data/spec/dummy_5.1/app/views/layouts/users.html.erb +12 -0
- data/spec/dummy_5.1/app/views/likes/index.html.erb +17 -0
- data/spec/dummy_5.1/app/views/likes/index.xlsx.axlsx +7 -0
- data/spec/dummy_5.1/app/views/notifier/instructions.html.erb +14 -0
- data/spec/dummy_5.1/app/views/notifier/instructions.txt.erb +6 -0
- data/spec/dummy_5.1/app/views/users/export.xlsx.axlsx +8 -0
- data/spec/dummy_5.1/app/views/users/index.html.erb +23 -0
- data/spec/dummy_5.1/app/views/users/index.xlsx.axlsx +1 -0
- data/spec/dummy_5.1/app/views/users/noaction.xlsx.axlsx +1 -0
- data/spec/dummy_5.1/app/views/users/respond_with.xlsx.axlsx +8 -0
- data/spec/dummy_5.1/app/views/users/send_instructions.xlsx.axlsx +5 -0
- data/spec/dummy_5.1/bin/bundle +3 -0
- data/spec/dummy_5.1/bin/rails +4 -0
- data/spec/dummy_5.1/bin/rake +4 -0
- data/spec/dummy_5.1/config.ru +4 -0
- data/spec/dummy_5.1/config/application.rb +23 -0
- data/spec/dummy_5.1/config/boot.rb +5 -0
- data/spec/dummy_5.1/config/database.yml +25 -0
- data/spec/dummy_5.1/config/environment.rb +5 -0
- data/spec/dummy_5.1/config/environments/development.rb +37 -0
- data/spec/dummy_5.1/config/environments/production.rb +83 -0
- data/spec/dummy_5.1/config/environments/test.rb +40 -0
- data/spec/dummy_5.1/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy_5.1/config/initializers/cookies_serializer.rb +3 -0
- data/spec/dummy_5.1/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy_5.1/config/initializers/inflections.rb +16 -0
- data/spec/dummy_5.1/config/initializers/mime_types.rb +4 -0
- data/spec/dummy_5.1/config/initializers/secret_token.rb +2 -0
- data/spec/dummy_5.1/config/initializers/session_store.rb +3 -0
- data/spec/dummy_5.1/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy_5.1/config/locales/en.yml +23 -0
- data/spec/dummy_5.1/config/routes.rb +17 -0
- data/spec/dummy_5.1/config/secrets.yml +22 -0
- data/spec/dummy_5.1/db/migrate/20120717192452_create_users.rb +12 -0
- data/spec/dummy_5.1/db/migrate/20121206210955_create_likes.rb +10 -0
- data/spec/dummy_5.1/db/schema.rb +31 -0
- data/spec/dummy_5.1/db/test.sqlite3 +0 -0
- data/spec/dummy_5.1/log/test.log +3645 -0
- data/spec/dummy_5.1/public/404.html +67 -0
- data/spec/dummy_5.1/public/422.html +67 -0
- data/spec/dummy_5.1/public/500.html +66 -0
- data/spec/dummy_5.1/public/favicon.ico +0 -0
- data/spec/dummy_5.2/Rakefile +6 -0
- data/spec/dummy_5.2/app/assets/javascripts/application.js +13 -0
- data/spec/dummy_5.2/app/assets/stylesheets/application.css +15 -0
- data/spec/dummy_5.2/app/controllers/application_controller.rb +5 -0
- data/spec/dummy_5.2/app/controllers/home_controller.rb +56 -0
- data/spec/dummy_5.2/app/controllers/likes_controller.rb +18 -0
- data/spec/dummy_5.2/app/controllers/users_controller.rb +37 -0
- data/spec/dummy_5.2/app/helpers/application_helper.rb +2 -0
- data/spec/dummy_5.2/app/mailers/notifier.rb +14 -0
- data/spec/dummy_5.2/app/models/like.rb +3 -0
- data/spec/dummy_5.2/app/models/user.rb +10 -0
- data/spec/dummy_5.2/app/views/home/_cover_sheet.xlsx.axlsx +3 -0
- data/spec/dummy_5.2/app/views/home/index.html.erb +4 -0
- data/spec/dummy_5.2/app/views/home/index.xlsx.axlsx +8 -0
- data/spec/dummy_5.2/app/views/home/only_html.html.erb +1 -0
- data/spec/dummy_5.2/app/views/home/useheader.xlsx.axlsx +8 -0
- data/spec/dummy_5.2/app/views/home/withpartial.xlsx.axlsx +9 -0
- data/spec/dummy_5.2/app/views/layouts/application.html.erb +12 -0
- data/spec/dummy_5.2/app/views/layouts/users.html.erb +12 -0
- data/spec/dummy_5.2/app/views/likes/index.html.erb +17 -0
- data/spec/dummy_5.2/app/views/likes/index.xlsx.axlsx +7 -0
- data/spec/dummy_5.2/app/views/notifier/instructions.html.erb +14 -0
- data/spec/dummy_5.2/app/views/notifier/instructions.txt.erb +6 -0
- data/spec/dummy_5.2/app/views/users/export.xlsx.axlsx +8 -0
- data/spec/dummy_5.2/app/views/users/index.html.erb +23 -0
- data/spec/dummy_5.2/app/views/users/index.xlsx.axlsx +1 -0
- data/spec/dummy_5.2/app/views/users/noaction.xlsx.axlsx +1 -0
- data/spec/dummy_5.2/app/views/users/respond_with.xlsx.axlsx +8 -0
- data/spec/dummy_5.2/app/views/users/send_instructions.xlsx.axlsx +5 -0
- data/spec/dummy_5.2/bin/bundle +3 -0
- data/spec/dummy_5.2/bin/rails +4 -0
- data/spec/dummy_5.2/bin/rake +4 -0
- data/spec/dummy_5.2/config.ru +4 -0
- data/spec/dummy_5.2/config/application.rb +23 -0
- data/spec/dummy_5.2/config/boot.rb +5 -0
- data/spec/dummy_5.2/config/database.yml +25 -0
- data/spec/dummy_5.2/config/environment.rb +5 -0
- data/spec/dummy_5.2/config/environments/development.rb +37 -0
- data/spec/dummy_5.2/config/environments/production.rb +83 -0
- data/spec/dummy_5.2/config/environments/test.rb +40 -0
- data/spec/dummy_5.2/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy_5.2/config/initializers/cookies_serializer.rb +3 -0
- data/spec/dummy_5.2/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy_5.2/config/initializers/inflections.rb +16 -0
- data/spec/dummy_5.2/config/initializers/mime_types.rb +4 -0
- data/spec/dummy_5.2/config/initializers/secret_token.rb +2 -0
- data/spec/dummy_5.2/config/initializers/session_store.rb +3 -0
- data/spec/dummy_5.2/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy_5.2/config/locales/en.yml +23 -0
- data/spec/dummy_5.2/config/routes.rb +17 -0
- data/spec/dummy_5.2/config/secrets.yml +22 -0
- data/spec/dummy_5.2/db/migrate/20120717192452_create_users.rb +12 -0
- data/spec/dummy_5.2/db/migrate/20121206210955_create_likes.rb +10 -0
- data/spec/dummy_5.2/db/schema.rb +31 -0
- data/spec/dummy_5.2/db/test.sqlite3 +0 -0
- data/spec/dummy_5.2/log/test.log +3645 -0
- data/spec/dummy_5.2/public/404.html +67 -0
- data/spec/dummy_5.2/public/422.html +67 -0
- data/spec/dummy_5.2/public/500.html +66 -0
- data/spec/dummy_5.2/public/favicon.ico +0 -0
- data/spec/dummy_5/db/test.sqlite3 +0 -0
- data/spec/dummy_5/log/test.log +3645 -0
- data/spec/dummy_6.0/Rakefile +6 -0
- data/spec/dummy_6.0/app/assets/javascripts/application.js +13 -0
- data/spec/dummy_6.0/app/assets/stylesheets/application.css +15 -0
- data/spec/dummy_6.0/app/controllers/application_controller.rb +5 -0
- data/spec/dummy_6.0/app/controllers/home_controller.rb +56 -0
- data/spec/dummy_6.0/app/controllers/likes_controller.rb +18 -0
- data/spec/dummy_6.0/app/controllers/users_controller.rb +37 -0
- data/spec/dummy_6.0/app/helpers/application_helper.rb +2 -0
- data/spec/dummy_6.0/app/mailers/notifier.rb +14 -0
- data/spec/dummy_6.0/app/models/like.rb +3 -0
- data/spec/dummy_6.0/app/models/user.rb +10 -0
- data/spec/dummy_6.0/app/views/home/_cover_sheet.xlsx.axlsx +3 -0
- data/spec/dummy_6.0/app/views/home/index.html.erb +4 -0
- data/spec/dummy_6.0/app/views/home/index.xlsx.axlsx +8 -0
- data/spec/dummy_6.0/app/views/home/only_html.html.erb +1 -0
- data/spec/dummy_6.0/app/views/home/useheader.xlsx.axlsx +8 -0
- data/spec/dummy_6.0/app/views/home/withpartial.xlsx.axlsx +9 -0
- data/spec/dummy_6.0/app/views/layouts/application.html.erb +12 -0
- data/spec/dummy_6.0/app/views/layouts/users.html.erb +12 -0
- data/spec/dummy_6.0/app/views/likes/index.html.erb +17 -0
- data/spec/dummy_6.0/app/views/likes/index.xlsx.axlsx +7 -0
- data/spec/dummy_6.0/app/views/notifier/instructions.html.erb +14 -0
- data/spec/dummy_6.0/app/views/notifier/instructions.txt.erb +6 -0
- data/spec/dummy_6.0/app/views/users/export.xlsx.axlsx +8 -0
- data/spec/dummy_6.0/app/views/users/index.html.erb +23 -0
- data/spec/dummy_6.0/app/views/users/index.xlsx.axlsx +1 -0
- data/spec/dummy_6.0/app/views/users/noaction.xlsx.axlsx +1 -0
- data/spec/dummy_6.0/app/views/users/respond_with.xlsx.axlsx +8 -0
- data/spec/dummy_6.0/app/views/users/send_instructions.xlsx.axlsx +5 -0
- data/spec/dummy_6.0/bin/bundle +3 -0
- data/spec/dummy_6.0/bin/rails +4 -0
- data/spec/dummy_6.0/bin/rake +4 -0
- data/spec/dummy_6.0/config.ru +4 -0
- data/spec/dummy_6.0/config/application.rb +23 -0
- data/spec/dummy_6.0/config/boot.rb +5 -0
- data/spec/dummy_6.0/config/database.yml +25 -0
- data/spec/dummy_6.0/config/environment.rb +5 -0
- data/spec/dummy_6.0/config/environments/development.rb +37 -0
- data/spec/dummy_6.0/config/environments/production.rb +83 -0
- data/spec/dummy_6.0/config/environments/test.rb +40 -0
- data/spec/dummy_6.0/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy_6.0/config/initializers/cookies_serializer.rb +3 -0
- data/spec/dummy_6.0/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy_6.0/config/initializers/inflections.rb +16 -0
- data/spec/dummy_6.0/config/initializers/mime_types.rb +4 -0
- data/spec/dummy_6.0/config/initializers/secret_token.rb +2 -0
- data/spec/dummy_6.0/config/initializers/session_store.rb +3 -0
- data/spec/dummy_6.0/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy_6.0/config/locales/en.yml +23 -0
- data/spec/dummy_6.0/config/routes.rb +17 -0
- data/spec/dummy_6.0/config/secrets.yml +22 -0
- data/spec/dummy_6.0/db/migrate/20120717192452_create_users.rb +12 -0
- data/spec/dummy_6.0/db/migrate/20121206210955_create_likes.rb +10 -0
- data/spec/dummy_6.0/db/schema.rb +31 -0
- data/spec/dummy_6.0/public/404.html +67 -0
- data/spec/dummy_6.0/public/422.html +67 -0
- data/spec/dummy_6.0/public/500.html +66 -0
- data/spec/dummy_6.0/public/favicon.ico +0 -0
- data/spec/reset_gems.sh +2 -0
- data/spec/spec_helper.rb +53 -0
- data/spec/test_3.1.sh +16 -0
- data/spec/test_3.2.sh +16 -0
- data/spec/test_4.0.sh +16 -0
- data/spec/test_4.1.sh +16 -0
- data/spec/test_4.2.sh +16 -0
- data/spec/test_5.0.sh +16 -0
- data/spec/test_5.1.sh +16 -0
- data/spec/test_5.2.sh +16 -0
- data/spec/test_6.0.sh +16 -0
- data/spec/test_all_rails.sh +8 -0
- data/spec/test_revert.sh +3 -0
- metadata +988 -0
data/Rakefile
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
begin
|
3
|
+
require 'bundler/setup'
|
4
|
+
rescue LoadError
|
5
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
6
|
+
end
|
7
|
+
begin
|
8
|
+
require 'rdoc/task'
|
9
|
+
rescue LoadError
|
10
|
+
require 'rdoc/rdoc'
|
11
|
+
require 'rake/rdoctask'
|
12
|
+
RDoc::Task = Rake::RDocTask
|
13
|
+
end
|
14
|
+
|
15
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
16
|
+
rdoc.rdoc_dir = 'rdoc'
|
17
|
+
rdoc.title = 'CaxlsxRails'
|
18
|
+
rdoc.options << '--line-numbers'
|
19
|
+
rdoc.rdoc_files.include('README.rdoc')
|
20
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
21
|
+
end
|
22
|
+
|
23
|
+
require "rspec/core/rake_task"
|
24
|
+
RSpec::Core::RakeTask.new('spec')
|
25
|
+
|
26
|
+
task :default => :spec
|
27
|
+
|
28
|
+
Bundler::GemHelper.install_tasks
|
29
|
+
|
data/lib/axlsx_rails.rb
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'action_controller'
|
4
|
+
|
5
|
+
if Rails.version.to_f >= 5
|
6
|
+
unless Mime[:xlsx]
|
7
|
+
Mime::Type.register 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', :xlsx
|
8
|
+
end
|
9
|
+
else
|
10
|
+
unless defined? Mime::XLSX
|
11
|
+
Mime::Type.register 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', :xlsx
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
ActionController::Renderers.add :xlsx do |filename, options|
|
16
|
+
#
|
17
|
+
# You can always specify a template:
|
18
|
+
#
|
19
|
+
# def called_action
|
20
|
+
# render xlsx: 'filename', template: 'controller/diff_action'
|
21
|
+
# end
|
22
|
+
#
|
23
|
+
# And the normal use case works:
|
24
|
+
#
|
25
|
+
# def called_action
|
26
|
+
# render 'diff_action'
|
27
|
+
# # or
|
28
|
+
# render 'controller/diff_action'
|
29
|
+
# end
|
30
|
+
#
|
31
|
+
options[:template] = filename.gsub(/^.*\//,'') if options[:template] == action_name
|
32
|
+
|
33
|
+
# force layout false
|
34
|
+
options[:layout] = false
|
35
|
+
|
36
|
+
# disposition / filename
|
37
|
+
disposition = options.delete(:disposition) || 'attachment'
|
38
|
+
file_name = options.delete(:filename) || "#{filename.gsub(/^.*\//,'')}.xlsx"
|
39
|
+
file_name = "#{file_name}.xlsx" unless file_name =~ /\.xlsx$/
|
40
|
+
|
41
|
+
# alternate settings
|
42
|
+
options[:locals] ||= {}
|
43
|
+
options[:locals][:xlsx_author] ||= options.delete(:xlsx_author)
|
44
|
+
options[:locals][:xlsx_created_at] ||= options.delete(:xlsx_created_at)
|
45
|
+
unless options[:locals][:xlsx_use_shared_strings]
|
46
|
+
options[:locals][:xlsx_use_shared_strings] = options.delete(:xlsx_use_shared_strings)
|
47
|
+
end
|
48
|
+
|
49
|
+
mime = Rails.version.to_f >= 5 ? Mime[:xlsx] : Mime::XLSX
|
50
|
+
send_data render_to_string(options), filename: file_name, type: mime, disposition: disposition
|
51
|
+
end
|
52
|
+
|
53
|
+
# For respond_to default
|
54
|
+
begin
|
55
|
+
ActionController::Responder
|
56
|
+
rescue
|
57
|
+
else
|
58
|
+
class ActionController::Responder
|
59
|
+
def to_xlsx
|
60
|
+
@_action_has_layout = false
|
61
|
+
if @default_response
|
62
|
+
@default_response.call(options)
|
63
|
+
else
|
64
|
+
controller.render({xlsx: controller.action_name}.merge(options))
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module AxlsxRails
|
4
|
+
class Railtie < Rails::Railtie
|
5
|
+
initializer 'axlsx_rails.initialization' do
|
6
|
+
ActiveSupport.on_load(:action_view) do
|
7
|
+
require 'axlsx_rails/template_handler'
|
8
|
+
ActionView::Template.register_template_handler :axlsx, ActionView::Template::Handlers::AxlsxBuilder.new
|
9
|
+
end
|
10
|
+
|
11
|
+
ActiveSupport.on_load(:action_controller) do
|
12
|
+
require 'axlsx_rails/action_controller'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'action_view'
|
4
|
+
require 'stringio'
|
5
|
+
|
6
|
+
module ActionView
|
7
|
+
module Template::Handlers
|
8
|
+
class AxlsxBuilder
|
9
|
+
|
10
|
+
def default_format
|
11
|
+
case
|
12
|
+
when Rails.version.to_f >= 6
|
13
|
+
Mime[:xlsx].symbol
|
14
|
+
when Rails.version.to_f >= 5
|
15
|
+
Mime[:xlsx]
|
16
|
+
else
|
17
|
+
Mime::XLSX
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def call(template, source = nil)
|
22
|
+
builder = StringIO.new
|
23
|
+
builder << "require 'axlsx';"
|
24
|
+
builder << "xlsx_author = defined?(xlsx_author).nil? ? nil : xlsx_author;"
|
25
|
+
builder << "xlsx_created_at = defined?(xlsx_created_at).nil? ? nil : xlsx_created_at;"
|
26
|
+
builder << "xlsx_use_shared_strings = defined?(xlsx_use_shared_strings).nil? ? nil : xlsx_use_shared_strings;"
|
27
|
+
builder << "xlsx_package = Axlsx::Package.new("
|
28
|
+
builder << ":author => xlsx_author,"
|
29
|
+
builder << ":created_at => xlsx_created_at,"
|
30
|
+
builder << ":use_shared_strings => xlsx_use_shared_strings);"
|
31
|
+
builder << (source || template.source)
|
32
|
+
builder << ";xlsx_package.to_stream.string;"
|
33
|
+
builder.string
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/lib/caxlsx_rails.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Axlsx template handler' do
|
4
|
+
|
5
|
+
AB = ActionView::Template::Handlers::AxlsxBuilder
|
6
|
+
VT = Struct.new(:source)
|
7
|
+
|
8
|
+
let( :handler ) { AB.new }
|
9
|
+
|
10
|
+
let( :template ) do
|
11
|
+
VT.new("wb = xlsx_package.workbook;\nwb.add_worksheet(name: 'Test') do |sheet|\n\tsheet.add_row ['one', 'two', 'three']\n\tsheet.add_row ['a', 'b', 'c']\nend\n")
|
12
|
+
end
|
13
|
+
|
14
|
+
context "Rails #{Rails.version}" do
|
15
|
+
# for testing if the author is set
|
16
|
+
# before do
|
17
|
+
# Rails.stub_chain(:application, :config, :axlsx_author).and_return( 'Elmer Fudd' )
|
18
|
+
# end
|
19
|
+
|
20
|
+
it "has xlsx format" do
|
21
|
+
if Rails::VERSION::MAJOR >= 6
|
22
|
+
expect(handler.default_format).to eq(mime_type.symbol)
|
23
|
+
else
|
24
|
+
expect(handler.default_format).to eq(mime_type)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
it "compiles to an excel spreadsheet when passing in a source" do
|
29
|
+
xlsx_package, wb = nil
|
30
|
+
source = "wb = xlsx_package.workbook;\nwb.add_worksheet(name: 'Test') do |sheet|\n\tsheet.add_row ['four', 'five', 'six']\n\tsheet.add_row ['d', 'e', 'f']\nend\n"
|
31
|
+
eval( AB.new.call template, source )
|
32
|
+
xlsx_package.serialize('/tmp/axlsx_temp.xlsx')
|
33
|
+
expect{ wb = Roo::Excelx.new('/tmp/axlsx_temp.xlsx') }.to_not raise_error
|
34
|
+
expect(wb.cell(2,3)).to eq('f')
|
35
|
+
end
|
36
|
+
|
37
|
+
it "compiles to an excel spreadsheet when inferring source from template " do
|
38
|
+
xlsx_package, wb = nil
|
39
|
+
eval( AB.new.call template )
|
40
|
+
xlsx_package.serialize('/tmp/axlsx_temp.xlsx')
|
41
|
+
expect{ wb = Roo::Excelx.new('/tmp/axlsx_temp.xlsx') }.to_not raise_error
|
42
|
+
expect(wb.cell(2,3)).to eq('c')
|
43
|
+
end
|
44
|
+
|
45
|
+
#TODO:
|
46
|
+
# Test if author field is set - does roo parse that?
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Mailer", type: :request do
|
4
|
+
before :each do
|
5
|
+
@user = User.create name: 'Elmer', last_name: 'Fudd', address: '1234 Somewhere, Over NY 11111', email: 'elmer@fudd.com'
|
6
|
+
end
|
7
|
+
|
8
|
+
it "attaches an xlsx file" do
|
9
|
+
visit "/users/#{@user.id}/send_instructions"
|
10
|
+
last_email = ActionMailer::Base.deliveries.last
|
11
|
+
expect(last_email.to).to eq([@user.email])
|
12
|
+
expect(last_email.attachments.first).to be
|
13
|
+
expect(last_email.attachments.first.content_type).to match(/#{mime_type}/)
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require'spec_helper'
|
2
|
+
|
3
|
+
describe 'Axlsx renderer' do
|
4
|
+
|
5
|
+
it "is registered" do
|
6
|
+
ActionController::Renderers::RENDERERS.include?(:xlsx)
|
7
|
+
end
|
8
|
+
|
9
|
+
it "has mime type" do
|
10
|
+
mime = mime_type
|
11
|
+
expect(mime).to be
|
12
|
+
expect(mime.to_sym).to eq(:xlsx)
|
13
|
+
expect(mime.to_s).to eq("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,202 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
describe 'Caxlsx request', :type => :request do
|
3
|
+
|
4
|
+
after(:each) do
|
5
|
+
if File.exists? '/tmp/caxlsx_temp.xlsx'
|
6
|
+
File.unlink '/tmp/caxlsx_temp.xlsx'
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
it "has a working dummy app" do
|
11
|
+
User.create name: 'Elmer', last_name: 'Fudd', address: '1234 Somewhere, Over NY 11111', email: 'elmer@fudd.com'
|
12
|
+
visit '/'
|
13
|
+
expect(page).to have_content("Hey, you")
|
14
|
+
end
|
15
|
+
|
16
|
+
it "downloads an excel file from default respond_to" do
|
17
|
+
visit '/home.xlsx'
|
18
|
+
expect(page.response_headers['Content-Type']).to eq(mime_type.to_s + "; charset=utf-8")
|
19
|
+
File.open('/tmp/caxlsx_temp.xlsx', 'w') {|f| f.write(page.source) }
|
20
|
+
wb = nil
|
21
|
+
expect{ wb = Roo::Excelx.new('/tmp/caxlsx_temp.xlsx') }.to_not raise_error
|
22
|
+
expect(wb.cell(2,1)).to eq('Untie!')
|
23
|
+
end
|
24
|
+
|
25
|
+
it "downloads an excel file from respond_to while specifying filename" do
|
26
|
+
visit '/useheader.xlsx'
|
27
|
+
|
28
|
+
expect(page.response_headers['Content-Type']).to eq(mime_type.to_s)
|
29
|
+
expect(page.response_headers['Content-Disposition']).to include("filename=\"filename_test.xlsx\"")
|
30
|
+
|
31
|
+
File.open('/tmp/caxlsx_temp.xlsx', 'w') {|f| f.write(page.source) }
|
32
|
+
wb = nil
|
33
|
+
expect{ wb = Roo::Excelx.new('/tmp/caxlsx_temp.xlsx') }.to_not raise_error
|
34
|
+
expect(wb.cell(2,1)).to eq('Untie!')
|
35
|
+
end
|
36
|
+
|
37
|
+
it "downloads an excel file from respond_to while specifying filename in direct format" do
|
38
|
+
visit '/useheader.xlsx?set_direct=true'
|
39
|
+
|
40
|
+
expect(page.response_headers['Content-Type']).to eq(mime_type.to_s + "; charset=utf-8")
|
41
|
+
expect(page.response_headers['Content-Disposition']).to include("filename=\"filename_test.xlsx\"")
|
42
|
+
|
43
|
+
File.open('/tmp/caxlsx_temp.xlsx', 'w') {|f| f.write(page.source) }
|
44
|
+
wb = nil
|
45
|
+
expect{ wb = Roo::Excelx.new('/tmp/caxlsx_temp.xlsx') }.to_not raise_error
|
46
|
+
expect(wb.cell(2,1)).to eq('Untie!')
|
47
|
+
end
|
48
|
+
|
49
|
+
it "downloads an excel file from render statement with filename" do
|
50
|
+
visit '/another.xlsx'
|
51
|
+
|
52
|
+
expect(page.response_headers['Content-Type']).to eq(mime_type)
|
53
|
+
expect(page.response_headers['Content-Disposition']).to include("filename=\"filename_test.xlsx\"")
|
54
|
+
|
55
|
+
File.open('/tmp/caxlsx_temp.xlsx', 'w') {|f| f.write(page.source) }
|
56
|
+
wb = nil
|
57
|
+
expect{ wb = Roo::Excelx.new('/tmp/caxlsx_temp.xlsx') }.to_not raise_error
|
58
|
+
expect(wb.cell(2,1)).to eq('Untie!')
|
59
|
+
end
|
60
|
+
|
61
|
+
it "downloads an excel file from acts_as_xlsx model" do
|
62
|
+
User.destroy_all
|
63
|
+
User.create name: 'Elmer', last_name: 'Fudd', address: '1234 Somewhere, Over NY 11111', email: 'elmer@fudd.com'
|
64
|
+
User.create name: 'Bugs', last_name: 'Bunny', address: '1234 Left Turn, Albuquerque NM 22222', email: 'bugs@bunny.com'
|
65
|
+
visit '/users.xlsx'
|
66
|
+
expect(page.response_headers['Content-Type']).to eq(mime_type.to_s + "; charset=utf-8")
|
67
|
+
File.open('/tmp/caxlsx_temp.xlsx', 'w') {|f| f.write(page.source) }
|
68
|
+
wb = nil
|
69
|
+
expect{ wb = Roo::Excelx.new('/tmp/caxlsx_temp.xlsx') }.to_not raise_error
|
70
|
+
expect(wb.cell(3,2)).to eq('Bugs')
|
71
|
+
end
|
72
|
+
|
73
|
+
it "downloads an excel file with partial" do
|
74
|
+
visit '/withpartial.xlsx'
|
75
|
+
expect(page.response_headers['Content-Type']).to eq(mime_type.to_s + "; charset=utf-8")
|
76
|
+
File.open('/tmp/caxlsx_temp.xlsx', 'w') {|f| f.write(page.source) }
|
77
|
+
wb = nil
|
78
|
+
expect{ wb = Roo::Excelx.new('/tmp/caxlsx_temp.xlsx') }.to_not raise_error
|
79
|
+
expect(wb.cell(1,1,wb.sheets[0])).to eq('Cover')
|
80
|
+
expect(wb.cell(2,1,wb.sheets[1])).to eq("Untie!")
|
81
|
+
end
|
82
|
+
|
83
|
+
it "handles nested resources" do
|
84
|
+
User.destroy_all
|
85
|
+
@user = User.create name: 'Bugs', last_name: 'Bunny', address: '1234 Left Turn, Albuquerque NM 22222', email: 'bugs@bunny.com'
|
86
|
+
@user.likes.create(:name => 'Carrots')
|
87
|
+
@user.likes.create(:name => 'Celery')
|
88
|
+
visit "/users/#{@user.id}/likes.xlsx"
|
89
|
+
expect(page.response_headers['Content-Type']).to eq(mime_type.to_s + "; charset=utf-8")
|
90
|
+
File.open('/tmp/caxlsx_temp.xlsx', 'w') {|f| f.write(page.source) }
|
91
|
+
wb = nil
|
92
|
+
expect{ wb = Roo::Excelx.new('/tmp/caxlsx_temp.xlsx') }.to_not raise_error
|
93
|
+
expect(wb.cell(1,1)).to eq('Bugs')
|
94
|
+
expect(wb.cell(2,1)).to eq('Carrots')
|
95
|
+
expect(wb.cell(3,1)).to eq('Celery')
|
96
|
+
end
|
97
|
+
|
98
|
+
it "handles reference to absolute paths" do
|
99
|
+
User.destroy_all
|
100
|
+
@user = User.create name: 'Bugs', last_name: 'Bunny', address: '1234 Left Turn, Albuquerque NM 22222', email: 'bugs@bunny.com'
|
101
|
+
visit "/users/#{@user.id}/render_elsewhere.xlsx"
|
102
|
+
expect(page.response_headers['Content-Type']).to eq(mime_type.to_s)
|
103
|
+
[[1,false],[3,true],[4,true],[5,false]].reverse.each do |s|
|
104
|
+
visit "/home/render_elsewhere.xlsx?type=#{s[0]}"
|
105
|
+
expect(page.response_headers['Content-Type']).to eq(mime_type.to_s + (s[1] ? "; charset=utf-8" : ''))
|
106
|
+
File.open('/tmp/caxlsx_temp.xlsx', 'w') {|f| f.write(page.source) }
|
107
|
+
wb = nil
|
108
|
+
expect{ wb = Roo::Excelx.new('/tmp/caxlsx_temp.xlsx') }.to_not raise_error
|
109
|
+
if s[0] == 5
|
110
|
+
expect(wb.cell(1,1)).to eq('Bad')
|
111
|
+
else
|
112
|
+
expect(wb.cell(2,2)).to eq('Bugs')
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
it "uses respond_with" do
|
118
|
+
User.destroy_all
|
119
|
+
@user = User.create name: 'Responder', last_name: 'Bunny', address: '1234 Right Turn, Albuquerque NM 22222', email: 'bugs@bunny.com'
|
120
|
+
visit "/users/#{@user.id}.xlsx"
|
121
|
+
expect {
|
122
|
+
visit "/users/#{@user.id}.xlsx"
|
123
|
+
}.to_not raise_error
|
124
|
+
File.open('/tmp/caxlsx_temp.xlsx', 'w') {|f| f.write(page.source) }
|
125
|
+
wb = nil
|
126
|
+
expect{ wb = Roo::Excelx.new('/tmp/caxlsx_temp.xlsx') }.to_not raise_error
|
127
|
+
expect(wb.cell(2,1)).to eq('Untie!')
|
128
|
+
end
|
129
|
+
|
130
|
+
it "ignores layout" do
|
131
|
+
User.destroy_all
|
132
|
+
@user = User.create name: 'Responder', last_name: 'Bunny', address: '1234 Right Turn, Albuquerque NM 22222', email: 'bugs@bunny.com'
|
133
|
+
expect {
|
134
|
+
visit "/users/export/#{@user.id}.xlsx"
|
135
|
+
}.to_not raise_error
|
136
|
+
File.open('/tmp/caxlsx_temp.xlsx', 'w') {|f| f.write(page.source) }
|
137
|
+
wb = nil
|
138
|
+
expect{ wb = Roo::Excelx.new('/tmp/caxlsx_temp.xlsx') }.to_not raise_error
|
139
|
+
expect(wb.cell(2,1)).to eq('Untie!')
|
140
|
+
end
|
141
|
+
|
142
|
+
unless Rails.version < '3.2'
|
143
|
+
it "handles missing format with render :xlsx" do
|
144
|
+
visit '/another'
|
145
|
+
|
146
|
+
expect(page.response_headers['Content-Type']).to eq(mime_type)
|
147
|
+
expect(page.response_headers['Content-Disposition']).to include("filename=\"filename_test.xlsx\"")
|
148
|
+
|
149
|
+
File.open('/tmp/caxlsx_temp.xlsx', 'w') {|f| f.write(page.source) }
|
150
|
+
wb = nil
|
151
|
+
# wb = Roo::Excelx.new('/tmp/caxlsx_temp.xlsx')
|
152
|
+
expect{ wb = Roo::Excelx.new('/tmp/caxlsx_temp.xlsx') }.to raise_error(Zip::ZipError)
|
153
|
+
# wb.cell(2,1).should == 'Untie!'
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
unless Rails.version < '4.0'
|
158
|
+
Capybara.register_driver :mime_all do |app|
|
159
|
+
Capybara::RackTest::Driver.new(app, headers: { 'HTTP_ACCEPT' => '*/*' })
|
160
|
+
end
|
161
|
+
|
162
|
+
def puts_def_formats(title)
|
163
|
+
puts "default formats #{title.ljust(30)}: #{ActionView::Base.default_formats}"
|
164
|
+
end
|
165
|
+
|
166
|
+
it "mime all with render :xlsx and then :html" do
|
167
|
+
# puts_def_formats 'before'
|
168
|
+
ActionView::Base.default_formats.delete :xlsx # see notes
|
169
|
+
# puts_def_formats 'in my project'
|
170
|
+
Capybara.current_driver = :mime_all
|
171
|
+
visit '/another'
|
172
|
+
# puts_def_formats 'after render xlsx with */*'
|
173
|
+
expect{
|
174
|
+
visit '/home/only_html'
|
175
|
+
}.to_not raise_error
|
176
|
+
ActionView::Base.default_formats.push :xlsx # see notes
|
177
|
+
|
178
|
+
# Output:
|
179
|
+
# default formats before : [:html, :text, :js, :css, :ics, :csv, :vcf, :png, :jpeg, :gif, :bmp, :tiff, :mpeg, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json, :pdf, :zip, :xlsx]
|
180
|
+
# default formats in my project : [:html, :text, :js, :css, :ics, :csv, :vcf, :png, :jpeg, :gif, :bmp, :tiff, :mpeg, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json, :pdf, :zip]
|
181
|
+
# default formats after render xlsx with */* : [:xlsx, :text, :js, :css, :ics, :csv, :vcf, :png, :jpeg, :gif, :bmp, :tiff, :mpeg, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json, :pdf, :zip]
|
182
|
+
|
183
|
+
# Failure/Error: visit '/home/only_html'
|
184
|
+
# ActionView::MissingTemplate:
|
185
|
+
# Missing template home/only_html, application/only_html with {:locale=>[:en], :formats=>[:xlsx, :text, :js, :css, :ics, :csv, :vcf, :png, :jpeg, :gif, :bmp, :tiff, :mpeg, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json, :pdf, :zip], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :axlsx]}.
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
189
|
+
if Rails::VERSION::MAJOR < 6
|
190
|
+
it "downloads an excel file when there is no action" do
|
191
|
+
User.destroy_all
|
192
|
+
User.create name: 'Elmer', last_name: 'Fudd', address: '1234 Somewhere, Over NY 11111', email: 'elmer@fudd.com'
|
193
|
+
User.create name: 'Bugs', last_name: 'Bunny', address: '1234 Left Turn, Albuquerque NM 22222', email: 'bugs@bunny.com'
|
194
|
+
visit '/users/noaction.xlsx'
|
195
|
+
expect(page.response_headers['Content-Type']).to eq(mime_type.to_s + "; charset=utf-8")
|
196
|
+
File.open('/tmp/caxlsx_temp.xlsx', 'w') {|f| f.write(page.source) }
|
197
|
+
wb = nil
|
198
|
+
expect{ wb = Roo::Excelx.new('/tmp/caxlsx_temp.xlsx') }.to_not raise_error
|
199
|
+
expect(wb.cell(3,2)).to eq('Bugs')
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|