exportable 0.1.0 → 0.2.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 +4 -4
- data/Gemfile.lock +10 -3
- data/exportable.gemspec +5 -0
- data/lib/exportable.rb +1 -0
- data/lib/exportable/export_methods.rb +1 -0
- data/lib/exportable/export_methods/xml_exporter.rb +41 -0
- data/lib/exportable/version.rb +1 -1
- data/spec/exportable/class_methods_spec.rb +1 -1
- data/spec/exportable/csv_exporter_spec.rb +1 -1
- data/spec/exportable/export_methods_spec.rb +2 -2
- data/spec/exportable/xls_exporter_spec.rb +1 -2
- data/spec/exportable/xml_exporter_spec.rb +50 -0
- data/spec/factories/exportable_model.rb +7 -0
- data/spec/spec_helper.rb +14 -17
- metadata +35 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 80617bd2dd82271f8d99d1366f57c3be3e67b5ca
|
4
|
+
data.tar.gz: 13ec604228898a44064bff2a3bdeb2c7badbfd46
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a6e45ef3f75b27f47ad3ada7ec8387b3f4dadd757a2c57c0108bb025b7512d9cefdf2cf3dfe6cade29d3e9c407c64e1973bf1889534289964e057bb129a77a03
|
7
|
+
data.tar.gz: c18ec4facc626e50a741e369f2fbffdf98718eb2b588ec776f6284deab89e2ed4131c5dbdd74b41a2c082f9b4f4ce5c4a84491804512fce9c4887da12cc8ce8f
|
data/Gemfile.lock
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
|
4
|
+
exportable (0.1.0)
|
5
5
|
activerecord (>= 4.0)
|
6
|
+
nokogiri
|
6
7
|
spreadsheet
|
7
8
|
|
8
9
|
GEM
|
@@ -51,6 +52,11 @@ GEM
|
|
51
52
|
database_cleaner (1.5.3)
|
52
53
|
diff-lcs (1.2.5)
|
53
54
|
erubis (2.7.0)
|
55
|
+
factory_girl (4.7.0)
|
56
|
+
activesupport (>= 3.0.0)
|
57
|
+
factory_girl_rails (4.7.0)
|
58
|
+
factory_girl (~> 4.7.0)
|
59
|
+
railties (>= 3.0.0)
|
54
60
|
globalid (0.3.7)
|
55
61
|
activesupport (>= 4.1.0)
|
56
62
|
i18n (0.7.0)
|
@@ -135,10 +141,11 @@ PLATFORMS
|
|
135
141
|
|
136
142
|
DEPENDENCIES
|
137
143
|
database_cleaner
|
138
|
-
|
144
|
+
exportable!
|
145
|
+
factory_girl_rails
|
139
146
|
rails (>= 4.0)
|
140
147
|
rspec-rails
|
141
148
|
sqlite3
|
142
149
|
|
143
150
|
BUNDLED WITH
|
144
|
-
1.
|
151
|
+
1.14.0
|
data/exportable.gemspec
CHANGED
@@ -13,15 +13,20 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.summary = "Exporting Rails ActiveRecord models."
|
14
14
|
s.description = 'Exportable will help you in exporting ActiveRecord models in to different output formats including CSV, XLS etc.'
|
15
15
|
s.license = "MIT"
|
16
|
+
|
16
17
|
s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
17
18
|
s.bindir = "exe"
|
18
19
|
s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
20
|
s.require_paths = ["lib"]
|
20
21
|
s.test_files = Dir["spec/**/*"]
|
22
|
+
|
21
23
|
s.add_dependency 'activerecord', ['>= 4.0']
|
22
24
|
s.add_dependency 'spreadsheet'
|
25
|
+
s.add_dependency 'nokogiri'
|
26
|
+
|
23
27
|
s.add_development_dependency 'rails', ['>= 4.0']
|
24
28
|
s.add_development_dependency 'sqlite3'
|
25
29
|
s.add_development_dependency 'rspec-rails'
|
26
30
|
s.add_development_dependency 'database_cleaner'
|
31
|
+
s.add_development_dependency 'factory_girl_rails'
|
27
32
|
end
|
data/lib/exportable.rb
CHANGED
@@ -0,0 +1,41 @@
|
|
1
|
+
module Exportable
|
2
|
+
module ExportMethods
|
3
|
+
# Module to handle only XLS exporting
|
4
|
+
module XmlExporter
|
5
|
+
include Exportable::Utils
|
6
|
+
Exportable.formats << :xml
|
7
|
+
|
8
|
+
def export_xml(options = {})
|
9
|
+
export_options = get_export_options(self, @options.merge(options))
|
10
|
+
Exporter.new(self).export(export_options)
|
11
|
+
end
|
12
|
+
|
13
|
+
# Exporter class for XML
|
14
|
+
class Exporter
|
15
|
+
require 'nokogiri'
|
16
|
+
|
17
|
+
def initialize(model)
|
18
|
+
@model = model
|
19
|
+
end
|
20
|
+
|
21
|
+
def export(options)
|
22
|
+
Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
|
23
|
+
xml.root do
|
24
|
+
xml.send(@model.model_name.collection) do
|
25
|
+
@model.all.find_each do |record|
|
26
|
+
xml.send(@model.model_name.element) do
|
27
|
+
options[:fields].each do |attr|
|
28
|
+
xml.send(attr, record.send(attr).to_s)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end.to_xml
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/lib/exportable/version.rb
CHANGED
@@ -4,7 +4,7 @@ require "spec_helper"
|
|
4
4
|
describe Exportable::ClassMethods, type: :model do
|
5
5
|
|
6
6
|
before(:each) do
|
7
|
-
|
7
|
+
create(:exportable_model)
|
8
8
|
end
|
9
9
|
|
10
10
|
it "adds 'exportable' method to model" do
|
@@ -4,7 +4,7 @@ require "spec_helper"
|
|
4
4
|
describe Exportable::ExportMethods, type: :model do
|
5
5
|
|
6
6
|
before(:each) do
|
7
|
-
|
7
|
+
create(:exportable_model)
|
8
8
|
ExportableModel.class_eval{ exportable }
|
9
9
|
end
|
10
10
|
|
@@ -24,7 +24,7 @@ describe Exportable::ExportMethods, type: :model do
|
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'raise error on invalid output format' do
|
27
|
-
expect{ExportableModel.export(:
|
27
|
+
expect{ExportableModel.export(:tsv)}.to raise_error(ArgumentError)
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
@@ -0,0 +1,50 @@
|
|
1
|
+
describe 'Export XML' do
|
2
|
+
|
3
|
+
before(:each) do
|
4
|
+
create_list(:exportable_model, 3)
|
5
|
+
end
|
6
|
+
|
7
|
+
it 'responds to export_xml' do
|
8
|
+
ExportableModel.class_eval{ exportable }
|
9
|
+
expect(ExportableModel.respond_to? 'export_xml').to be_truthy
|
10
|
+
end
|
11
|
+
|
12
|
+
it "exports xml data with 'export_xml' method" do
|
13
|
+
ExportableModel.class_eval{ exportable }
|
14
|
+
output = Nokogiri::XML.parse(ExportableModel.all.export_xml)
|
15
|
+
expect(output.xpath('//exportable_model').length).to eq 3
|
16
|
+
end
|
17
|
+
|
18
|
+
it "exports xml data with 'export' method" do
|
19
|
+
ExportableModel.class_eval{ exportable }
|
20
|
+
output = Nokogiri::XML.parse(ExportableModel.all.export(:xml))
|
21
|
+
expect(output.xpath('//exportable_model').length).to eq 3
|
22
|
+
end
|
23
|
+
|
24
|
+
it "exports xml data with 'only' option" do
|
25
|
+
ExportableModel.class_eval{ exportable only: [:field_string] }
|
26
|
+
output = Nokogiri::XML.parse(ExportableModel.all.export_xml)
|
27
|
+
expect(output.xpath('//field_text').length).to eq 0
|
28
|
+
end
|
29
|
+
|
30
|
+
it "exports xml data with 'except' option" do
|
31
|
+
ExportableModel.class_eval{ exportable except: [:field_string] }
|
32
|
+
output = Nokogiri::XML.parse(ExportableModel.all.export_xml)
|
33
|
+
expect(output.xpath('//field_string').length).to eq 0
|
34
|
+
expect(output.xpath('//field_text').length).to eq 3
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
it "exports xml data with 'methods' option" do
|
39
|
+
ExportableModel.class_eval do
|
40
|
+
exportable methods: [:title]
|
41
|
+
def title
|
42
|
+
field_string.upcase
|
43
|
+
end
|
44
|
+
end
|
45
|
+
output = Nokogiri::XML.parse(ExportableModel.all.export_xml)
|
46
|
+
expect(output.xpath('//title').length).to eq 3
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -21,23 +21,7 @@ ENV["RAILS_ENV"] = "test"
|
|
21
21
|
require File.expand_path("../dummy/config/environment.rb", __FILE__)
|
22
22
|
Dir[File.dirname(__FILE__) + '/support/**/*.rb'].each {|f| require f}
|
23
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
|
-
|
24
|
+
require 'factory_girl_rails'
|
41
25
|
|
42
26
|
|
43
27
|
RSpec.configure do |config|
|
@@ -125,4 +109,17 @@ RSpec.configure do |config|
|
|
125
109
|
Kernel.srand config.seed
|
126
110
|
=end
|
127
111
|
config.include Helper::XlsHelper
|
112
|
+
config.include FactoryGirl::Syntax::Methods
|
113
|
+
|
114
|
+
config.before(:suite) do
|
115
|
+
DatabaseCleaner.strategy = :transaction
|
116
|
+
DatabaseCleaner.clean_with(:truncation)
|
117
|
+
end
|
118
|
+
|
119
|
+
config.around(:each) do |example|
|
120
|
+
DatabaseCleaner.cleaning do
|
121
|
+
example.run
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
128
125
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exportable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sunil Antony
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-01-
|
11
|
+
date: 2017-01-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: nokogiri
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rails
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,6 +108,20 @@ dependencies:
|
|
94
108
|
- - ">="
|
95
109
|
- !ruby/object:Gem::Version
|
96
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: factory_girl_rails
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
97
125
|
description: Exportable will help you in exporting ActiveRecord models in to different
|
98
126
|
output formats including CSV, XLS etc.
|
99
127
|
email:
|
@@ -116,6 +144,7 @@ files:
|
|
116
144
|
- lib/exportable/export_methods.rb
|
117
145
|
- lib/exportable/export_methods/csv_exporter.rb
|
118
146
|
- lib/exportable/export_methods/xls_exporter.rb
|
147
|
+
- lib/exportable/export_methods/xml_exporter.rb
|
119
148
|
- lib/exportable/utils.rb
|
120
149
|
- lib/exportable/version.rb
|
121
150
|
- lib/tasks/exportable_tasks.rake
|
@@ -158,6 +187,8 @@ files:
|
|
158
187
|
- spec/exportable/csv_exporter_spec.rb
|
159
188
|
- spec/exportable/export_methods_spec.rb
|
160
189
|
- spec/exportable/xls_exporter_spec.rb
|
190
|
+
- spec/exportable/xml_exporter_spec.rb
|
191
|
+
- spec/factories/exportable_model.rb
|
161
192
|
- spec/spec_helper.rb
|
162
193
|
- spec/support/helper.rb
|
163
194
|
homepage: https://github.com/chackoantony/exportable
|
@@ -221,6 +252,8 @@ test_files:
|
|
221
252
|
- spec/dummy/config.ru
|
222
253
|
- spec/dummy/app/models/exportable_model.rb
|
223
254
|
- spec/dummy/app/models/application_record.rb
|
255
|
+
- spec/factories/exportable_model.rb
|
256
|
+
- spec/exportable/xml_exporter_spec.rb
|
224
257
|
- spec/exportable/class_methods_spec.rb
|
225
258
|
- spec/exportable/csv_exporter_spec.rb
|
226
259
|
- spec/exportable/export_methods_spec.rb
|