ruport 1.6.3 → 1.7.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/AUTHORS +11 -0
- data/README.rdoc +105 -0
- data/Rakefile +13 -44
- data/examples/add_row_table.rb +46 -0
- data/examples/data/wine.csv +255 -0
- data/examples/pdf_grouping.rb +39 -0
- data/examples/pdf_table.rb +28 -0
- data/examples/pdf_table_from_csv.rb +26 -0
- data/examples/pdf_table_prawn.rb +30 -0
- data/examples/pdf_table_simple.rb +13 -0
- data/lib/ruport.rb +0 -12
- data/lib/ruport/controller.rb +16 -20
- data/lib/ruport/data/feeder.rb +2 -2
- data/lib/ruport/data/grouping.rb +2 -2
- data/lib/ruport/data/table.rb +314 -202
- data/lib/ruport/formatter.rb +53 -52
- data/lib/ruport/formatter/csv.rb +6 -7
- data/lib/ruport/formatter/html.rb +13 -11
- data/lib/ruport/formatter/pdf.rb +73 -75
- data/lib/ruport/formatter/prawn_pdf.rb +72 -0
- data/lib/ruport/formatter/template.rb +1 -1
- data/lib/ruport/version.rb +1 -1
- data/test/controller_test.rb +100 -122
- data/test/csv_formatter_test.rb +15 -15
- data/test/data_feeder_test.rb +26 -26
- data/test/grouping_test.rb +30 -29
- data/test/helpers.rb +18 -10
- data/test/html_formatter_test.rb +24 -24
- data/test/record_test.rb +14 -14
- data/test/samples/sales.csv +21 -0
- data/test/table_pivot_test.rb +68 -24
- data/test/table_test.rb +365 -336
- data/test/template_test.rb +1 -1
- data/test/text_formatter_test.rb +19 -19
- data/util/bench/data/table/bench_init.rb +1 -1
- metadata +123 -75
- data/README +0 -114
- data/test/pdf_formatter_test.rb +0 -354
data/test/template_test.rb
CHANGED
data/test/text_formatter_test.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby -w
|
2
2
|
require File.join(File.expand_path(File.dirname(__FILE__)), "helpers")
|
3
3
|
|
4
|
-
class TestRenderTextTable < Test
|
4
|
+
class TestRenderTextTable < Minitest::Test
|
5
5
|
|
6
6
|
def setup
|
7
7
|
Ruport::Formatter::Template.create(:simple) do |format|
|
@@ -23,17 +23,17 @@ class TestRenderTextTable < Test::Unit::TestCase
|
|
23
23
|
def test_basic
|
24
24
|
tf = "+-------+\n"
|
25
25
|
|
26
|
-
a = Table([], :data => [[1,2],[3,4]]).to_text
|
26
|
+
a = Ruport.Table([], :data => [[1,2],[3,4]]).to_text
|
27
27
|
assert_equal("#{tf}| 1 | 2 |\n| 3 | 4 |\n#{tf}",a)
|
28
28
|
|
29
|
-
a = Table(%w[a b], :data => [[1,2],[3,4]]).to_text
|
29
|
+
a = Ruport.Table(%w[a b], :data => [[1,2],[3,4]]).to_text
|
30
30
|
assert_equal("#{tf}| a | b |\n#{tf}| 1 | 2 |\n| 3 | 4 |\n#{tf}", a)
|
31
31
|
end
|
32
32
|
|
33
33
|
def test_centering
|
34
34
|
tf = "+---------+\n"
|
35
35
|
|
36
|
-
a = Table([], :data => [[1,2],[300,4]])
|
36
|
+
a = Ruport.Table([], :data => [[1,2],[300,4]])
|
37
37
|
assert_equal( "#{tf}| 1 | 2 |\n| 300 | 4 |\n#{tf}",
|
38
38
|
a.to_text(:alignment => :center) )
|
39
39
|
|
@@ -45,7 +45,7 @@ class TestRenderTextTable < Test::Unit::TestCase
|
|
45
45
|
|
46
46
|
def test_justified
|
47
47
|
tf = "+----------+\n"
|
48
|
-
a = Table([], :data => [[1,'Z'],[300,'BB']])
|
48
|
+
a = Ruport.Table([], :data => [[1,'Z'],[300,'BB']])
|
49
49
|
|
50
50
|
# justified alignment can be set explicitly
|
51
51
|
assert_equal "#{tf}| 1 | Z |\n| 300 | BB |\n#{tf}",
|
@@ -56,21 +56,21 @@ class TestRenderTextTable < Test::Unit::TestCase
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def test_wrapping
|
59
|
-
a = Table([], :data => [[1,2],[300,4]]).to_text(:table_width => 10)
|
59
|
+
a = Ruport.Table([], :data => [[1,2],[300,4]]).to_text(:table_width => 10)
|
60
60
|
assert_equal("+------->>\n| 1 | >>\n| 300 | >>\n+------->>\n",a)
|
61
61
|
end
|
62
62
|
|
63
63
|
def test_ignore_wrapping
|
64
|
-
a = Table([], :data => [[1,2],[300,4]]).to_text(:table_width => 10,
|
64
|
+
a = Ruport.Table([], :data => [[1,2],[300,4]]).to_text(:table_width => 10,
|
65
65
|
:ignore_table_width => true )
|
66
66
|
assert_equal("+---------+\n| 1 | 2 |\n| 300 | 4 |\n+---------+\n",a)
|
67
67
|
end
|
68
68
|
|
69
69
|
def test_render_empty_table
|
70
|
-
|
71
|
-
|
70
|
+
assert_raises(Ruport::FormatterError) { Ruport.Table([]).to_text }
|
71
|
+
Ruport.Table(%w[a b c]).to_text
|
72
72
|
|
73
|
-
a = Table(%w[a b c]).to_text
|
73
|
+
a = Ruport.Table(%w[a b c]).to_text
|
74
74
|
expected = "+-----------+\n"+
|
75
75
|
"| a | b | c |\n"+
|
76
76
|
"+-----------+\n"
|
@@ -95,7 +95,7 @@ class TestRenderTextTable < Test::Unit::TestCase
|
|
95
95
|
|
96
96
|
def test_options_hashes_override_template
|
97
97
|
opts = nil
|
98
|
-
table = Table(%w[a b c])
|
98
|
+
table = Ruport.Table(%w[a b c])
|
99
99
|
table.to_text(
|
100
100
|
:template => :simple,
|
101
101
|
:table_format => {
|
@@ -126,7 +126,7 @@ class TestRenderTextTable < Test::Unit::TestCase
|
|
126
126
|
|
127
127
|
def test_individual_options_override_template
|
128
128
|
opts = nil
|
129
|
-
table = Table(%w[a b c])
|
129
|
+
table = Ruport.Table(%w[a b c])
|
130
130
|
table.to_text(
|
131
131
|
:template => :simple,
|
132
132
|
:show_table_headers => true,
|
@@ -152,7 +152,7 @@ class TestRenderTextTable < Test::Unit::TestCase
|
|
152
152
|
# -- BUG TRAPS ------------------------------
|
153
153
|
|
154
154
|
def test_should_render_without_column_names
|
155
|
-
a = Table([], :data => [[1,2,3]]).to_text
|
155
|
+
a = Ruport.Table([], :data => [[1,2,3]]).to_text
|
156
156
|
expected = "+-----------+\n"+
|
157
157
|
"| 1 | 2 | 3 |\n"+
|
158
158
|
"+-----------+\n"
|
@@ -162,7 +162,7 @@ class TestRenderTextTable < Test::Unit::TestCase
|
|
162
162
|
end
|
163
163
|
|
164
164
|
|
165
|
-
class TestRenderTextRow < Test
|
165
|
+
class TestRenderTextRow < Minitest::Test
|
166
166
|
|
167
167
|
def test_row_basic
|
168
168
|
actual = Ruport::Controller::Row.render_text(:data => [1,2,3])
|
@@ -172,7 +172,7 @@ class TestRenderTextRow < Test::Unit::TestCase
|
|
172
172
|
end
|
173
173
|
|
174
174
|
|
175
|
-
class TestRenderTextGroup < Test
|
175
|
+
class TestRenderTextGroup < Minitest::Test
|
176
176
|
|
177
177
|
def test_render_text_group
|
178
178
|
group = Ruport::Data::Group.new(:name => 'test',
|
@@ -209,13 +209,13 @@ class TestRenderTextGroup < Test::Unit::TestCase
|
|
209
209
|
end
|
210
210
|
|
211
211
|
|
212
|
-
class TestRenderTextGrouping < Test
|
212
|
+
class TestRenderTextGrouping < Minitest::Test
|
213
213
|
|
214
214
|
def test_render_text_grouping
|
215
215
|
table = Ruport::Data::Table.new(:data => [ %w[is this more],
|
216
216
|
%w[interesting red snapper]],
|
217
217
|
:column_names => %w[i hope so])
|
218
|
-
grouping = Grouping(table, :by => "i")
|
218
|
+
grouping = Grouping(table, :by => "i", :order => :name)
|
219
219
|
|
220
220
|
actual = Ruport::Controller::Grouping.render(:text, :data => grouping)
|
221
221
|
expected = "interesting:\n\n"+
|
@@ -240,7 +240,7 @@ class TestRenderTextGrouping < Test::Unit::TestCase
|
|
240
240
|
table = Ruport::Data::Table.new(:data => [ %w[is this more],
|
241
241
|
%w[interesting red snapper]],
|
242
242
|
:column_names => %w[i hope so])
|
243
|
-
grouping = Grouping(table, :by => "i")
|
243
|
+
grouping = Grouping(table, :by => "i", :order => :name)
|
244
244
|
|
245
245
|
actual = Ruport::Controller::Grouping.render(:text, :data => grouping,
|
246
246
|
:show_table_headers => false)
|
@@ -255,4 +255,4 @@ class TestRenderTextGrouping < Test::Unit::TestCase
|
|
255
255
|
assert_equal(expected, actual)
|
256
256
|
end
|
257
257
|
|
258
|
-
end
|
258
|
+
end
|
metadata
CHANGED
@@ -1,65 +1,93 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruport
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.7.1
|
5
5
|
platform: ruby
|
6
|
-
authors:
|
6
|
+
authors:
|
7
7
|
- Gregory Brown
|
8
8
|
- Mike Milner
|
9
9
|
- Andrew France
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
dependencies:
|
17
|
-
- !ruby/object:Gem::Dependency
|
18
|
-
name: fastercsv
|
19
|
-
type: :runtime
|
20
|
-
version_requirement:
|
21
|
-
version_requirements: !ruby/object:Gem::Requirement
|
22
|
-
requirements:
|
23
|
-
- - ">="
|
24
|
-
- !ruby/object:Gem::Version
|
25
|
-
version: "0"
|
26
|
-
version:
|
27
|
-
- !ruby/object:Gem::Dependency
|
13
|
+
date: 2017-05-02 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
28
16
|
name: pdf-writer
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - '='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.1.8
|
29
22
|
type: :runtime
|
30
|
-
|
31
|
-
version_requirements: !ruby/object:Gem::Requirement
|
32
|
-
requirements:
|
33
|
-
- -
|
34
|
-
- !ruby/object:Gem::Version
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - '='
|
27
|
+
- !ruby/object:Gem::Version
|
35
28
|
version: 1.1.8
|
36
|
-
|
37
|
-
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: prawn
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - '='
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: 0.12.0
|
36
|
+
type: :runtime
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - '='
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 0.12.0
|
43
|
+
- !ruby/object:Gem::Dependency
|
44
|
+
name: rake
|
45
|
+
requirement: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0'
|
50
|
+
type: :development
|
51
|
+
prerelease: false
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
57
|
+
description: |
|
58
|
+
Ruby Reports is a software library that aims to make the task of reporting
|
59
|
+
less tedious and painful. It provides tools for data acquisition,
|
60
|
+
database interaction, formatting, and parsing/munging.
|
38
61
|
email: gregory.t.brown@gmail.com
|
39
62
|
executables: []
|
40
|
-
|
41
63
|
extensions: []
|
42
|
-
|
43
|
-
extra_rdoc_files:
|
64
|
+
extra_rdoc_files:
|
44
65
|
- LICENSE
|
45
|
-
- README
|
46
|
-
files:
|
66
|
+
- README.rdoc
|
67
|
+
files:
|
47
68
|
- AUTHORS
|
48
69
|
- COPYING
|
49
70
|
- HACKING
|
50
71
|
- LICENSE
|
51
|
-
- README
|
72
|
+
- README.rdoc
|
52
73
|
- Rakefile
|
53
74
|
- examples/RWEmerson.jpg
|
75
|
+
- examples/add_row_table.rb
|
54
76
|
- examples/anon.rb
|
55
77
|
- examples/btree/commaleon/commaleon.rb
|
56
78
|
- examples/btree/commaleon/sample_data/ticket_count.csv
|
57
79
|
- examples/btree/commaleon/sample_data/ticket_count2.csv
|
58
80
|
- examples/centered_pdf_text_box.rb
|
59
81
|
- examples/data/tattle.dump
|
82
|
+
- examples/data/wine.csv
|
60
83
|
- examples/example.csv
|
61
84
|
- examples/line_plotter.rb
|
85
|
+
- examples/pdf_grouping.rb
|
62
86
|
- examples/pdf_report_with_common_base.rb
|
87
|
+
- examples/pdf_table.rb
|
88
|
+
- examples/pdf_table_from_csv.rb
|
89
|
+
- examples/pdf_table_prawn.rb
|
90
|
+
- examples/pdf_table_simple.rb
|
63
91
|
- examples/png_embed.rb
|
64
92
|
- examples/roadmap.png
|
65
93
|
- examples/row_renderer.rb
|
@@ -82,6 +110,7 @@ files:
|
|
82
110
|
- lib/ruport/formatter/csv.rb
|
83
111
|
- lib/ruport/formatter/html.rb
|
84
112
|
- lib/ruport/formatter/pdf.rb
|
113
|
+
- lib/ruport/formatter/prawn_pdf.rb
|
85
114
|
- lib/ruport/formatter/template.rb
|
86
115
|
- lib/ruport/formatter/text.rb
|
87
116
|
- lib/ruport/version.rb
|
@@ -92,7 +121,6 @@ files:
|
|
92
121
|
- test/grouping_test.rb
|
93
122
|
- test/helpers.rb
|
94
123
|
- test/html_formatter_test.rb
|
95
|
-
- test/pdf_formatter_test.rb
|
96
124
|
- test/record_test.rb
|
97
125
|
- test/samples/addressbook.csv
|
98
126
|
- test/samples/data.csv
|
@@ -101,6 +129,7 @@ files:
|
|
101
129
|
- test/samples/erb_test.sql
|
102
130
|
- test/samples/query_test.sql
|
103
131
|
- test/samples/ruport_test.sql
|
132
|
+
- test/samples/sales.csv
|
104
133
|
- test/samples/test.sql
|
105
134
|
- test/samples/test.yaml
|
106
135
|
- test/samples/ticket_count.csv
|
@@ -124,60 +153,79 @@ files:
|
|
124
153
|
- util/bench/samples/tattle.csv
|
125
154
|
- util/release/freshmeat.rb
|
126
155
|
- util/release/raa.rb
|
127
|
-
|
128
|
-
homepage: http://rubyreports.org
|
156
|
+
homepage: http://github.com/ruport/ruport
|
129
157
|
licenses: []
|
130
|
-
|
158
|
+
metadata: {}
|
131
159
|
post_install_message:
|
132
|
-
rdoc_options:
|
133
|
-
- --title
|
160
|
+
rdoc_options:
|
161
|
+
- "--title"
|
134
162
|
- Ruport Documentation
|
135
|
-
- --main
|
136
|
-
- README
|
137
|
-
- -q
|
138
|
-
require_paths:
|
163
|
+
- "--main"
|
164
|
+
- README.rdoc
|
165
|
+
- "-q"
|
166
|
+
require_paths:
|
139
167
|
- lib
|
140
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
141
|
-
requirements:
|
168
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
169
|
+
requirements:
|
142
170
|
- - ">="
|
143
|
-
- !ruby/object:Gem::Version
|
144
|
-
version:
|
145
|
-
|
146
|
-
|
147
|
-
requirements:
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: '0'
|
173
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
174
|
+
requirements:
|
148
175
|
- - ">="
|
149
|
-
- !ruby/object:Gem::Version
|
150
|
-
version:
|
151
|
-
version:
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
version: '0'
|
152
178
|
requirements: []
|
153
|
-
|
154
|
-
|
155
|
-
rubygems_version: 1.3.5
|
179
|
+
rubyforge_project:
|
180
|
+
rubygems_version: 2.6.10
|
156
181
|
signing_key:
|
157
|
-
specification_version:
|
182
|
+
specification_version: 4
|
158
183
|
summary: A generalized Ruby report generation and templating engine.
|
159
|
-
test_files:
|
160
|
-
-
|
161
|
-
-
|
162
|
-
-
|
163
|
-
-
|
164
|
-
-
|
165
|
-
-
|
166
|
-
- test/table_test.rb
|
167
|
-
- test/text_formatter_test.rb
|
168
|
-
- test/html_formatter_test.rb
|
169
|
-
- test/grouping_test.rb
|
170
|
-
- test/controller_test.rb
|
171
|
-
- test/pdf_formatter_test.rb
|
184
|
+
test_files:
|
185
|
+
- examples/RWEmerson.jpg
|
186
|
+
- examples/add_row_table.rb
|
187
|
+
- examples/anon.rb
|
188
|
+
- examples/btree/commaleon/commaleon.rb
|
189
|
+
- examples/btree/commaleon/sample_data/ticket_count.csv
|
190
|
+
- examples/btree/commaleon/sample_data/ticket_count2.csv
|
172
191
|
- examples/centered_pdf_text_box.rb
|
192
|
+
- examples/data/tattle.dump
|
193
|
+
- examples/data/wine.csv
|
194
|
+
- examples/example.csv
|
173
195
|
- examples/line_plotter.rb
|
174
|
-
- examples/
|
175
|
-
- examples/anon.rb
|
196
|
+
- examples/pdf_grouping.rb
|
176
197
|
- examples/pdf_report_with_common_base.rb
|
198
|
+
- examples/pdf_table.rb
|
199
|
+
- examples/pdf_table_from_csv.rb
|
200
|
+
- examples/pdf_table_prawn.rb
|
201
|
+
- examples/pdf_table_simple.rb
|
202
|
+
- examples/png_embed.rb
|
203
|
+
- examples/roadmap.png
|
177
204
|
- examples/row_renderer.rb
|
178
|
-
- examples/tattle_ruby_version.rb
|
179
205
|
- examples/simple_pdf_lines.rb
|
180
|
-
- examples/png_embed.rb
|
181
|
-
- examples/trac_ticket_status.rb
|
182
|
-
- examples/tattle_rubygems_version.rb
|
183
206
|
- examples/simple_templating_example.rb
|
207
|
+
- examples/tattle_ruby_version.rb
|
208
|
+
- examples/tattle_rubygems_version.rb
|
209
|
+
- examples/trac_ticket_status.rb
|
210
|
+
- test/controller_test.rb
|
211
|
+
- test/csv_formatter_test.rb
|
212
|
+
- test/data_feeder_test.rb
|
213
|
+
- test/grouping_test.rb
|
214
|
+
- test/helpers.rb
|
215
|
+
- test/html_formatter_test.rb
|
216
|
+
- test/record_test.rb
|
217
|
+
- test/samples/addressbook.csv
|
218
|
+
- test/samples/data.csv
|
219
|
+
- test/samples/data.tsv
|
220
|
+
- test/samples/dates.csv
|
221
|
+
- test/samples/erb_test.sql
|
222
|
+
- test/samples/query_test.sql
|
223
|
+
- test/samples/ruport_test.sql
|
224
|
+
- test/samples/sales.csv
|
225
|
+
- test/samples/test.sql
|
226
|
+
- test/samples/test.yaml
|
227
|
+
- test/samples/ticket_count.csv
|
228
|
+
- test/table_pivot_test.rb
|
229
|
+
- test/table_test.rb
|
230
|
+
- test/template_test.rb
|
231
|
+
- test/text_formatter_test.rb
|
data/README
DELETED
@@ -1,114 +0,0 @@
|
|
1
|
-
# -----------------------------------------------------------------
|
2
|
-
# Contents:
|
3
|
-
#
|
4
|
-
# + What Ruport Is
|
5
|
-
# + Installation
|
6
|
-
# + Resources
|
7
|
-
# + Hacking
|
8
|
-
#
|
9
|
-
# = What Ruport Is
|
10
|
-
#
|
11
|
-
# Ruby Reports (Ruport) is an extensible reporting system.
|
12
|
-
#
|
13
|
-
# It aims to be as lightweight as possible while still providing core support
|
14
|
-
# for data aggregation and manipulation as well as multi-format rendering
|
15
|
-
# of reports.
|
16
|
-
#
|
17
|
-
# Ruport provides tools for using a number of data sources, including CSV files,
|
18
|
-
# ActiveRecord models, and raw SQL connections via RubyDBI (through ruport-util).
|
19
|
-
#
|
20
|
-
# Data manipulation is easy as there are standard structures that support
|
21
|
-
# record, table, and grouping operations. These all can be extended to
|
22
|
-
# implement custom behavior as needed.
|
23
|
-
#
|
24
|
-
# For common tasks, Ruport provides formatters for CSV, HTML, PDF, and text-
|
25
|
-
# based reports. However, the real power lies in building custom report
|
26
|
-
# controllers and formatters. The base formatting libraries provide a number
|
27
|
-
# of helper functions that will let you build complex reports while maintaining
|
28
|
-
# a DRY and consistent interface.
|
29
|
-
#
|
30
|
-
# To get a quick feel for what you can accomplish with Ruport, take a look at
|
31
|
-
# a few simple examples provided on our web site.
|
32
|
-
#
|
33
|
-
# http://rubyreports.org/examples.html
|
34
|
-
#
|
35
|
-
# Since Ruport's core support is intentionally minimalistic, you may be looking
|
36
|
-
# for some higher level support for specific needs such as graphing, invoices,
|
37
|
-
# report mailing support, etc. For this, you may wish to take a look at the
|
38
|
-
# ruport-util package, which contains some generally useful tools and libraries
|
39
|
-
# to extend Ruport's capabilities.
|
40
|
-
#
|
41
|
-
# = Installation
|
42
|
-
#
|
43
|
-
# To install ruport via rubygems:
|
44
|
-
#
|
45
|
-
# sudo gem install ruport
|
46
|
-
#
|
47
|
-
# Check to see if it installed properly:
|
48
|
-
#
|
49
|
-
# ruby -rubygems -e "require 'ruport'; puts Ruport::VERSION"
|
50
|
-
#
|
51
|
-
# If you get an error, please let us know on our mailing list.
|
52
|
-
#
|
53
|
-
# Dependencies Details:
|
54
|
-
#
|
55
|
-
# -- formatting
|
56
|
-
#
|
57
|
-
# Ruport relies on PDF::Writer and FasterCSV for its formatting support.
|
58
|
-
# If you want to make use of textile helpers, you'll also need RedCloth.
|
59
|
-
#
|
60
|
-
# -- database interaction
|
61
|
-
#
|
62
|
-
# If you wish to use Ruport to report against a rails project,
|
63
|
-
# a camping project, or do standalone acts_as_reportable reports, you'll need
|
64
|
-
# ActiveRecord and the acts_as_reportable gem.
|
65
|
-
#
|
66
|
-
# If you want to use Ruport::Query for raw SQL support, you'll need to
|
67
|
-
# install ruport-util, RubyDBI and whatever database drivers you might need.
|
68
|
-
#
|
69
|
-
# = Resources
|
70
|
-
#
|
71
|
-
# Our developers have published a free-content book about all things
|
72
|
-
# Ruport, including complete coverage of acts_as_reportable and some of
|
73
|
-
# ruport-util's features. This book serves as the definitive guide to
|
74
|
-
# Ruport, so all users should become acquainted with it:
|
75
|
-
#
|
76
|
-
# http://ruportbook.com
|
77
|
-
#
|
78
|
-
# The next best way to get help and make suggestions is the Ruport mailing list.
|
79
|
-
# This software is on the move, so the list is the most reliable way of getting
|
80
|
-
# up to date information.
|
81
|
-
#
|
82
|
-
# - You can sign up and/or view the archives here:
|
83
|
-
# http://groups.google.com/group/ruby-reports
|
84
|
-
#
|
85
|
-
# If you are looking to dig a little deeper, there are a couple more resources
|
86
|
-
# that may be helpful to you.
|
87
|
-
#
|
88
|
-
# - The latest stable API documentation is available at:
|
89
|
-
# http://api.rubyreports.org
|
90
|
-
#
|
91
|
-
# - Our Trac is at: http://code.rubyreports.org/ruport
|
92
|
-
# You may use the username ruport and password blinky to file tickets.
|
93
|
-
#
|
94
|
-
# = Hacking
|
95
|
-
#
|
96
|
-
# If you'd like to contribute code to Ruport, please join our development
|
97
|
-
# mailing list, and let us know what you'd like to do!
|
98
|
-
#
|
99
|
-
# http://groups.google.com/group/ruport-dev
|
100
|
-
#
|
101
|
-
# It also may be worthwhile to join this list if you plan on running edge
|
102
|
-
# versions of Ruport, as this is where we make announcements about major
|
103
|
-
# breakage in trunk.
|
104
|
-
#
|
105
|
-
# We are very responsive to contributors, and review every patch we receive
|
106
|
-
# fairly quickly. Most contributors who successfully get a patch or two applied
|
107
|
-
# are given write access to the repositories and invited to join Ruport's
|
108
|
-
# development team. Since we view every user as potential contributor, this
|
109
|
-
# approach works well for us.
|
110
|
-
#
|
111
|
-
# So if you want to help out with Ruport, we'll happy accept your efforts!
|
112
|
-
|
113
|
-
|
114
|
-
|