active_export 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,8 +1,11 @@
1
- # ActiveExport [![Build Status](https://secure.travis-ci.org/kengos/active_export.png?branch=master)](http://travis-ci.org/kengos/active_export)[![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/kengos/active_export)
1
+ # ActiveExport
2
2
 
3
- ActiveExport generate from ActiveRecord or others to CSV String or CSV file.
3
+ [![Build Status](https://secure.travis-ci.org/kengos/active_export.png?branch=master)](http://travis-ci.org/kengos/active_export)
4
+ [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/kengos/active_export)
4
5
 
5
- You can write the logic of generating CSV to a YAML file.
6
+ ActiveExport generate CSV/XML/YAML String or CSV/XML/YAML file.
7
+
8
+ You can write the logic of generating csv or xml, yaml to a YAML file.
6
9
 
7
10
  Another Support:
8
11
 
@@ -10,14 +13,39 @@ Another Support:
10
13
  * when the value of csv data is null or blank or true or false, change another label<br>
11
14
  ex) nil to '', blank to 'empty', true to 'Yes', false to 'No'<br>
12
15
 
13
- Example:
16
+ ## Installation
17
+
18
+ Add this line to your application's Gemfile:
19
+
20
+ gem 'active_export'
21
+
22
+ And then execute:
23
+
24
+ $ bundle
25
+
26
+ Or install it yourself as:
27
+
28
+ $ gem install active_export
29
+
30
+ Generate the config initializer file and `default.yml`
31
+
32
+ $ rails g active_export:install
33
+
34
+ ## Example
14
35
 
15
36
  ````ruby
16
37
  ActiveExport::Csv.export(Book.scoped, source_name, namespace)
38
+ # => csv string
39
+ # "Title","AuthorName","Price(in tax)","Published"
40
+ # "Ruby","Bob","28","2012-08-01"
41
+ # "Rails","Alice","18","2012-07-01"
17
42
  ````
18
43
 
19
- YAML file
20
- <pre>
44
+ Price(in tax) `28` is `(book.price * 1.095).ceil.to_i` result.
45
+
46
+ YAML file:
47
+
48
+ ````
21
49
  namespace:
22
50
  label_prefix: 'book'
23
51
  methods:
@@ -25,7 +53,7 @@ namespace:
25
53
  - author.name
26
54
  - price: '(price * 1.095).ceil.to_i'
27
55
  - created_at.strftime('%Y-%m-%d')
28
- </pre>
56
+ ````
29
57
 
30
58
  Write the same way without the ActiveExport:
31
59
 
@@ -44,76 +72,76 @@ CSV.generate do |csv|
44
72
  end
45
73
  ````
46
74
 
47
- ## Installation
75
+ ## Usage
48
76
 
49
- Add this line to your application's Gemfile:
77
+ ```ruby
78
+ # Exporting Csv String
79
+ ActiveExport::Csv.export(Book.scoped, source_name, namespace)
50
80
 
51
- gem 'active_export'
81
+ # Exporting Csv File
82
+ ActiveExport::Csv.export_file(Book.scoped, source_name, namespace, filename)
52
83
 
53
- And then execute:
84
+ # Exporting Xml String
85
+ ActiveExport::Xml.export(Book.scoped, source_name, namespace)
54
86
 
55
- $ bundle
87
+ # Exporting Xml File
88
+ ActiveExport::Xml.export_file(Book.scoped, source_name, namespace, filename)
56
89
 
57
- Or install it yourself as:
90
+ # Exporting Yaml String
91
+ ActiveExport::Yaml.export(Book.scoped, source_name, namespace)
58
92
 
59
- $ gem install active_export
93
+ # Exporting Yaml File
94
+ ActiveExport::Yaml.export_file(Book.scoped, source_name, namespace, filename)
95
+ ```
60
96
 
61
- ## Usage
97
+ ## ActiveExport::Csv
98
+
99
+ Support 2 methods:
100
+
101
+ * `export(data, source_name, namespace, options = {})` ... Generate Csv string
102
+ * `export_file(data, source_name, namespace, filename, options = {})` ... Generate Csv file
62
103
 
63
- Add initalizers `active_export.rb`
104
+ options:
64
105
 
65
- touch config/initializers/active_export.rb
106
+ * `:eval_methods` ... override export method from YAML file.
107
+ * `:label_keys` ... override csv header label from YAML file.
108
+ * `:label_prefix` ... override csv header label prefix from YAML file.
109
+ * `:csv_options` ... Csv generate options.
110
+ * `:header` ... false to not export Csv header labels.
66
111
 
67
- Write configuration code to `active_export.rb`
112
+ features:
68
113
 
69
- ````ruby
70
- ActiveExportconfigure do |config|
71
- config.sources = { default: Rails.root.join('config', 'active_export.yml') }
72
- # config.default_csv_optoins = { col_sep: ',', row_sep: "\n", force_quotes: true }
73
- # config.default_find_in_batches_options = {} # default
74
- # config.default_value_label_scope = [:default_value_labels] # default
75
- # config.always_reload = false # default
76
- # config.no_source_raise_error = false # default
77
- end
78
- ````
114
+ * Support encoding
79
115
 
80
- Create `active_export.yml` And write csv export method
116
+ ## ActiveExport::Xml
81
117
 
82
- touch config/active_export.yml
118
+ Support 2 methods:
83
119
 
84
- Write Csv generate logic to `active_export.yml`
120
+ * `ActiveExport::Xml.export(Book.scoped, source_name, namespace)` ... Generate Xml string
121
+ * `ActiveExport::Xml.export_file(Book.scoped, source_name, namespace, filename)` ... Generate Xml file
85
122
 
86
- <pre>
87
- namespace_1:
88
- label_prefix: 'book'
89
- methods:
90
- - method
91
- - method
92
- ...
93
- namespace_2:
94
- label_prefix: ...
95
- ...
96
- </pre>
123
+ options:
97
124
 
98
- Call Export method
125
+ * TODO
99
126
 
100
- ActiveExport::Csv.export(Book.scoped, :default, :namespace_1)
101
- ActiveExport::Csv.export_file(Book.scoped, :default, :namespace_1, filename)
127
+ features:
102
128
 
103
- ## ActiveExport::Csv
129
+ * Support encoding
130
+
131
+ ## ActiveExport::Yaml
104
132
 
105
133
  Support 2 methods:
106
134
 
107
- * `export(data, source_name, namespace, options = {})` ... Generate Csv string
108
- * `export_file(data, source_name, namespace, filename, options = {})` ... Generate Csv file
135
+ * `ActiveExport::Yaml.export(Book.scoped, source_name, namespace)` ... Generate Yaml string
136
+ * `ActiveExport::Yaml.export_file(Book.scoped, source_name, namespace, filename)` ... Generate Yaml file
109
137
 
110
138
  options:
111
139
 
112
- * `:eval_methods` ... override export method from YAML file.
113
- * `:label_keys` ... override csv header label from YAML file.
114
- * `:label_prefix` ... override csv header label prefix from YAML file.
115
- * `:csv_options` ... Csv generate options.
116
- * `:header` ... false to not export Csv header labels.
140
+ * TODO
141
+
142
+ features:
143
+
144
+ * exporting i18n labels
117
145
 
118
146
  ## YAML file format
119
147
 
@@ -123,8 +151,29 @@ namespace:
123
151
  methods:
124
152
  - method_name
125
153
  - label_name: method_name
154
+ # If using Xml export
155
+ xml_format:
156
+ encoding: 'UTF-8'
157
+ header: |
158
+ <?xml version="1.0" encoding="UTF-8"?>
159
+ <records>
160
+ footer: |
161
+ </records>
162
+ body: |
163
+ <record>
164
+ <name>%%label_name%%</name>
165
+ </record>
166
+
167
+ namespace_2:
168
+ label_prefix: ...
169
+ ...
170
+ ````
126
171
  </pre>
127
172
 
173
+ ### xml_format:
174
+
175
+ TODO
176
+
128
177
  ### I18n field priority
129
178
 
130
179
  1. `active_export.#{source_name}.#{namespace}.(label_prefix_)#{key}`
@@ -4,8 +4,8 @@ require File.expand_path('../lib/active_export/version', __FILE__)
4
4
  Gem::Specification.new do |gem|
5
5
  gem.authors = ["kengos"]
6
6
  gem.email = ["kengo@kengos.jp"]
7
- gem.description = %q{Export to CSV from ActiveRecord collections.}
8
- gem.summary = %q{Export to CSV from ActiveRecord collections.}
7
+ gem.description = %q{Export to CSV/YAML/XML from ActiveRecord collections. }
8
+ gem.summary = %q{Export to CSV/YAML/XML from ActiveRecord collections.}
9
9
  gem.homepage = "https://github.com/kengos/active_export"
10
10
 
11
11
  gem.files = `git ls-files`.split($\)
@@ -11,7 +11,7 @@ module ActiveExport
11
11
 
12
12
  class << self
13
13
  # @example
14
- # ActiveExportconfigure do |config|
14
+ # ActiveExport.configure do |config|
15
15
  # # ActiveExport export configuration files.
16
16
  # config.sources = { default: Rails.root.join('config', 'active_export.yml') }
17
17
  #
@@ -1,3 +1,3 @@
1
1
  module ActiveExport
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
@@ -0,0 +1,17 @@
1
+ # coding: utf-8
2
+
3
+ # @see http://asciicasts.com/episodes/218-making-generators-in-rails-3
4
+ module ActiveExport
5
+ module Generators
6
+ class InstallGenerator < Rails::Generators::Base
7
+ desc "Copy ActiveExport default files"
8
+ source_root File.expand_path('../templates', __FILE__)
9
+
10
+ def copy_initializers
11
+ copy_file 'config.rb', 'config/initializers/active_export.rb'
12
+ copy_file 'default.yml', 'config/active_export/default.yml'
13
+ end
14
+
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+
3
+ ActiveExport.configure do |config|
4
+ # ActiveExport export configuration files.
5
+ config.sources = {
6
+ default: Rails.root.join('config', 'active_export', 'default.yml')
7
+ # xml: Rails.root.join('config', 'active_export', 'xml.yml')
8
+ }
9
+
10
+ # @see CSV.new options
11
+ #config.default_csv_optoins = { col_sep: ',', row_sep: "\n", force_quotes: true }
12
+
13
+ # @see http://api.rubyonrails.org/classes/ActiveRecord/Batches.html#method-i-find_in_batches
14
+ #default_find_in_batches_options = {} # default
15
+
16
+ # Value where the result is set if null or blank or true, false
17
+ # loading i18n label from active_export.default_value_labels[:nil or :blank or :true or :false]
18
+ #default_value_label_scope = [:default_value_labels]
19
+
20
+ # true ... ActiveExport no cached yml data. Every time load yml file.
21
+ # false ... ActiveExport cached yml data.
22
+ #config.always_reload = false # default
23
+
24
+ # true ... not found sources[:source_name] to raise error
25
+ #config.no_source_raise_error = false # default
26
+ end
@@ -0,0 +1,21 @@
1
+ # Using Xml export, you need write `xml_format:`
2
+ # Example:
3
+ # book_1:
4
+ # label_prefix: 'book'
5
+ # methods:
6
+ # - name
7
+ # - author.name
8
+ # - price: 'price * 1.095'
9
+ # xml_format:
10
+ # encoding: 'UTF-8'
11
+ # header: |
12
+ # <?xml version="1.0" encoding="UTF-8"?>
13
+ # <records>
14
+ # footer: |
15
+ # </records>
16
+ # body: |
17
+ # <book>
18
+ # <name>%%name%%</name>
19
+ # <author_name>%%author.name%%</author_name>
20
+ # <price>%%price%%</price>
21
+ # </book>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_export
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-20 00:00:00.000000000 Z
12
+ date: 2012-08-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -27,7 +27,7 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: 3.0.0
30
- description: Export to CSV from ActiveRecord collections.
30
+ description: ! 'Export to CSV/YAML/XML from ActiveRecord collections. '
31
31
  email:
32
32
  - kengo@kengos.jp
33
33
  executables: []
@@ -50,6 +50,9 @@ files:
50
50
  - lib/active_export/version.rb
51
51
  - lib/active_export/xml.rb
52
52
  - lib/active_export/yaml.rb
53
+ - lib/generators/active_export/install_generator.rb
54
+ - lib/generators/active_export/templates/config.rb
55
+ - lib/generators/active_export/templates/default.yml
53
56
  - spec/active_export/base_spec.rb
54
57
  - spec/active_export/csv_spec.rb
55
58
  - spec/active_export/rails_support_spec.rb
@@ -94,7 +97,7 @@ rubyforge_project:
94
97
  rubygems_version: 1.8.24
95
98
  signing_key:
96
99
  specification_version: 3
97
- summary: Export to CSV from ActiveRecord collections.
100
+ summary: Export to CSV/YAML/XML from ActiveRecord collections.
98
101
  test_files:
99
102
  - spec/active_export/base_spec.rb
100
103
  - spec/active_export/csv_spec.rb