exportable 0.1.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.
Files changed (56) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +7 -0
  3. data/.rspec +2 -0
  4. data/Gemfile +14 -0
  5. data/Gemfile.lock +144 -0
  6. data/MIT-LICENSE +20 -0
  7. data/README.md +104 -0
  8. data/Rakefile +31 -0
  9. data/bin/test +11 -0
  10. data/exportable.gemspec +27 -0
  11. data/lib/exportable.rb +23 -0
  12. data/lib/exportable/class_methods.rb +9 -0
  13. data/lib/exportable/export_methods.rb +14 -0
  14. data/lib/exportable/export_methods/csv_exporter.rb +33 -0
  15. data/lib/exportable/export_methods/xls_exporter.rb +44 -0
  16. data/lib/exportable/utils.rb +18 -0
  17. data/lib/exportable/version.rb +3 -0
  18. data/lib/tasks/exportable_tasks.rake +4 -0
  19. data/spec/dummy/Rakefile +6 -0
  20. data/spec/dummy/app/models/application_record.rb +3 -0
  21. data/spec/dummy/app/models/exportable_model.rb +4 -0
  22. data/spec/dummy/bin/bundle +3 -0
  23. data/spec/dummy/bin/rails +4 -0
  24. data/spec/dummy/bin/rake +4 -0
  25. data/spec/dummy/bin/setup +34 -0
  26. data/spec/dummy/bin/update +29 -0
  27. data/spec/dummy/config.ru +5 -0
  28. data/spec/dummy/config/application.rb +15 -0
  29. data/spec/dummy/config/boot.rb +5 -0
  30. data/spec/dummy/config/cable.yml +9 -0
  31. data/spec/dummy/config/database.yml +19 -0
  32. data/spec/dummy/config/environment.rb +5 -0
  33. data/spec/dummy/config/environments/test.rb +42 -0
  34. data/spec/dummy/config/initializers/application_controller_renderer.rb +6 -0
  35. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  36. data/spec/dummy/config/initializers/cookies_serializer.rb +5 -0
  37. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  38. data/spec/dummy/config/initializers/inflections.rb +16 -0
  39. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  40. data/spec/dummy/config/initializers/new_framework_defaults.rb +24 -0
  41. data/spec/dummy/config/initializers/session_store.rb +3 -0
  42. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  43. data/spec/dummy/config/locales/en.yml +23 -0
  44. data/spec/dummy/config/puma.rb +47 -0
  45. data/spec/dummy/config/routes.rb +3 -0
  46. data/spec/dummy/config/secrets.yml +22 -0
  47. data/spec/dummy/config/spring.rb +6 -0
  48. data/spec/dummy/db/migrate/20170107183658_create_exportable_models.rb +17 -0
  49. data/spec/dummy/db/schema.rb +30 -0
  50. data/spec/exportable/class_methods_spec.rb +15 -0
  51. data/spec/exportable/csv_exporter_spec.rb +69 -0
  52. data/spec/exportable/export_methods_spec.rb +31 -0
  53. data/spec/exportable/xls_exporter_spec.rb +56 -0
  54. data/spec/spec_helper.rb +128 -0
  55. data/spec/support/helper.rb +12 -0
  56. metadata +228 -0
@@ -0,0 +1,3 @@
1
+ Rails.application.routes.draw do
2
+ # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
3
+ end
@@ -0,0 +1,22 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Your secret key is used for verifying the integrity of signed cookies.
4
+ # If you change this key, all old signed cookies will become invalid!
5
+
6
+ # Make sure the secret is at least 30 characters and all random,
7
+ # no regular words or you'll be exposed to dictionary attacks.
8
+ # You can use `rails secret` to generate a secure secret key.
9
+
10
+ # Make sure the secrets in this file are kept private
11
+ # if you're sharing your code publicly.
12
+
13
+ development:
14
+ secret_key_base: 4ce50fce1f44058e3c8533978f8d1483506808dcf9e6356effc7c0884aa25d779d0dbb5fcd84a5dff4f6d52e9f3cadc25865563ff15b514500f2cee84d080883
15
+
16
+ test:
17
+ secret_key_base: 9d583a8db24b65f37d926d8608addce41ad44748c1f6365cab5fb70eb9d3d91bcdc55b4d4b03cd518a9f8f513dd960783e381475bede97812916472b38bcceb2
18
+
19
+ # Do not keep production secrets in the repository,
20
+ # instead read values from the environment.
21
+ production:
22
+ secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
@@ -0,0 +1,6 @@
1
+ %w(
2
+ .ruby-version
3
+ .rbenv-vars
4
+ tmp/restart.txt
5
+ tmp/caching-dev.txt
6
+ ).each { |path| Spring.watch(path) }
@@ -0,0 +1,17 @@
1
+ class CreateExportableModels < ActiveRecord::Migration[5.0]
2
+ def change
3
+ create_table :exportable_models do |t|
4
+ t.string :field_string
5
+ t.binary :field_binary
6
+ t.date :field_date
7
+ t.datetime :field_datetime
8
+ t.decimal :field_decimal
9
+ t.float :field_float
10
+ t.integer :field_integer
11
+ t.bigint :field_bigint
12
+ t.text :field_text
13
+ t.time :field_time
14
+ t.timestamps
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,30 @@
1
+ # This file is auto-generated from the current state of the database. Instead
2
+ # of editing this file, please use the migrations feature of Active Record to
3
+ # incrementally modify your database, and then regenerate this schema definition.
4
+ #
5
+ # Note that this schema.rb definition is the authoritative source for your
6
+ # database schema. If you need to create the application database on another
7
+ # system, you should be using db:schema:load, not running all the migrations
8
+ # from scratch. The latter is a flawed and unsustainable approach (the more migrations
9
+ # you'll amass, the slower it'll run and the greater likelihood for issues).
10
+ #
11
+ # It's strongly recommended that you check this file into your version control system.
12
+
13
+ ActiveRecord::Schema.define(version: 20170107183658) do
14
+
15
+ create_table "exportable_models", force: :cascade do |t|
16
+ t.string "field_string"
17
+ t.binary "field_binary"
18
+ t.date "field_date"
19
+ t.datetime "field_datetime"
20
+ t.decimal "field_decimal"
21
+ t.float "field_float"
22
+ t.integer "field_integer"
23
+ t.bigint "field_bigint"
24
+ t.text "field_text"
25
+ t.time "field_time"
26
+ t.datetime "created_at", null: false
27
+ t.datetime "updated_at", null: false
28
+ end
29
+
30
+ end
@@ -0,0 +1,15 @@
1
+ require "spec_helper"
2
+
3
+
4
+ describe Exportable::ClassMethods, type: :model do
5
+
6
+ before(:each) do
7
+ ExportableModel.create!(field_string: "sample string", field_text: "sample text", field_date: Date.today )
8
+ end
9
+
10
+ it "adds 'exportable' method to model" do
11
+ expect(ExportableModel.respond_to? 'exportable').to be_truthy
12
+ end
13
+
14
+
15
+ end
@@ -0,0 +1,69 @@
1
+ require "spec_helper"
2
+
3
+ describe 'Export CSV' do
4
+
5
+ before(:each) do
6
+ ExportableModel.create!(field_string: "sample string", field_text: "sample text", field_date: Date.today )
7
+ end
8
+
9
+ it "responds to export_csv" do
10
+ ExportableModel.class_eval{ exportable }
11
+ expect(ExportableModel.respond_to? 'export_csv').to be_truthy
12
+ end
13
+
14
+ it "exports csv data" do
15
+ ExportableModel.class_eval{ exportable }
16
+ csv = CSV.parse(ExportableModel.export_csv, headers: true)
17
+ expect(csv.first['field_string']).to eq 'sample string'
18
+ end
19
+
20
+ it "exports properly encode data" do
21
+ ExportableModel.class_eval{ exportable }
22
+ ExportableModel.create!(field_string: "sample st,ring")
23
+ csv = CSV.parse(ExportableModel.export_csv, headers: true)
24
+ expect(csv[-1]['field_string']).to eq 'sample st,ring'
25
+ end
26
+
27
+ it "exports csv data with 'only' option" do
28
+ ExportableModel.class_eval{ exportable only: [:field_string] }
29
+ csv = CSV.parse(ExportableModel.export_csv, headers: true)
30
+ expect(csv.headers).not_to include('field_text')
31
+ end
32
+
33
+ it "exports csv data with 'except' option" do
34
+ ExportableModel.class_eval{ exportable except: [:field_string] }
35
+ csv = CSV.parse(ExportableModel.export_csv, headers: true)
36
+ expect(csv.headers).not_to include('field_string')
37
+ end
38
+
39
+ it "exports csv data with 'header' option" do
40
+ ExportableModel.class_eval{ exportable header: false }
41
+ csv = CSV.parse(ExportableModel.export_csv, headers: true)
42
+ expect(csv.headers).not_to include('field_string')
43
+ end
44
+
45
+ it "exports csv data with 'methods' option" do
46
+ ExportableModel.class_eval do
47
+ exportable methods: [:title]
48
+ def title
49
+ field_string.upcase
50
+ end
51
+ end
52
+ csv = CSV.parse(ExportableModel.export_csv, headers: true)
53
+ expect(csv.headers).to include('title')
54
+ end
55
+
56
+ it "has option preference on utility method" do
57
+ ExportableModel.class_eval{ exportable only: [:field_string]}
58
+ csv = CSV.parse(ExportableModel.export_csv(only: [:field_string, :field_text]), headers: true)
59
+ expect(csv.headers).to include('field_text')
60
+ end
61
+
62
+ it 'validates arguments' do
63
+ ExportableModel.class_eval{ exportable only: :field_string}
64
+ expect{ExportableModel.export_csv}.to raise_error(ArgumentError)
65
+ ExportableModel.class_eval{ exportable only: [:field_string]}
66
+ expect{ExportableModel.export_csv methods: :title}.to raise_error(ArgumentError)
67
+ end
68
+
69
+ end
@@ -0,0 +1,31 @@
1
+ require "spec_helper"
2
+
3
+
4
+ describe Exportable::ExportMethods, type: :model do
5
+
6
+ before(:each) do
7
+ ExportableModel.create!(field_string: "sample string", field_text: "sample text", field_date: Date.today )
8
+ ExportableModel.class_eval{ exportable }
9
+ end
10
+
11
+ it "adds 'export' method to model" do
12
+ expect(ExportableModel.respond_to? 'export').to be_truthy
13
+ end
14
+
15
+ describe '.export' do
16
+ it 'generates output format string on model' do
17
+ csv = CSV.parse(ExportableModel.export(:csv), headers: true)
18
+ expect(csv.first['field_string']).to eq 'sample string'
19
+ end
20
+
21
+ it 'generates output format string on model with options' do
22
+ csv = CSV.parse(ExportableModel.export(:csv, only: [:field_string]), headers: true)
23
+ expect(csv.headers).not_to include('field_text')
24
+ end
25
+
26
+ it 'raise error on invalid output format' do
27
+ expect{ExportableModel.export(:xml)}.to raise_error(ArgumentError)
28
+ end
29
+ end
30
+
31
+ end
@@ -0,0 +1,56 @@
1
+ require "spec_helper"
2
+
3
+ describe 'Export XLS' do
4
+
5
+ before(:each) do
6
+ ExportableModel.create!(field_string: "sample string", field_text: "sample text",
7
+ field_date: Date.today )
8
+ end
9
+
10
+ it "responds to export_csv" do
11
+ ExportableModel.class_eval{ exportable }
12
+ expect(ExportableModel.respond_to? 'export_xls').to be_truthy
13
+ end
14
+
15
+ it "exports csv data" do
16
+ ExportableModel.class_eval{ exportable }
17
+ sheet = write_xls
18
+ expect(sheet.row(1)[1]).to eq 'sample string'
19
+ end
20
+
21
+ it "exports csv data with 'only' option" do
22
+ ExportableModel.class_eval{ exportable only: [:field_string] }
23
+ sheet = write_xls
24
+ expect(sheet.row(0)).not_to include('field_text')
25
+ end
26
+
27
+ it "exports csv data with 'except' option" do
28
+ ExportableModel.class_eval{ exportable except: [:field_string] }
29
+ sheet = write_xls
30
+ expect(sheet.row(0)).not_to include('field_string')
31
+ end
32
+
33
+ it "exports csv data with 'header' option" do
34
+ ExportableModel.class_eval{ exportable header: false }
35
+ sheet = write_xls
36
+ expect(sheet.row(0)).not_to include('field_string')
37
+ end
38
+
39
+ it "exports csv data with 'methods' option" do
40
+ ExportableModel.class_eval do
41
+ exportable methods: [:title]
42
+ def title
43
+ field_string.upcase
44
+ end
45
+ end
46
+ sheet = write_xls
47
+ expect(sheet.row(0)).to include('title')
48
+ end
49
+
50
+ it "has option preference on utility method" do
51
+ ExportableModel.class_eval{ exportable only: [:field_string]}
52
+ sheet = write_xls only: [:field_string, :field_text]
53
+ expect(sheet.row(0)).to include('field_text')
54
+ end
55
+
56
+ end
@@ -0,0 +1,128 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # The generated `.rspec` file contains `--require spec_helper` which will cause
4
+ # this file to always be loaded, without a need to explicitly require it in any
5
+ # files.
6
+ #
7
+ # Given that it is always loaded, you are encouraged to keep this file as
8
+ # light-weight as possible. Requiring heavyweight dependencies from this file
9
+ # will add to the boot time of your test suite on EVERY test run, even for an
10
+ # individual file that may not need all of that loaded. Instead, consider making
11
+ # a separate helper file that requires the additional dependencies and performs
12
+ # the additional setup, and require it from the spec files that actually need
13
+ # it.
14
+ #
15
+ # The `.rspec` file also contains a few flags that are not defaults but that
16
+ # users commonly want.
17
+ #
18
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
19
+ ENV["RAILS_ENV"] = "test"
20
+
21
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
22
+ Dir[File.dirname(__FILE__) + '/support/**/*.rb'].each {|f| require f}
23
+ require 'database_cleaner'
24
+
25
+
26
+ RSpec.configure do |config|
27
+
28
+ config.before(:suite) do
29
+ DatabaseCleaner.strategy = :transaction
30
+ DatabaseCleaner.clean_with(:truncation)
31
+ end
32
+
33
+ config.around(:each) do |example|
34
+ DatabaseCleaner.cleaning do
35
+ example.run
36
+ end
37
+ end
38
+
39
+ end
40
+
41
+
42
+
43
+ RSpec.configure do |config|
44
+ # rspec-expectations config goes here. You can use an alternate
45
+ # assertion/expectation library such as wrong or the stdlib/minitest
46
+ # assertions if you prefer.
47
+ config.expect_with :rspec do |expectations|
48
+ # This option will default to `true` in RSpec 4. It makes the `description`
49
+ # and `failure_message` of custom matchers include text for helper methods
50
+ # defined using `chain`, e.g.:
51
+ # be_bigger_than(2).and_smaller_than(4).description
52
+ # # => "be bigger than 2 and smaller than 4"
53
+ # ...rather than:
54
+ # # => "be bigger than 2"
55
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
56
+ end
57
+
58
+ # rspec-mocks config goes here. You can use an alternate test double
59
+ # library (such as bogus or mocha) by changing the `mock_with` option here.
60
+ config.mock_with :rspec do |mocks|
61
+ # Prevents you from mocking or stubbing a method that does not exist on
62
+ # a real object. This is generally recommended, and will default to
63
+ # `true` in RSpec 4.
64
+ mocks.verify_partial_doubles = true
65
+ end
66
+
67
+ # This option will default to `:apply_to_host_groups` in RSpec 4 (and will
68
+ # have no way to turn it off -- the option exists only for backwards
69
+ # compatibility in RSpec 3). It causes shared context metadata to be
70
+ # inherited by the metadata hash of host groups and examples, rather than
71
+ # triggering implicit auto-inclusion in groups with matching metadata.
72
+ config.shared_context_metadata_behavior = :apply_to_host_groups
73
+
74
+ # The settings below are suggested to provide a good initial experience
75
+ # with RSpec, but feel free to customize to your heart's content.
76
+ =begin
77
+ # This allows you to limit a spec run to individual examples or groups
78
+ # you care about by tagging them with `:focus` metadata. When nothing
79
+ # is tagged with `:focus`, all examples get run. RSpec also provides
80
+ # aliases for `it`, `describe`, and `context` that include `:focus`
81
+ # metadata: `fit`, `fdescribe` and `fcontext`, respectively.
82
+ config.filter_run_when_matching :focus
83
+
84
+ # Allows RSpec to persist some state between runs in order to support
85
+ # the `--only-failures` and `--next-failure` CLI options. We recommend
86
+ # you configure your source control system to ignore this file.
87
+ config.example_status_persistence_file_path = "spec/examples.txt"
88
+
89
+ # Limits the available syntax to the non-monkey patched syntax that is
90
+ # recommended. For more details, see:
91
+ # - http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/
92
+ # - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
93
+ # - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode
94
+ config.disable_monkey_patching!
95
+
96
+ # This setting enables warnings. It's recommended, but in some cases may
97
+ # be too noisy due to issues in dependencies.
98
+ config.warnings = true
99
+
100
+ # Many RSpec users commonly either run the entire suite or an individual
101
+ # file, and it's useful to allow more verbose output when running an
102
+ # individual spec file.
103
+ if config.files_to_run.one?
104
+ # Use the documentation formatter for detailed output,
105
+ # unless a formatter has already been configured
106
+ # (e.g. via a command-line flag).
107
+ config.default_formatter = 'doc'
108
+ end
109
+
110
+ # Print the 10 slowest examples and example groups at the
111
+ # end of the spec run, to help surface which specs are running
112
+ # particularly slow.
113
+ config.profile_examples = 10
114
+
115
+ # Run specs in random order to surface order dependencies. If you find an
116
+ # order dependency and want to debug it, you can fix the order by providing
117
+ # the seed, which is printed after each run.
118
+ # --seed 1234
119
+ config.order = :random
120
+
121
+ # Seed global randomization in this process using the `--seed` CLI option.
122
+ # Setting this allows you to use `--seed` to deterministically reproduce
123
+ # test failures related to randomization by passing the same `--seed` value
124
+ # as the one that triggered the failure.
125
+ Kernel.srand config.seed
126
+ =end
127
+ config.include Helper::XlsHelper
128
+ end
@@ -0,0 +1,12 @@
1
+ module Helper
2
+ module XlsHelper
3
+ DATA_DIR = 'spec/data'
4
+
5
+ def write_xls( options = {} )
6
+ File.open("#{DATA_DIR}/test.xls", 'wb') {|f| f.write ExportableModel.export_xls options}
7
+ book = Spreadsheet.open("#{DATA_DIR}/test.xls")
8
+ File.delete("#{DATA_DIR}/test.xls")
9
+ book.worksheet 0
10
+ end
11
+ end
12
+ end
metadata ADDED
@@ -0,0 +1,228 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: exportable
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Sunil Antony
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2017-01-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activerecord
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '4.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '4.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: spreadsheet
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '4.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '4.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: sqlite3
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec-rails
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: database_cleaner
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: Exportable will help you in exporting ActiveRecord models in to different
98
+ output formats including CSV, XLS etc.
99
+ email:
100
+ - chackoantonydaniel@gmail.com
101
+ executables: []
102
+ extensions: []
103
+ extra_rdoc_files: []
104
+ files:
105
+ - ".gitignore"
106
+ - ".rspec"
107
+ - Gemfile
108
+ - Gemfile.lock
109
+ - MIT-LICENSE
110
+ - README.md
111
+ - Rakefile
112
+ - bin/test
113
+ - exportable.gemspec
114
+ - lib/exportable.rb
115
+ - lib/exportable/class_methods.rb
116
+ - lib/exportable/export_methods.rb
117
+ - lib/exportable/export_methods/csv_exporter.rb
118
+ - lib/exportable/export_methods/xls_exporter.rb
119
+ - lib/exportable/utils.rb
120
+ - lib/exportable/version.rb
121
+ - lib/tasks/exportable_tasks.rake
122
+ - spec/dummy/Rakefile
123
+ - spec/dummy/app/models/application_record.rb
124
+ - spec/dummy/app/models/exportable_model.rb
125
+ - spec/dummy/bin/bundle
126
+ - spec/dummy/bin/rails
127
+ - spec/dummy/bin/rake
128
+ - spec/dummy/bin/setup
129
+ - spec/dummy/bin/update
130
+ - spec/dummy/config.ru
131
+ - spec/dummy/config/application.rb
132
+ - spec/dummy/config/boot.rb
133
+ - spec/dummy/config/cable.yml
134
+ - spec/dummy/config/database.yml
135
+ - spec/dummy/config/environment.rb
136
+ - spec/dummy/config/environments/test.rb
137
+ - spec/dummy/config/initializers/application_controller_renderer.rb
138
+ - spec/dummy/config/initializers/backtrace_silencers.rb
139
+ - spec/dummy/config/initializers/cookies_serializer.rb
140
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
141
+ - spec/dummy/config/initializers/inflections.rb
142
+ - spec/dummy/config/initializers/mime_types.rb
143
+ - spec/dummy/config/initializers/new_framework_defaults.rb
144
+ - spec/dummy/config/initializers/session_store.rb
145
+ - spec/dummy/config/initializers/wrap_parameters.rb
146
+ - spec/dummy/config/locales/en.yml
147
+ - spec/dummy/config/puma.rb
148
+ - spec/dummy/config/routes.rb
149
+ - spec/dummy/config/secrets.yml
150
+ - spec/dummy/config/spring.rb
151
+ - spec/dummy/db/development.sqlite3
152
+ - spec/dummy/db/migrate/20170107183658_create_exportable_models.rb
153
+ - spec/dummy/db/schema.rb
154
+ - spec/dummy/db/test.sqlite3
155
+ - spec/dummy/log/development.log
156
+ - spec/dummy/log/test.log
157
+ - spec/exportable/class_methods_spec.rb
158
+ - spec/exportable/csv_exporter_spec.rb
159
+ - spec/exportable/export_methods_spec.rb
160
+ - spec/exportable/xls_exporter_spec.rb
161
+ - spec/spec_helper.rb
162
+ - spec/support/helper.rb
163
+ homepage: https://github.com/chackoantony/exportable
164
+ licenses:
165
+ - MIT
166
+ metadata: {}
167
+ post_install_message:
168
+ rdoc_options: []
169
+ require_paths:
170
+ - lib
171
+ required_ruby_version: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - ">="
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
176
+ required_rubygems_version: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ requirements: []
182
+ rubyforge_project:
183
+ rubygems_version: 2.5.1
184
+ signing_key:
185
+ specification_version: 4
186
+ summary: Exporting Rails ActiveRecord models.
187
+ test_files:
188
+ - spec/support/helper.rb
189
+ - spec/dummy/db/schema.rb
190
+ - spec/dummy/db/migrate/20170107183658_create_exportable_models.rb
191
+ - spec/dummy/db/test.sqlite3
192
+ - spec/dummy/db/development.sqlite3
193
+ - spec/dummy/Rakefile
194
+ - spec/dummy/bin/bundle
195
+ - spec/dummy/bin/update
196
+ - spec/dummy/bin/rake
197
+ - spec/dummy/bin/setup
198
+ - spec/dummy/bin/rails
199
+ - spec/dummy/config/database.yml
200
+ - spec/dummy/config/puma.rb
201
+ - spec/dummy/config/locales/en.yml
202
+ - spec/dummy/config/boot.rb
203
+ - spec/dummy/config/application.rb
204
+ - spec/dummy/config/environment.rb
205
+ - spec/dummy/config/environments/test.rb
206
+ - spec/dummy/config/secrets.yml
207
+ - spec/dummy/config/initializers/inflections.rb
208
+ - spec/dummy/config/initializers/mime_types.rb
209
+ - spec/dummy/config/initializers/application_controller_renderer.rb
210
+ - spec/dummy/config/initializers/wrap_parameters.rb
211
+ - spec/dummy/config/initializers/session_store.rb
212
+ - spec/dummy/config/initializers/new_framework_defaults.rb
213
+ - spec/dummy/config/initializers/backtrace_silencers.rb
214
+ - spec/dummy/config/initializers/cookies_serializer.rb
215
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
216
+ - spec/dummy/config/routes.rb
217
+ - spec/dummy/config/cable.yml
218
+ - spec/dummy/config/spring.rb
219
+ - spec/dummy/log/development.log
220
+ - spec/dummy/log/test.log
221
+ - spec/dummy/config.ru
222
+ - spec/dummy/app/models/exportable_model.rb
223
+ - spec/dummy/app/models/application_record.rb
224
+ - spec/exportable/class_methods_spec.rb
225
+ - spec/exportable/csv_exporter_spec.rb
226
+ - spec/exportable/export_methods_spec.rb
227
+ - spec/exportable/xls_exporter_spec.rb
228
+ - spec/spec_helper.rb