active_record_to_excel 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. data/.autotest +0 -0
  2. data/.document +5 -0
  3. data/.rspec +2 -0
  4. data/.rvmrc +1 -0
  5. data/Gemfile +23 -0
  6. data/Gemfile.lock +117 -0
  7. data/LICENSE.txt +20 -0
  8. data/README.md +34 -0
  9. data/Rakefile +57 -0
  10. data/active_record_to_excel.gemspec +130 -0
  11. data/lib/active_record_to_excel.rb +30 -0
  12. data/lib/active_record_to_excel/version.rb +11 -0
  13. data/spec/active_record_to_excel_spec.rb +53 -0
  14. data/spec/dummy/Rakefile +7 -0
  15. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  16. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  17. data/spec/dummy/app/models/user.rb +2 -0
  18. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  19. data/spec/dummy/config.ru +4 -0
  20. data/spec/dummy/config/application.rb +45 -0
  21. data/spec/dummy/config/boot.rb +10 -0
  22. data/spec/dummy/config/database.yml +22 -0
  23. data/spec/dummy/config/environment.rb +5 -0
  24. data/spec/dummy/config/environments/development.rb +26 -0
  25. data/spec/dummy/config/environments/production.rb +49 -0
  26. data/spec/dummy/config/environments/test.rb +35 -0
  27. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  28. data/spec/dummy/config/initializers/inflections.rb +10 -0
  29. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  30. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  31. data/spec/dummy/config/initializers/session_store.rb +8 -0
  32. data/spec/dummy/config/locales/en.yml +5 -0
  33. data/spec/dummy/config/routes.rb +58 -0
  34. data/spec/dummy/db/development.sqlite3 +0 -0
  35. data/spec/dummy/db/migrate/20110903180904_create_users.rb +14 -0
  36. data/spec/dummy/db/schema.rb +22 -0
  37. data/spec/dummy/db/test.sqlite3 +0 -0
  38. data/spec/dummy/log/development.log +60 -0
  39. data/spec/dummy/log/production.log +0 -0
  40. data/spec/dummy/log/server.log +0 -0
  41. data/spec/dummy/log/test.log +36 -0
  42. data/spec/dummy/public/404.html +26 -0
  43. data/spec/dummy/public/422.html +26 -0
  44. data/spec/dummy/public/500.html +26 -0
  45. data/spec/dummy/public/favicon.ico +0 -0
  46. data/spec/dummy/public/javascripts/application.js +2 -0
  47. data/spec/dummy/public/javascripts/controls.js +965 -0
  48. data/spec/dummy/public/javascripts/dragdrop.js +974 -0
  49. data/spec/dummy/public/javascripts/effects.js +1123 -0
  50. data/spec/dummy/public/javascripts/prototype.js +6001 -0
  51. data/spec/dummy/public/javascripts/rails.js +191 -0
  52. data/spec/dummy/public/report.xls +0 -0
  53. data/spec/dummy/public/stylesheets/.gitkeep +0 -0
  54. data/spec/dummy/script/rails +6 -0
  55. data/spec/spec_helper.rb +21 -0
  56. metadata +320 -0
@@ -0,0 +1,191 @@
1
+ (function() {
2
+ // Technique from Juriy Zaytsev
3
+ // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
4
+ function isEventSupported(eventName) {
5
+ var el = document.createElement('div');
6
+ eventName = 'on' + eventName;
7
+ var isSupported = (eventName in el);
8
+ if (!isSupported) {
9
+ el.setAttribute(eventName, 'return;');
10
+ isSupported = typeof el[eventName] == 'function';
11
+ }
12
+ el = null;
13
+ return isSupported;
14
+ }
15
+
16
+ function isForm(element) {
17
+ return Object.isElement(element) && element.nodeName.toUpperCase() == 'FORM'
18
+ }
19
+
20
+ function isInput(element) {
21
+ if (Object.isElement(element)) {
22
+ var name = element.nodeName.toUpperCase()
23
+ return name == 'INPUT' || name == 'SELECT' || name == 'TEXTAREA'
24
+ }
25
+ else return false
26
+ }
27
+
28
+ var submitBubbles = isEventSupported('submit'),
29
+ changeBubbles = isEventSupported('change')
30
+
31
+ if (!submitBubbles || !changeBubbles) {
32
+ // augment the Event.Handler class to observe custom events when needed
33
+ Event.Handler.prototype.initialize = Event.Handler.prototype.initialize.wrap(
34
+ function(init, element, eventName, selector, callback) {
35
+ init(element, eventName, selector, callback)
36
+ // is the handler being attached to an element that doesn't support this event?
37
+ if ( (!submitBubbles && this.eventName == 'submit' && !isForm(this.element)) ||
38
+ (!changeBubbles && this.eventName == 'change' && !isInput(this.element)) ) {
39
+ // "submit" => "emulated:submit"
40
+ this.eventName = 'emulated:' + this.eventName
41
+ }
42
+ }
43
+ )
44
+ }
45
+
46
+ if (!submitBubbles) {
47
+ // discover forms on the page by observing focus events which always bubble
48
+ document.on('focusin', 'form', function(focusEvent, form) {
49
+ // special handler for the real "submit" event (one-time operation)
50
+ if (!form.retrieve('emulated:submit')) {
51
+ form.on('submit', function(submitEvent) {
52
+ var emulated = form.fire('emulated:submit', submitEvent, true)
53
+ // if custom event received preventDefault, cancel the real one too
54
+ if (emulated.returnValue === false) submitEvent.preventDefault()
55
+ })
56
+ form.store('emulated:submit', true)
57
+ }
58
+ })
59
+ }
60
+
61
+ if (!changeBubbles) {
62
+ // discover form inputs on the page
63
+ document.on('focusin', 'input, select, texarea', function(focusEvent, input) {
64
+ // special handler for real "change" events
65
+ if (!input.retrieve('emulated:change')) {
66
+ input.on('change', function(changeEvent) {
67
+ input.fire('emulated:change', changeEvent, true)
68
+ })
69
+ input.store('emulated:change', true)
70
+ }
71
+ })
72
+ }
73
+
74
+ function handleRemote(element) {
75
+ var method, url, params;
76
+
77
+ var event = element.fire("ajax:before");
78
+ if (event.stopped) return false;
79
+
80
+ if (element.tagName.toLowerCase() === 'form') {
81
+ method = element.readAttribute('method') || 'post';
82
+ url = element.readAttribute('action');
83
+ params = element.serialize();
84
+ } else {
85
+ method = element.readAttribute('data-method') || 'get';
86
+ url = element.readAttribute('href');
87
+ params = {};
88
+ }
89
+
90
+ new Ajax.Request(url, {
91
+ method: method,
92
+ parameters: params,
93
+ evalScripts: true,
94
+
95
+ onComplete: function(request) { element.fire("ajax:complete", request); },
96
+ onSuccess: function(request) { element.fire("ajax:success", request); },
97
+ onFailure: function(request) { element.fire("ajax:failure", request); }
98
+ });
99
+
100
+ element.fire("ajax:after");
101
+ }
102
+
103
+ function handleMethod(element) {
104
+ var method = element.readAttribute('data-method'),
105
+ url = element.readAttribute('href'),
106
+ csrf_param = $$('meta[name=csrf-param]')[0],
107
+ csrf_token = $$('meta[name=csrf-token]')[0];
108
+
109
+ var form = new Element('form', { method: "POST", action: url, style: "display: none;" });
110
+ element.parentNode.insert(form);
111
+
112
+ if (method !== 'post') {
113
+ var field = new Element('input', { type: 'hidden', name: '_method', value: method });
114
+ form.insert(field);
115
+ }
116
+
117
+ if (csrf_param) {
118
+ var param = csrf_param.readAttribute('content'),
119
+ token = csrf_token.readAttribute('content'),
120
+ field = new Element('input', { type: 'hidden', name: param, value: token });
121
+ form.insert(field);
122
+ }
123
+
124
+ form.submit();
125
+ }
126
+
127
+
128
+ document.on("click", "*[data-confirm]", function(event, element) {
129
+ var message = element.readAttribute('data-confirm');
130
+ if (!confirm(message)) event.stop();
131
+ });
132
+
133
+ document.on("click", "a[data-remote]", function(event, element) {
134
+ if (event.stopped) return;
135
+ handleRemote(element);
136
+ event.stop();
137
+ });
138
+
139
+ document.on("click", "a[data-method]", function(event, element) {
140
+ if (event.stopped) return;
141
+ handleMethod(element);
142
+ event.stop();
143
+ });
144
+
145
+ document.on("submit", function(event) {
146
+ var element = event.findElement(),
147
+ message = element.readAttribute('data-confirm');
148
+ if (message && !confirm(message)) {
149
+ event.stop();
150
+ return false;
151
+ }
152
+
153
+ var inputs = element.select("input[type=submit][data-disable-with]");
154
+ inputs.each(function(input) {
155
+ input.disabled = true;
156
+ input.writeAttribute('data-original-value', input.value);
157
+ input.value = input.readAttribute('data-disable-with');
158
+ });
159
+
160
+ var element = event.findElement("form[data-remote]");
161
+ if (element) {
162
+ handleRemote(element);
163
+ event.stop();
164
+ }
165
+ });
166
+
167
+ document.on("ajax:after", "form", function(event, element) {
168
+ var inputs = element.select("input[type=submit][disabled=true][data-disable-with]");
169
+ inputs.each(function(input) {
170
+ input.value = input.readAttribute('data-original-value');
171
+ input.removeAttribute('data-original-value');
172
+ input.disabled = false;
173
+ });
174
+ });
175
+
176
+ Ajax.Responders.register({
177
+ onCreate: function(request) {
178
+ var csrf_meta_tag = $$('meta[name=csrf-token]')[0];
179
+
180
+ if (csrf_meta_tag) {
181
+ var header = 'X-CSRF-Token',
182
+ token = csrf_meta_tag.readAttribute('content');
183
+
184
+ if (!request.options.requestHeaders) {
185
+ request.options.requestHeaders = {};
186
+ }
187
+ request.options.requestHeaders[header] = token;
188
+ }
189
+ }
190
+ });
191
+ })();
File without changes
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,21 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require 'rspec'
4
+ require 'active_record_to_excel'
5
+
6
+ # Configure Rails Environment
7
+ ENV["RAILS_ENV"] = "test"
8
+
9
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
10
+ require "rails/test_help"
11
+
12
+ Rails.backtrace_cleaner.remove_silencers!
13
+
14
+
15
+ # Requires supporting files with custom matchers and macros, etc,
16
+ # in ./support/ and its subdirectories.
17
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
18
+
19
+ RSpec.configure do |config|
20
+
21
+ end
metadata ADDED
@@ -0,0 +1,320 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: active_record_to_excel
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - "Rub\xC3\xA9n D\xC3\xA1vila Santos"
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-09-20 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ requirement: &id001 !ruby/object:Gem::Requirement
22
+ none: false
23
+ requirements:
24
+ - - "="
25
+ - !ruby/object:Gem::Version
26
+ hash: 123
27
+ segments:
28
+ - 0
29
+ - 6
30
+ - 5
31
+ - 8
32
+ version: 0.6.5.8
33
+ version_requirements: *id001
34
+ name: spreadsheet
35
+ prerelease: false
36
+ type: :runtime
37
+ - !ruby/object:Gem::Dependency
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 2
46
+ - 3
47
+ - 0
48
+ version: 2.3.0
49
+ version_requirements: *id002
50
+ name: rspec
51
+ prerelease: false
52
+ type: :development
53
+ - !ruby/object:Gem::Dependency
54
+ requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ~>
58
+ - !ruby/object:Gem::Version
59
+ hash: 19
60
+ segments:
61
+ - 3
62
+ - 0
63
+ - 10
64
+ version: 3.0.10
65
+ version_requirements: *id003
66
+ name: rails
67
+ prerelease: false
68
+ type: :development
69
+ - !ruby/object:Gem::Dependency
70
+ requirement: &id004 !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ hash: 3
76
+ segments:
77
+ - 0
78
+ version: "0"
79
+ version_requirements: *id004
80
+ name: sqlite3
81
+ prerelease: false
82
+ type: :development
83
+ - !ruby/object:Gem::Dependency
84
+ requirement: &id005 !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ hash: 43
90
+ segments:
91
+ - 4
92
+ - 4
93
+ - 2
94
+ version: 4.4.2
95
+ version_requirements: *id005
96
+ name: ZenTest
97
+ prerelease: false
98
+ type: :development
99
+ - !ruby/object:Gem::Dependency
100
+ requirement: &id006 !ruby/object:Gem::Requirement
101
+ none: false
102
+ requirements:
103
+ - - ~>
104
+ - !ruby/object:Gem::Version
105
+ hash: 23
106
+ segments:
107
+ - 1
108
+ - 0
109
+ - 0
110
+ version: 1.0.0
111
+ version_requirements: *id006
112
+ name: bundler
113
+ prerelease: false
114
+ type: :development
115
+ - !ruby/object:Gem::Dependency
116
+ requirement: &id007 !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ~>
120
+ - !ruby/object:Gem::Version
121
+ hash: 7
122
+ segments:
123
+ - 1
124
+ - 6
125
+ - 4
126
+ version: 1.6.4
127
+ version_requirements: *id007
128
+ name: jeweler
129
+ prerelease: false
130
+ type: :development
131
+ - !ruby/object:Gem::Dependency
132
+ requirement: &id008 !ruby/object:Gem::Requirement
133
+ none: false
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ hash: 3
138
+ segments:
139
+ - 0
140
+ version: "0"
141
+ version_requirements: *id008
142
+ name: rcov
143
+ prerelease: false
144
+ type: :development
145
+ - !ruby/object:Gem::Dependency
146
+ requirement: &id009 !ruby/object:Gem::Requirement
147
+ none: false
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ hash: 3
152
+ segments:
153
+ - 0
154
+ version: "0"
155
+ version_requirements: *id009
156
+ name: autotest-fsevent
157
+ prerelease: false
158
+ type: :development
159
+ - !ruby/object:Gem::Dependency
160
+ requirement: &id010 !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ hash: 3
166
+ segments:
167
+ - 0
168
+ version: "0"
169
+ version_requirements: *id010
170
+ name: autotest-growl
171
+ prerelease: false
172
+ type: :development
173
+ - !ruby/object:Gem::Dependency
174
+ requirement: &id011 !ruby/object:Gem::Requirement
175
+ none: false
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ hash: 3
180
+ segments:
181
+ - 0
182
+ version: "0"
183
+ version_requirements: *id011
184
+ name: ruby-debug
185
+ prerelease: false
186
+ type: :development
187
+ - !ruby/object:Gem::Dependency
188
+ requirement: &id012 !ruby/object:Gem::Requirement
189
+ none: false
190
+ requirements:
191
+ - - "="
192
+ - !ruby/object:Gem::Version
193
+ hash: 123
194
+ segments:
195
+ - 0
196
+ - 6
197
+ - 5
198
+ - 8
199
+ version: 0.6.5.8
200
+ version_requirements: *id012
201
+ name: spreadsheet
202
+ prerelease: false
203
+ type: :development
204
+ - !ruby/object:Gem::Dependency
205
+ requirement: &id013 !ruby/object:Gem::Requirement
206
+ none: false
207
+ requirements:
208
+ - - "="
209
+ - !ruby/object:Gem::Version
210
+ hash: 123
211
+ segments:
212
+ - 0
213
+ - 6
214
+ - 5
215
+ - 8
216
+ version: 0.6.5.8
217
+ version_requirements: *id013
218
+ name: spreadsheet
219
+ prerelease: false
220
+ type: :runtime
221
+ description: "\n This tool allows you to generate quick and simple\n Excel reports based on the array of records returned by your \n ActiveRecord queries\n "
222
+ email: ruben.grunge84@gmail.com
223
+ executables: []
224
+
225
+ extensions: []
226
+
227
+ extra_rdoc_files:
228
+ - LICENSE.txt
229
+ - README.md
230
+ files:
231
+ - .autotest
232
+ - .document
233
+ - .rspec
234
+ - .rvmrc
235
+ - Gemfile
236
+ - Gemfile.lock
237
+ - LICENSE.txt
238
+ - README.md
239
+ - Rakefile
240
+ - active_record_to_excel.gemspec
241
+ - lib/active_record_to_excel.rb
242
+ - lib/active_record_to_excel/version.rb
243
+ - spec/active_record_to_excel_spec.rb
244
+ - spec/dummy/Rakefile
245
+ - spec/dummy/app/controllers/application_controller.rb
246
+ - spec/dummy/app/helpers/application_helper.rb
247
+ - spec/dummy/app/models/user.rb
248
+ - spec/dummy/app/views/layouts/application.html.erb
249
+ - spec/dummy/config.ru
250
+ - spec/dummy/config/application.rb
251
+ - spec/dummy/config/boot.rb
252
+ - spec/dummy/config/database.yml
253
+ - spec/dummy/config/environment.rb
254
+ - spec/dummy/config/environments/development.rb
255
+ - spec/dummy/config/environments/production.rb
256
+ - spec/dummy/config/environments/test.rb
257
+ - spec/dummy/config/initializers/backtrace_silencers.rb
258
+ - spec/dummy/config/initializers/inflections.rb
259
+ - spec/dummy/config/initializers/mime_types.rb
260
+ - spec/dummy/config/initializers/secret_token.rb
261
+ - spec/dummy/config/initializers/session_store.rb
262
+ - spec/dummy/config/locales/en.yml
263
+ - spec/dummy/config/routes.rb
264
+ - spec/dummy/db/development.sqlite3
265
+ - spec/dummy/db/migrate/20110903180904_create_users.rb
266
+ - spec/dummy/db/schema.rb
267
+ - spec/dummy/db/test.sqlite3
268
+ - spec/dummy/log/development.log
269
+ - spec/dummy/log/production.log
270
+ - spec/dummy/log/server.log
271
+ - spec/dummy/log/test.log
272
+ - spec/dummy/public/404.html
273
+ - spec/dummy/public/422.html
274
+ - spec/dummy/public/500.html
275
+ - spec/dummy/public/favicon.ico
276
+ - spec/dummy/public/javascripts/application.js
277
+ - spec/dummy/public/javascripts/controls.js
278
+ - spec/dummy/public/javascripts/dragdrop.js
279
+ - spec/dummy/public/javascripts/effects.js
280
+ - spec/dummy/public/javascripts/prototype.js
281
+ - spec/dummy/public/javascripts/rails.js
282
+ - spec/dummy/public/report.xls
283
+ - spec/dummy/public/stylesheets/.gitkeep
284
+ - spec/dummy/script/rails
285
+ - spec/spec_helper.rb
286
+ homepage: http://github.com/rdavila/active_record_to_excel
287
+ licenses:
288
+ - MIT
289
+ post_install_message:
290
+ rdoc_options: []
291
+
292
+ require_paths:
293
+ - lib
294
+ required_ruby_version: !ruby/object:Gem::Requirement
295
+ none: false
296
+ requirements:
297
+ - - ">="
298
+ - !ruby/object:Gem::Version
299
+ hash: 3
300
+ segments:
301
+ - 0
302
+ version: "0"
303
+ required_rubygems_version: !ruby/object:Gem::Requirement
304
+ none: false
305
+ requirements:
306
+ - - ">="
307
+ - !ruby/object:Gem::Version
308
+ hash: 3
309
+ segments:
310
+ - 0
311
+ version: "0"
312
+ requirements: []
313
+
314
+ rubyforge_project:
315
+ rubygems_version: 1.8.10
316
+ signing_key:
317
+ specification_version: 3
318
+ summary: Excel generator based on ActiveRecord queries
319
+ test_files: []
320
+