datashift 0.9.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (163) hide show
  1. data/README.markdown +63 -64
  2. data/Rakefile +4 -7
  3. data/VERSION +1 -1
  4. data/datashift.gemspec +92 -62
  5. data/lib/applications/apache_poi_extensions.rb +62 -0
  6. data/lib/applications/excel.rb +78 -0
  7. data/lib/applications/excel_base.rb +65 -0
  8. data/lib/applications/jexcel_file.rb +222 -0
  9. data/lib/applications/jexcel_file_extensions.rb +244 -0
  10. data/lib/applications/jruby/{jexcel_file.rb → old_pre_proxy_jexcel_file.rb} +0 -0
  11. data/lib/applications/ruby_poi_translations.rb +64 -0
  12. data/lib/applications/spreadsheet_extensions.rb +31 -0
  13. data/lib/datashift/method_details_manager.rb +4 -0
  14. data/lib/exporters/csv_exporter.rb +3 -1
  15. data/lib/exporters/excel_exporter.rb +59 -74
  16. data/lib/generators/excel_generator.rb +70 -74
  17. data/lib/guards.rb +57 -0
  18. data/lib/loaders/excel_loader.rb +105 -105
  19. data/lib/loaders/loader_base.rb +43 -21
  20. data/lib/loaders/paperclip/attachment_loader.rb +104 -0
  21. data/lib/loaders/paperclip/datashift_paperclip.rb +78 -0
  22. data/lib/loaders/paperclip/{image_loader.rb → image_loading.rb} +2 -18
  23. data/lib/thor/{generate_excel.thor → generate.thor} +48 -0
  24. data/lib/thor/paperclip.thor +85 -0
  25. data/lib/thor/tools.thor +23 -2
  26. data/spec/Gemfile +1 -7
  27. data/spec/csv_exporter_spec.rb +4 -4
  28. data/spec/csv_loader_spec.rb +1 -1
  29. data/spec/excel_exporter_spec.rb +43 -45
  30. data/spec/excel_generator_spec.rb +132 -60
  31. data/spec/excel_loader_spec.rb +134 -140
  32. data/spec/excel_spec.rb +179 -0
  33. data/spec/fixtures/ProjectsMultiCategoriesHeaderLookup.xls +0 -0
  34. data/spec/fixtures/config/database.yml +2 -2
  35. data/spec/fixtures/db/datashift_test_models_db.sqlite +0 -0
  36. data/spec/{db → fixtures/db}/migrate/20110803201325_create_test_bed.rb +0 -0
  37. data/spec/fixtures/load_datashift.thor +3 -0
  38. data/spec/fixtures/models/category.rb +7 -0
  39. data/spec/fixtures/models/empty.rb +2 -0
  40. data/spec/fixtures/models/loader_release.rb +10 -0
  41. data/spec/fixtures/models/long_and_complex_table_linked_to_version.rb +6 -0
  42. data/spec/fixtures/models/milestone.rb +8 -0
  43. data/spec/fixtures/models/owner.rb +5 -0
  44. data/spec/fixtures/models/project.rb +26 -0
  45. data/spec/fixtures/models/test_model_defs.rb +67 -0
  46. data/spec/fixtures/models/version.rb +7 -0
  47. data/spec/loader_spec.rb +4 -3
  48. data/spec/method_dictionary_spec.rb +7 -6
  49. data/spec/method_mapper_spec.rb +3 -2
  50. data/spec/rails_sandbox/.gitignore +15 -0
  51. data/spec/rails_sandbox/Gemfile +40 -0
  52. data/spec/rails_sandbox/README.rdoc +261 -0
  53. data/spec/rails_sandbox/Rakefile +7 -0
  54. data/spec/rails_sandbox/app/assets/images/rails.png +0 -0
  55. data/spec/rails_sandbox/app/assets/javascripts/application.js +15 -0
  56. data/spec/rails_sandbox/app/assets/stylesheets/application.css +13 -0
  57. data/spec/rails_sandbox/app/controllers/application_controller.rb +3 -0
  58. data/spec/rails_sandbox/app/helpers/application_helper.rb +2 -0
  59. data/spec/rails_sandbox/app/mailers/.gitkeep +0 -0
  60. data/spec/rails_sandbox/app/models/.gitkeep +0 -0
  61. data/spec/rails_sandbox/app/models/category.rb +7 -0
  62. data/spec/rails_sandbox/app/models/empty.rb +2 -0
  63. data/spec/rails_sandbox/app/models/loader_release.rb +10 -0
  64. data/spec/rails_sandbox/app/models/long_and_complex_table_linked_to_version.rb +6 -0
  65. data/spec/rails_sandbox/app/models/milestone.rb +8 -0
  66. data/spec/rails_sandbox/app/models/owner.rb +5 -0
  67. data/spec/rails_sandbox/app/models/project.rb +26 -0
  68. data/spec/rails_sandbox/app/models/test_model_defs.rb +67 -0
  69. data/spec/rails_sandbox/app/models/version.rb +7 -0
  70. data/spec/rails_sandbox/app/views/layouts/application.html.erb +14 -0
  71. data/spec/rails_sandbox/config.ru +4 -0
  72. data/spec/rails_sandbox/config/application.rb +62 -0
  73. data/spec/rails_sandbox/config/boot.rb +6 -0
  74. data/spec/rails_sandbox/config/database.yml +20 -0
  75. data/spec/rails_sandbox/config/environment.rb +5 -0
  76. data/spec/rails_sandbox/config/environments/development.rb +37 -0
  77. data/spec/rails_sandbox/config/environments/production.rb +67 -0
  78. data/spec/rails_sandbox/config/environments/test.rb +37 -0
  79. data/spec/rails_sandbox/config/initializers/backtrace_silencers.rb +7 -0
  80. data/spec/rails_sandbox/config/initializers/inflections.rb +15 -0
  81. data/spec/rails_sandbox/config/initializers/mime_types.rb +5 -0
  82. data/spec/rails_sandbox/config/initializers/secret_token.rb +7 -0
  83. data/spec/rails_sandbox/config/initializers/session_store.rb +8 -0
  84. data/spec/rails_sandbox/config/initializers/wrap_parameters.rb +14 -0
  85. data/spec/rails_sandbox/config/locales/en.yml +5 -0
  86. data/spec/rails_sandbox/config/routes.rb +58 -0
  87. data/spec/rails_sandbox/db/migrate/20110803201325_create_test_bed.rb +96 -0
  88. data/spec/rails_sandbox/db/schema.rb +81 -0
  89. data/spec/rails_sandbox/db/seeds.rb +7 -0
  90. data/spec/rails_sandbox/lib/assets/.gitkeep +0 -0
  91. data/spec/rails_sandbox/lib/tasks/.gitkeep +0 -0
  92. data/spec/rails_sandbox/log/.gitkeep +0 -0
  93. data/spec/rails_sandbox/public/404.html +26 -0
  94. data/spec/rails_sandbox/public/422.html +26 -0
  95. data/spec/rails_sandbox/public/500.html +25 -0
  96. data/spec/rails_sandbox/public/favicon.ico +0 -0
  97. data/spec/rails_sandbox/public/index.html +241 -0
  98. data/spec/rails_sandbox/public/robots.txt +5 -0
  99. data/spec/rails_sandbox/script/rails +6 -0
  100. data/spec/rails_sandbox/test/fixtures/.gitkeep +0 -0
  101. data/spec/rails_sandbox/test/functional/.gitkeep +0 -0
  102. data/spec/rails_sandbox/test/integration/.gitkeep +0 -0
  103. data/spec/rails_sandbox/test/performance/browsing_test.rb +12 -0
  104. data/spec/rails_sandbox/test/test_helper.rb +13 -0
  105. data/spec/rails_sandbox/test/unit/.gitkeep +0 -0
  106. data/spec/rails_sandbox/vendor/assets/javascripts/.gitkeep +0 -0
  107. data/spec/rails_sandbox/vendor/assets/stylesheets/.gitkeep +0 -0
  108. data/spec/rails_sandbox/vendor/plugins/.gitkeep +0 -0
  109. data/spec/spec_helper.rb +144 -121
  110. data/spec/thor_spec.rb +34 -14
  111. metadata +207 -194
  112. data/lib/helpers/spree_helper.rb +0 -213
  113. data/lib/loaders/spreadsheet_loader.rb +0 -144
  114. data/lib/loaders/spree/image_loader.rb +0 -90
  115. data/lib/loaders/spree/product_loader.rb +0 -354
  116. data/lib/thor/spree/bootstrap_cleanup.thor +0 -61
  117. data/lib/thor/spree/products_images.thor +0 -252
  118. data/lib/thor/spree/reports.thor +0 -56
  119. data/public/spree/products/large/DEMO_001_ror_bag.jpeg +0 -0
  120. data/public/spree/products/large/DEMO_002_Powerstation.jpg +0 -0
  121. data/public/spree/products/large/DEMO_003_ror_mug.jpeg +0 -0
  122. data/public/spree/products/mini/DEMO_001_ror_bag.jpeg +0 -0
  123. data/public/spree/products/mini/DEMO_002_Powerstation.jpg +0 -0
  124. data/public/spree/products/mini/DEMO_003_ror_mug.jpeg +0 -0
  125. data/public/spree/products/original/DEMO_001_ror_bag.jpeg +0 -0
  126. data/public/spree/products/original/DEMO_002_Powerstation.jpg +0 -0
  127. data/public/spree/products/original/DEMO_003_ror_mug.jpeg +0 -0
  128. data/public/spree/products/product/DEMO_001_ror_bag.jpeg +0 -0
  129. data/public/spree/products/product/DEMO_002_Powerstation.jpg +0 -0
  130. data/public/spree/products/product/DEMO_003_ror_mug.jpeg +0 -0
  131. data/public/spree/products/small/DEMO_001_ror_bag.jpeg +0 -0
  132. data/public/spree/products/small/DEMO_002_Powerstation.jpg +0 -0
  133. data/public/spree/products/small/DEMO_003_ror_mug.jpeg +0 -0
  134. data/spec/fixtures/datashift_Spree_db.sqlite +0 -0
  135. data/spec/fixtures/datashift_test_models_db.sqlite +0 -0
  136. data/spec/fixtures/negative/SpreeProdMiss1Mandatory.csv +0 -4
  137. data/spec/fixtures/negative/SpreeProdMiss1Mandatory.xls +0 -0
  138. data/spec/fixtures/negative/SpreeProdMissManyMandatory.csv +0 -4
  139. data/spec/fixtures/negative/SpreeProdMissManyMandatory.xls +0 -0
  140. data/spec/fixtures/spree/SpreeImages.xls +0 -0
  141. data/spec/fixtures/spree/SpreeMultiVariant.csv +0 -4
  142. data/spec/fixtures/spree/SpreeProducts.csv +0 -4
  143. data/spec/fixtures/spree/SpreeProducts.xls +0 -0
  144. data/spec/fixtures/spree/SpreeProductsDefaults.yml +0 -15
  145. data/spec/fixtures/spree/SpreeProductsMandatoryOnly.xls +0 -0
  146. data/spec/fixtures/spree/SpreeProductsMultiColumn.csv +0 -4
  147. data/spec/fixtures/spree/SpreeProductsMultiColumn.xls +0 -0
  148. data/spec/fixtures/spree/SpreeProductsSimple.csv +0 -4
  149. data/spec/fixtures/spree/SpreeProductsSimple.xls +0 -0
  150. data/spec/fixtures/spree/SpreeProductsWithImages.csv +0 -4
  151. data/spec/fixtures/spree/SpreeProductsWithImages.xls +0 -0
  152. data/spec/fixtures/spree/SpreeZoneExample.csv +0 -5
  153. data/spec/fixtures/spree/SpreeZoneExample.xls +0 -0
  154. data/spec/spree_exporter_spec.rb +0 -72
  155. data/spec/spree_generator_spec.rb +0 -96
  156. data/spec/spree_images_loader_spec.rb +0 -107
  157. data/spec/spree_loader_spec.rb +0 -375
  158. data/spec/spree_method_mapping_spec.rb +0 -226
  159. data/spec/spree_variants_loader_spec.rb +0 -189
  160. data/tasks/export/excel_generator.rake +0 -102
  161. data/tasks/import/excel.rake +0 -75
  162. data/test/helper.rb +0 -18
  163. data/test/test_interact.rb +0 -7
data/README.markdown CHANGED
@@ -1,21 +1,27 @@
1
1
  ## DataShift
2
2
 
3
- Provides tools to shift data between Ruby, external applications, files and ActiveRecord.
3
+ Provides tools to shift data between Excel/CSV files and Rails projects and Ruby applications
4
4
 
5
- Specific loaders and command line tasks for Spree E-Commerce.
5
+ Import and export models fully with all associations.
6
6
 
7
- Wiki taking shape with more info here : **https://github.com/autotelik/datashift/wiki**
7
+ Comprehensive Wiki here : **https://github.com/autotelik/datashift/wiki**
8
+
9
+ Specific command line tools and full Product loading for Spree E-Commerce
10
+ now seperate gem at [datashift_spree](https://github.com/autotelik/datashift_spree "Datashift Spree")
8
11
 
9
12
  ### Features
10
13
 
11
- Import and Export ActiveRecord models through .xls or CSV files, including
12
- all associations and setting configurable defaults or over rides.
14
+ Import and Export ActiveRecord models direct to CSV or Excel/OpenOffice (.xls) (JRuby, 1.8.7, REE, 1.9.3)
15
+
16
+ You can select which associations to include and for import, set configurable defaults or over rides.
17
+
18
+ Create, parse and use Excel/OpenOffice (.xls) documents dynamically from Ruby (JRuby, 1.8.7, REE, 1.9.3)
13
19
 
14
20
  Generate a sample template with headers only.
15
21
 
16
22
  Export template and populate with model data
17
23
 
18
- Create, parse and use Excel/OpenOffice (.xls) documents dynamically from Ruby.
24
+ Bulk import tools for Paperclip attachments.
19
25
 
20
26
  Easily extendable Loader functionality to deal with non trivial import cases, such
21
27
  as complex association lookups.
@@ -32,85 +38,73 @@ Many example Spreadsheets/CSV files in spec/fixtures, fully documented with comm
32
38
 
33
39
  ## Installation
34
40
 
35
- Add gem 'datashift' to your Gemfile/bundle, or install the latest gem as usual :
41
+ Add gem 'datashift' to your Gemfile/bundle or use ```gem install```
36
42
 
37
- gem install datashift
38
-
39
- To use :
43
+ ```ruby gem 'datashift' ```
40
44
 
41
- gem 'datashift'
42
- require 'datashift'
43
-
44
- To pull the tasks in, add this call to your Rakefile :
45
-
46
- <<<<<<< HEAD
47
- ```ruby
48
- DataShift::load_tasks
49
- ```
45
+ For Spree support also add :
50
46
 
51
- To keep the availability to only development mode use
47
+ ```ruby gem 'datashift_spree' ```
52
48
 
53
- ```ruby
54
- DataShift::load_tasks if(Rails.env.development?)
55
- ```
56
- =======
57
- ```ruby DataShift::load_tasks```
49
+ To use :
58
50
 
59
- To keep the availability to only development mode use
51
+ require 'datashift'
60
52
 
61
- ```ruby DataShift::load_tasks if(Rails.env.development?)```
62
- >>>>>>> a6d5d492fd9df38a4acb8c50423219994b4b5601
53
+ To use the Thor command line applications, pull in the tasks.
63
54
 
64
- To use the Thor command line applications :
55
+ Generally the easiest way is to, create a high level .thor file in your Rails root directory
65
56
 
66
- Create a high level .thor file - e.g mysite.thor - in your applications root directory
57
+ e.g mysite.thor
67
58
 
68
59
  Edit the file and add the following to pull in the thor commands :
60
+
69
61
  ```ruby
70
62
  require 'thor'
71
63
  require 'datashift'
72
64
 
73
65
  DataShift::load_commands
74
66
  ```
75
- To check the available tasks run
76
67
 
77
- bundle exec rake -T datashift
68
+ To keep the availability to only development mode use
78
69
 
79
- and/or
70
+ ```ruby DataShift::load_commands if(Rails.env.development?) ```
80
71
 
81
- bundle exc thor list datashift
72
+ To check the available tasks run
73
+
74
+ bundle exec thor list datashift
82
75
 
83
76
  To get usage information use thor help <command>, for example
84
77
 
85
78
  bundle exec thor help datashift:generate:excel
86
79
 
87
- N.B - To use the Excel loader, OLE and Excel are NOT required, however
88
- JRuby is required, since it uses Java's Apache POI under the hood to process .xls files.
80
+ To use Excel OLE and MS Excel are NOT required.
81
+
82
+ Features a common Excel interface over both our own wrapper around Apache POI (JRuby) and spreadsheet gem (all main Rubies)
83
+
84
+ This means you can switch seamlessly between the two libraries, and if required drop down to make use of advanced
85
+ features in the brilliant Apache POI libraries for anyone using JRuby.
89
86
 
90
87
  Guards are provided, and used internally, for mixed Ruby setups. Can be used like :
91
88
 
92
89
  if(DataShift::Guards::jruby? )
93
- ..do something with Excel
90
+ ..do something with Apache
94
91
  else
95
- ..do something with CSV
92
+ ..do something with speadsheet
96
93
  end
97
94
 
98
95
  ## Active Record - Import/Export
99
96
 
100
- Provides high level rake tasks for importing data via ActiveRecord models into a DB,
97
+ Provides high level tasks for importing data via ActiveRecord models into a DB,
101
98
  from various sources, currently csv or .xls files (Excel/Open Office)
102
99
 
103
- N.B This is under active development, moving to thor tasks so maybe out of date
100
+ Please use thor list and thor help <xxx> to get latest command lines
104
101
 
105
- Please try rake -T and thor list to get upto date command lines
102
+ bundle exec thor datashift:import:csv model=BlogPost input=BlogPostImport.csv verbose=true
106
103
 
107
- bundle exec rake datashift:import:csv model=BlogPost input=BlogPostImport.csv verbose=true
108
104
 
109
- jruby -S rake datashift:import:excel model=BlogPost input=BlogPostImport.xls verbose=true
105
+ Provides high level tasks for exporting data to various sources, currently .xls files (Excel/Open Office)
110
106
 
111
- Provides high level rake tasks for exporting data to various sources, currently .xls files (Excel/Open Office)
112
-
113
- jruby -S rake datashift:export:excel model=BlogPost result=BlogExport.xls
107
+ bundle exec thor datashift:export:excel model=BlogPost result=BlogExport.xls
114
108
 
115
109
 
116
110
  The library can be easily extended with Loaders to deal with non trivial cases,
@@ -143,13 +137,27 @@ This data can be exported directly to CSV or Excel/OpenOffice spreadsheets.
143
137
 
144
138
  ## Features
145
139
 
140
+ - *Associations*
141
+
142
+ Can import/export 'belongs_to, 'has_many' and 'has_one' associations, including assignment of multiple objects
143
+ via either multiple columns, or via a DSL for creating multiple entries in a single (column).
144
+
145
+ The DSL can also be used to define which fields to lookup associations, and assign values to other fields.
146
+
147
+ See Wiki for more details on DSL syntax.
148
+
149
+ Supports delegated attributes.
150
+
146
151
  - *High level wrappers around applications including Excel and Word
147
152
 
148
153
  Quickly and easily access common enterprise applications through Ruby
149
154
 
150
- Wrapper around MS Excel File format, acheived via Apache POI under JRuby, so not restricted to Windows
151
- and Excel does not need to be installed.
155
+ MS Excel itself does not need to be installed.
152
156
 
157
+ Our proxy for Excel allows seamless switching between 'spreadsheet' gem and datashift's own JRuby wrapper over Apache POI.
158
+
159
+ When using JRuby, Apache POI may offer advanced facilities not found in standard Ruby spreadsheet gem
160
+
153
161
  The required POI jars are already included.
154
162
 
155
163
  - *Direct Excel export*
@@ -168,26 +176,21 @@ This data can be exported directly to CSV or Excel/OpenOffice spreadsheets.
168
176
  an approximation of the actual associations, so given 'Product Properties' heading,
169
177
  finds real association 'product_properties' to send or call on the AR object
170
178
 
171
- - *Associations*
172
-
173
- Can handle 'belongs_to, 'has_many' and 'has_one' associations, including assignment of multiple objects
174
- via either multiple columns, or via specially delimited entry in a single (column). See Details section.
175
179
 
176
- Supports delegated attributes.
177
180
 
178
- - *Rake Tasks*
181
+ - *Thor Tasks*
179
182
 
180
- High level Rake tasks are provided, only required to supply model class, and file location :
183
+ High level Thor CLIs are provided, only required to supply model class, and file location :
181
184
 
182
- jruby -S rake datashift:import:excel model=MusicTrack input=MyTrackListing.xls
185
+ thor datashift:import:excel model=MusicTrack input=MyTrackListing.xls
183
186
 
184
187
 
185
- - *Spree Rake Tasks*
188
+ - *Spree Tasks*
186
189
 
187
190
  Spree's product associations are non trivial so specific Rake tasks are also provided for loading Spree Producta
188
191
  with all associations and Image loading.
189
192
 
190
- jruby -S rake datashift:spree:products input=C:\MyProducts.xls
193
+ thor datashift:spree:products input=C:\MyProducts.xls
191
194
 
192
195
 
193
196
  - *Seamless Spree Image loading can be achieved by ensuring SKU or class Name features in Image filename.
@@ -198,14 +201,12 @@ This data can be exported directly to CSV or Excel/OpenOffice spreadsheets.
198
201
  parameter klass=Xyz.
199
202
 
200
203
  In the Spree tasks, this defaults to Product, so attempts to attach Image to a Product via Product SKU or Name.
201
-
202
- Image loading **does not** specifically require JRuby
203
204
 
204
205
  A report is generated in the current working directory detailing any Images in the paths that could not be matched with a Product.
205
206
 
206
- rake datashift:spree:images input=C:\images\product_images skip_if_no_assoc=true
207
+ thor datashift:spree:images input=C:\images\product_images skip_if_no_assoc=true
207
208
 
208
- rake datashift:spree:images input=C:\images\taxon_icons skip_if_no_assoc=true klass=Taxon
209
+ thor datashift:spree:images input=C:\images\taxon_icons skip_if_no_assoc=true klass=Taxon
209
210
 
210
211
  ## Import to Active Record
211
212
 
@@ -229,8 +230,6 @@ During loading, a call to find_all_by_reference will be made, picking up the 2 c
229
230
 
230
231
  ## TODO
231
232
 
232
- - Add direct Image loading to Spree i.e should be able to specify just path in a column .. "/images/red-tshirt.jpg"
233
-
234
233
  - Smart sorting of column processing order ....
235
234
 
236
235
  - Does not currently ensure mandatory columns (for valid?) processed first.
data/Rakefile CHANGED
@@ -10,14 +10,11 @@
10
10
  # type applications, files and databases.
11
11
  #
12
12
  # Provides support for moving data between .xls (Excel/OpenOffice)
13
- # Spreedsheets via JRuby and AR, enabling direct import/export of
13
+ # Spreedsheets via Ruby and AR, enabling direct import/export of
14
14
  # ActiveRecord models with all their associations from database.
15
15
  #
16
16
  # Provides support for moving data between csv files and AR, enabling direct
17
17
  # import/export of AR models and their associations from database.
18
- #
19
- # Provides rake tasks specifically tailored for uploading or exporting
20
- # Spree Products, associations and Images
21
18
  #
22
19
  ## encoding: utf-8
23
20
 
@@ -33,8 +30,8 @@ Jeweler::Tasks.new do |gem|
33
30
  gem.name = DataShift.gem_name
34
31
  gem.homepage = "http://github.com/autotelik/datashift"
35
32
  gem.license = "MIT"
36
- gem.summary = %Q{ Shift data betwen applications and Active Record}
37
- gem.description = %Q{Comprehensive Excel and CSV import/export tools. Shift data between ActiveRecord databases, applications, and projects like Spree}
33
+ gem.summary = %Q{ Shift data betwen Excel/CSV and any Ruby app}
34
+ gem.description = %Q{ Comprehensive tools to import/export between Excel/CSV and ActiveRecord databases, Rails apps, and any Ruby projec.}
38
35
  gem.email = "rubygems@autotelik.co.uk"
39
36
  gem.authors = ["Thomas Statter"]
40
37
  # dependencies defined in Gemfile
@@ -89,4 +86,4 @@ task :build, :version do |t, args|
89
86
  end
90
87
 
91
88
  # Long parameter lists so ensure rake -T produces nice wide output
92
- ENV['RAKE_COLUMNS'] = '180'
89
+ ENV['RAKE_COLUMNS'] = '180'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.0
1
+ 0.10.0
data/datashift.gemspec CHANGED
@@ -5,12 +5,12 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "datashift"
8
- s.version = "0.9.0"
8
+ s.version = "0.10.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Thomas Statter"]
12
- s.date = "2012-09-03"
13
- s.description = "Comprehensive Excel and CSV import/export tools. Shift data between ActiveRecord databases, applications, and projects like Spree"
12
+ s.date = "2012-09-25"
13
+ s.description = " Comprehensive tools to import/export between Excel/CSV and ActiveRecord databases, Rails apps, and any Ruby projec."
14
14
  s.email = "rubygems@autotelik.co.uk"
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE.txt",
@@ -25,8 +25,15 @@ Gem::Specification.new do |s|
25
25
  "Rakefile",
26
26
  "VERSION",
27
27
  "datashift.gemspec",
28
- "lib/applications/jruby/jexcel_file.rb",
28
+ "lib/applications/apache_poi_extensions.rb",
29
+ "lib/applications/excel.rb",
30
+ "lib/applications/excel_base.rb",
31
+ "lib/applications/jexcel_file.rb",
32
+ "lib/applications/jexcel_file_extensions.rb",
33
+ "lib/applications/jruby/old_pre_proxy_jexcel_file.rb",
29
34
  "lib/applications/jruby/word.rb",
35
+ "lib/applications/ruby_poi_translations.rb",
36
+ "lib/applications/spreadsheet_extensions.rb",
30
37
  "lib/datashift.rb",
31
38
  "lib/datashift/delimiters.rb",
32
39
  "lib/datashift/exceptions.rb",
@@ -45,9 +52,9 @@ Gem::Specification.new do |s|
45
52
  "lib/generators/csv_generator.rb",
46
53
  "lib/generators/excel_generator.rb",
47
54
  "lib/generators/generator_base.rb",
55
+ "lib/guards.rb",
48
56
  "lib/helpers/core_ext/to_b.rb",
49
57
  "lib/helpers/rake_utils.rb",
50
- "lib/helpers/spree_helper.rb",
51
58
  "lib/java/poi-3.7/._poi-3.7-20101029.jar5645100390082102460.tmp",
52
59
  "lib/java/poi-3.7/LICENSE",
53
60
  "lib/java/poi-3.7/NOTICE",
@@ -66,40 +73,22 @@ Gem::Specification.new do |s|
66
73
  "lib/loaders/csv_loader.rb",
67
74
  "lib/loaders/excel_loader.rb",
68
75
  "lib/loaders/loader_base.rb",
69
- "lib/loaders/paperclip/image_loader.rb",
70
- "lib/loaders/spreadsheet_loader.rb",
71
- "lib/loaders/spree/image_loader.rb",
72
- "lib/loaders/spree/product_loader.rb",
76
+ "lib/loaders/paperclip/attachment_loader.rb",
77
+ "lib/loaders/paperclip/datashift_paperclip.rb",
78
+ "lib/loaders/paperclip/image_loading.rb",
73
79
  "lib/thor/export.thor",
74
- "lib/thor/generate_excel.thor",
80
+ "lib/thor/generate.thor",
75
81
  "lib/thor/import.thor",
76
- "lib/thor/spree/bootstrap_cleanup.thor",
77
- "lib/thor/spree/products_images.thor",
78
- "lib/thor/spree/reports.thor",
82
+ "lib/thor/paperclip.thor",
79
83
  "lib/thor/tools.thor",
80
- "public/spree/products/large/DEMO_001_ror_bag.jpeg",
81
- "public/spree/products/large/DEMO_002_Powerstation.jpg",
82
- "public/spree/products/large/DEMO_003_ror_mug.jpeg",
83
- "public/spree/products/mini/DEMO_001_ror_bag.jpeg",
84
- "public/spree/products/mini/DEMO_002_Powerstation.jpg",
85
- "public/spree/products/mini/DEMO_003_ror_mug.jpeg",
86
- "public/spree/products/original/DEMO_001_ror_bag.jpeg",
87
- "public/spree/products/original/DEMO_002_Powerstation.jpg",
88
- "public/spree/products/original/DEMO_003_ror_mug.jpeg",
89
- "public/spree/products/product/DEMO_001_ror_bag.jpeg",
90
- "public/spree/products/product/DEMO_002_Powerstation.jpg",
91
- "public/spree/products/product/DEMO_003_ror_mug.jpeg",
92
- "public/spree/products/small/DEMO_001_ror_bag.jpeg",
93
- "public/spree/products/small/DEMO_002_Powerstation.jpg",
94
- "public/spree/products/small/DEMO_003_ror_mug.jpeg",
95
84
  "spec/Gemfile",
96
85
  "spec/csv_exporter_spec.rb",
97
86
  "spec/csv_loader_spec.rb",
98
87
  "spec/datashift_spec.rb",
99
- "spec/db/migrate/20110803201325_create_test_bed.rb",
100
88
  "spec/excel_exporter_spec.rb",
101
89
  "spec/excel_generator_spec.rb",
102
90
  "spec/excel_loader_spec.rb",
91
+ "spec/excel_spec.rb",
103
92
  "spec/file_definitions.rb",
104
93
  "spec/fixtures/BadAssociationName.xls",
105
94
  "spec/fixtures/DemoNegativeTesting.xls",
@@ -109,59 +98,100 @@ Gem::Specification.new do |s|
109
98
  "spec/fixtures/ProjectsSingleCategories.xls",
110
99
  "spec/fixtures/SimpleProjects.xls",
111
100
  "spec/fixtures/config/database.yml",
112
- "spec/fixtures/datashift_Spree_db.sqlite",
113
- "spec/fixtures/datashift_test_models_db.sqlite",
101
+ "spec/fixtures/db/datashift_test_models_db.sqlite",
102
+ "spec/fixtures/db/migrate/20110803201325_create_test_bed.rb",
114
103
  "spec/fixtures/images/DEMO_001_ror_bag.jpeg",
115
104
  "spec/fixtures/images/DEMO_002_Powerstation.jpg",
116
105
  "spec/fixtures/images/DEMO_003_ror_mug.jpeg",
117
106
  "spec/fixtures/images/DEMO_004_ror_ringer.jpeg",
118
- "spec/fixtures/negative/SpreeProdMiss1Mandatory.csv",
119
- "spec/fixtures/negative/SpreeProdMiss1Mandatory.xls",
120
- "spec/fixtures/negative/SpreeProdMissManyMandatory.csv",
121
- "spec/fixtures/negative/SpreeProdMissManyMandatory.xls",
107
+ "spec/fixtures/load_datashift.thor",
108
+ "spec/fixtures/models/category.rb",
109
+ "spec/fixtures/models/empty.rb",
110
+ "spec/fixtures/models/loader_release.rb",
111
+ "spec/fixtures/models/long_and_complex_table_linked_to_version.rb",
112
+ "spec/fixtures/models/milestone.rb",
113
+ "spec/fixtures/models/owner.rb",
114
+ "spec/fixtures/models/project.rb",
115
+ "spec/fixtures/models/test_model_defs.rb",
116
+ "spec/fixtures/models/version.rb",
122
117
  "spec/fixtures/simple_export_spec.xls",
123
118
  "spec/fixtures/simple_template_spec.xls",
124
- "spec/fixtures/spree/SpreeImages.xls",
125
- "spec/fixtures/spree/SpreeMultiVariant.csv",
126
- "spec/fixtures/spree/SpreeProducts.csv",
127
- "spec/fixtures/spree/SpreeProducts.xls",
128
- "spec/fixtures/spree/SpreeProductsDefaults.yml",
129
- "spec/fixtures/spree/SpreeProductsMandatoryOnly.xls",
130
- "spec/fixtures/spree/SpreeProductsMultiColumn.csv",
131
- "spec/fixtures/spree/SpreeProductsMultiColumn.xls",
132
- "spec/fixtures/spree/SpreeProductsSimple.csv",
133
- "spec/fixtures/spree/SpreeProductsSimple.xls",
134
- "spec/fixtures/spree/SpreeProductsWithImages.csv",
135
- "spec/fixtures/spree/SpreeProductsWithImages.xls",
136
- "spec/fixtures/spree/SpreeZoneExample.csv",
137
- "spec/fixtures/spree/SpreeZoneExample.xls",
138
119
  "spec/fixtures/test_model_defs.rb",
139
120
  "spec/loader_spec.rb",
140
121
  "spec/method_dictionary_spec.rb",
141
122
  "spec/method_mapper_spec.rb",
123
+ "spec/rails_sandbox/.gitignore",
124
+ "spec/rails_sandbox/Gemfile",
125
+ "spec/rails_sandbox/README.rdoc",
126
+ "spec/rails_sandbox/Rakefile",
127
+ "spec/rails_sandbox/app/assets/images/rails.png",
128
+ "spec/rails_sandbox/app/assets/javascripts/application.js",
129
+ "spec/rails_sandbox/app/assets/stylesheets/application.css",
130
+ "spec/rails_sandbox/app/controllers/application_controller.rb",
131
+ "spec/rails_sandbox/app/helpers/application_helper.rb",
132
+ "spec/rails_sandbox/app/mailers/.gitkeep",
133
+ "spec/rails_sandbox/app/models/.gitkeep",
134
+ "spec/rails_sandbox/app/models/category.rb",
135
+ "spec/rails_sandbox/app/models/empty.rb",
136
+ "spec/rails_sandbox/app/models/loader_release.rb",
137
+ "spec/rails_sandbox/app/models/long_and_complex_table_linked_to_version.rb",
138
+ "spec/rails_sandbox/app/models/milestone.rb",
139
+ "spec/rails_sandbox/app/models/owner.rb",
140
+ "spec/rails_sandbox/app/models/project.rb",
141
+ "spec/rails_sandbox/app/models/test_model_defs.rb",
142
+ "spec/rails_sandbox/app/models/version.rb",
143
+ "spec/rails_sandbox/app/views/layouts/application.html.erb",
144
+ "spec/rails_sandbox/config.ru",
145
+ "spec/rails_sandbox/config/application.rb",
146
+ "spec/rails_sandbox/config/boot.rb",
147
+ "spec/rails_sandbox/config/database.yml",
148
+ "spec/rails_sandbox/config/environment.rb",
149
+ "spec/rails_sandbox/config/environments/development.rb",
150
+ "spec/rails_sandbox/config/environments/production.rb",
151
+ "spec/rails_sandbox/config/environments/test.rb",
152
+ "spec/rails_sandbox/config/initializers/backtrace_silencers.rb",
153
+ "spec/rails_sandbox/config/initializers/inflections.rb",
154
+ "spec/rails_sandbox/config/initializers/mime_types.rb",
155
+ "spec/rails_sandbox/config/initializers/secret_token.rb",
156
+ "spec/rails_sandbox/config/initializers/session_store.rb",
157
+ "spec/rails_sandbox/config/initializers/wrap_parameters.rb",
158
+ "spec/rails_sandbox/config/locales/en.yml",
159
+ "spec/rails_sandbox/config/routes.rb",
160
+ "spec/rails_sandbox/db/migrate/20110803201325_create_test_bed.rb",
161
+ "spec/rails_sandbox/db/schema.rb",
162
+ "spec/rails_sandbox/db/seeds.rb",
163
+ "spec/rails_sandbox/lib/assets/.gitkeep",
164
+ "spec/rails_sandbox/lib/tasks/.gitkeep",
165
+ "spec/rails_sandbox/log/.gitkeep",
166
+ "spec/rails_sandbox/public/404.html",
167
+ "spec/rails_sandbox/public/422.html",
168
+ "spec/rails_sandbox/public/500.html",
169
+ "spec/rails_sandbox/public/favicon.ico",
170
+ "spec/rails_sandbox/public/index.html",
171
+ "spec/rails_sandbox/public/robots.txt",
172
+ "spec/rails_sandbox/script/rails",
173
+ "spec/rails_sandbox/test/fixtures/.gitkeep",
174
+ "spec/rails_sandbox/test/functional/.gitkeep",
175
+ "spec/rails_sandbox/test/integration/.gitkeep",
176
+ "spec/rails_sandbox/test/performance/browsing_test.rb",
177
+ "spec/rails_sandbox/test/test_helper.rb",
178
+ "spec/rails_sandbox/test/unit/.gitkeep",
179
+ "spec/rails_sandbox/vendor/assets/javascripts/.gitkeep",
180
+ "spec/rails_sandbox/vendor/assets/stylesheets/.gitkeep",
181
+ "spec/rails_sandbox/vendor/plugins/.gitkeep",
142
182
  "spec/spec_helper.rb",
143
- "spec/spree_exporter_spec.rb",
144
- "spec/spree_generator_spec.rb",
145
- "spec/spree_images_loader_spec.rb",
146
- "spec/spree_loader_spec.rb",
147
- "spec/spree_method_mapping_spec.rb",
148
- "spec/spree_variants_loader_spec.rb",
149
183
  "spec/thor_spec.rb",
150
184
  "tasks/config/seed_fu_product_template.erb",
151
185
  "tasks/config/tidy_config.txt",
152
186
  "tasks/db_tasks.rake",
153
- "tasks/export/excel_generator.rake",
154
187
  "tasks/file_tasks.rake",
155
- "tasks/import/excel.rake",
156
- "tasks/word_to_seedfu.rake",
157
- "test/helper.rb",
158
- "test/test_interact.rb"
188
+ "tasks/word_to_seedfu.rake"
159
189
  ]
160
190
  s.homepage = "http://github.com/autotelik/datashift"
161
191
  s.licenses = ["MIT"]
162
192
  s.require_paths = ["lib"]
163
- s.rubygems_version = "1.8.24"
164
- s.summary = "Shift data betwen applications and Active Record"
193
+ s.rubygems_version = "1.8.15"
194
+ s.summary = "Shift data betwen Excel/CSV and any Ruby app"
165
195
 
166
196
  if s.respond_to? :specification_version then
167
197
  s.specification_version = 3