ruport-util 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -1
- data/example/mailer.rb +1 -1
- data/lib/ruport/util/bench.rb +31 -0
- data/lib/ruport/util/graph.rb +0 -1
- data/lib/ruport/util/invoice.rb +2 -9
- data/lib/ruport/util/mailer.rb +57 -61
- data/lib/ruport/util.rb +2 -0
- data/test/test_invoice.rb +4 -2
- data/test/test_mailer.rb +9 -8
- metadata +4 -4
- data/example/mailed_report.rb +0 -0
data/Rakefile
CHANGED
@@ -18,7 +18,7 @@ end
|
|
18
18
|
|
19
19
|
spec = Gem::Specification.new do |spec|
|
20
20
|
spec.name = "ruport-util"
|
21
|
-
spec.version = "0.
|
21
|
+
spec.version = "0.3.0"
|
22
22
|
spec.platform = Gem::Platform::RUBY
|
23
23
|
spec.summary = "A set of tools and helper libs for Ruby Reports"
|
24
24
|
spec.files = Dir.glob("{example,lib,test,bin}/**/**/*") +
|
data/example/mailer.rb
CHANGED
@@ -0,0 +1,31 @@
|
|
1
|
+
module Ruport::Bench
|
2
|
+
|
3
|
+
require "benchmark"
|
4
|
+
|
5
|
+
def bench_case(name,n,&block)
|
6
|
+
2.times {
|
7
|
+
@run = 0
|
8
|
+
n.times do
|
9
|
+
@bench_prepare.call if @bench_prepare
|
10
|
+
@run += Benchmark.realtime { block.call }
|
11
|
+
end
|
12
|
+
}
|
13
|
+
@bench_results << { "name" => name, "iterations" => n,
|
14
|
+
"realtime" => (time = sprintf("%.5f",@run)) }
|
15
|
+
STDERR.puts "> #{name}... ok[#{time}] "
|
16
|
+
@bench_prepare = nil
|
17
|
+
end
|
18
|
+
|
19
|
+
def bench_prepare(&block)
|
20
|
+
@bench_prepare = block
|
21
|
+
end
|
22
|
+
|
23
|
+
def bench_suite(&block)
|
24
|
+
STDERR.puts "Running Bench Suite..."
|
25
|
+
@bench_results = Table(%w[name iterations realtime])
|
26
|
+
block.call
|
27
|
+
puts @bench_results
|
28
|
+
puts "Suite run time: " << sprintf("%.5f",@bench_results.sigma("realtime"))
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
data/lib/ruport/util/graph.rb
CHANGED
data/lib/ruport/util/invoice.rb
CHANGED
@@ -85,15 +85,8 @@ module Ruport
|
|
85
85
|
end
|
86
86
|
|
87
87
|
def build_invoice_body
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
Ruport::Renderer::Table.render_pdf { |r|
|
92
|
-
r.data = data
|
93
|
-
r.options.formatter = pdf_writer
|
94
|
-
r.options.table_width = options.body_width || 450
|
95
|
-
}
|
96
|
-
|
88
|
+
move_cursor_to 600
|
89
|
+
draw_table data, :width => options.body_width || 450
|
97
90
|
end
|
98
91
|
|
99
92
|
def build_invoice_footer
|
data/lib/ruport/util/mailer.rb
CHANGED
@@ -9,7 +9,6 @@ require "forwardable"
|
|
9
9
|
|
10
10
|
module Ruport
|
11
11
|
|
12
|
-
#
|
13
12
|
# === Overview
|
14
13
|
#
|
15
14
|
# This class uses SMTP to provide a simple mail sending mechanism.
|
@@ -37,9 +36,10 @@ module Ruport
|
|
37
36
|
# :text => "This is what you asked for"
|
38
37
|
#
|
39
38
|
class Mailer
|
39
|
+
|
40
|
+
class InvalidMailerConfigurationError < RuntimeError; end
|
40
41
|
extend Forwardable
|
41
42
|
|
42
|
-
#
|
43
43
|
# Creates a new Mailer object. Optionally, you can select a mailer
|
44
44
|
# specified by Ruport::Config.
|
45
45
|
#
|
@@ -58,8 +58,58 @@ module Ruport
|
|
58
58
|
def_delegators( :@mail, :to, :to=, :from, :from=,
|
59
59
|
:subject, :subject=, :attach,
|
60
60
|
:text, :text=, :html, :html= )
|
61
|
-
|
62
|
-
|
61
|
+
|
62
|
+
class << self
|
63
|
+
# :call-seq:
|
64
|
+
# mailer(mailer_name, options)
|
65
|
+
#
|
66
|
+
# Creates or retrieves a mailer configuration. Available options:
|
67
|
+
# <b><tt>:host</tt></b>:: The SMTP host to use.
|
68
|
+
# <b><tt>:address</tt></b>:: Address the email is being sent from.
|
69
|
+
# <b><tt>:user</tt></b>:: The username to use on the SMTP server
|
70
|
+
# <b><tt>:password</tt></b>:: The password to use on the SMTP server.
|
71
|
+
# Optional.
|
72
|
+
# <b><tt>:port</tt></b>:: The SMTP port to use. Optional, defaults
|
73
|
+
# to 25.
|
74
|
+
# <b><tt>:auth_type</tt></b>:: SMTP authorization method. Optional,
|
75
|
+
# defaults to <tt>:plain</tt>.
|
76
|
+
# <b><tt>:mail_klass</tt></b>:: If you don't want to use the default
|
77
|
+
# <tt>MailFactory</tt> object, you can
|
78
|
+
# pass another mailer to use here.
|
79
|
+
#
|
80
|
+
# Example (creating a mailer config):
|
81
|
+
# mailer :alternate, :host => "mail.test.com",
|
82
|
+
# :address => "test@test.com",
|
83
|
+
# :user => "test",
|
84
|
+
# :password => "blinky"
|
85
|
+
# :auth_type => :cram_md5
|
86
|
+
#
|
87
|
+
# Example (retreiving a mailer config):
|
88
|
+
# mail_conf = mailer(:alternate) #=> <OpenStruct ..>
|
89
|
+
# mail_conf.address #=> test@test.com
|
90
|
+
#
|
91
|
+
def add_mailer(name,options)
|
92
|
+
mailers[name] = OpenStruct.new(options)
|
93
|
+
check_mailer(mailers[name],name)
|
94
|
+
end
|
95
|
+
|
96
|
+
# Alias for <tt>mailers[:default]</tt>.
|
97
|
+
def default_mailer
|
98
|
+
mailers[:default]
|
99
|
+
end
|
100
|
+
|
101
|
+
# Returns all the <tt>mailer</tt>s defined
|
102
|
+
def mailers; @mailers ||= {}; end
|
103
|
+
|
104
|
+
private
|
105
|
+
|
106
|
+
# Verifies that you have provided a host for your mailer.
|
107
|
+
def check_mailer(settings, label) # :nodoc:
|
108
|
+
raise InvalidMailerConfigurationError unless settings.host
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
112
|
+
|
63
113
|
# Sends the message.
|
64
114
|
#
|
65
115
|
# Example:
|
@@ -78,7 +128,7 @@ module Ruport
|
|
78
128
|
private
|
79
129
|
|
80
130
|
def select_mailer(label)
|
81
|
-
@mailer =
|
131
|
+
@mailer = self.class.mailers[label]
|
82
132
|
@host = @mailer.host
|
83
133
|
@user = @mailer.user
|
84
134
|
@password = @mailer.password
|
@@ -110,70 +160,16 @@ module Ruport
|
|
110
160
|
m.deliver :from => m.from, :to => m.to
|
111
161
|
end
|
112
162
|
|
113
|
-
# Sets the active mailer to the Ruport::
|
163
|
+
# Sets the active mailer to the Ruport::Mailer source requested by <tt>label</tt>.
|
114
164
|
def use_mailer(label)
|
115
165
|
@mailer = label
|
116
166
|
end
|
117
167
|
|
118
|
-
def_delegator Ruport::
|
168
|
+
def_delegator Ruport::Mailer, :add_mailer
|
119
169
|
|
120
170
|
end
|
121
171
|
|
122
|
-
module Config
|
123
|
-
module_function
|
124
|
-
# Verifies that you have provided a host for your mailer.
|
125
|
-
def check_mailer(settings, label) # :nodoc:
|
126
|
-
unless settings.host
|
127
|
-
Ruport.log(
|
128
|
-
"Missing host for mailer #{label}",
|
129
|
-
:status => :fatal, :level => :log_only,
|
130
|
-
:raises => ArgumentError
|
131
|
-
)
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
|
-
# :call-seq:
|
136
|
-
# mailer(mailer_name, options)
|
137
|
-
#
|
138
|
-
# Creates or retrieves a mailer configuration. Available options:
|
139
|
-
# <b><tt>:host</tt></b>:: The SMTP host to use.
|
140
|
-
# <b><tt>:address</tt></b>:: Address the email is being sent from.
|
141
|
-
# <b><tt>:user</tt></b>:: The username to use on the SMTP server
|
142
|
-
# <b><tt>:password</tt></b>:: The password to use on the SMTP server.
|
143
|
-
# Optional.
|
144
|
-
# <b><tt>:port</tt></b>:: The SMTP port to use. Optional, defaults
|
145
|
-
# to 25.
|
146
|
-
# <b><tt>:auth_type</tt></b>:: SMTP authorization method. Optional,
|
147
|
-
# defaults to <tt>:plain</tt>.
|
148
|
-
# <b><tt>:mail_klass</tt></b>:: If you don't want to use the default
|
149
|
-
# <tt>MailFactory</tt> object, you can
|
150
|
-
# pass another mailer to use here.
|
151
|
-
#
|
152
|
-
# Example (creating a mailer config):
|
153
|
-
# mailer :alternate, :host => "mail.test.com",
|
154
|
-
# :address => "test@test.com",
|
155
|
-
# :user => "test",
|
156
|
-
# :password => "blinky"
|
157
|
-
# :auth_type => :cram_md5
|
158
|
-
#
|
159
|
-
# Example (retreiving a mailer config):
|
160
|
-
# mail_conf = mailer(:alternate) #=> <OpenStruct ..>
|
161
|
-
# mail_conf.address #=> test@test.com
|
162
|
-
#
|
163
|
-
def mailer(*args)
|
164
|
-
return mailers[args.first] if args.length == 1
|
165
|
-
mailers[args.first] = OpenStruct.new(*args[1..-1])
|
166
|
-
check_mailer(mailers[args.first],args.first)
|
167
|
-
end
|
168
|
-
|
169
|
-
# Alias for <tt>mailers[:default]</tt>.
|
170
|
-
def default_mailer
|
171
|
-
mailers[:default]
|
172
|
-
end
|
173
172
|
|
174
|
-
# Returns all the <tt>mailer</tt>s defined in this <tt>Config</tt>.
|
175
|
-
def mailers; @mailers ||= {}; end
|
176
|
-
end
|
177
173
|
|
178
174
|
|
179
175
|
end
|
data/lib/ruport/util.rb
CHANGED
data/test/test_invoice.rb
CHANGED
@@ -4,7 +4,9 @@ require "ruport/util/invoice"
|
|
4
4
|
class TestInvoice < Test::Unit::TestCase
|
5
5
|
|
6
6
|
def test_required_options
|
7
|
-
assert_raises(
|
7
|
+
assert_raises(Ruport::Renderer::RequiredOptionNotSet) {
|
8
|
+
Ruport::Renderer::Invoice.render_pdf
|
9
|
+
}
|
8
10
|
|
9
11
|
#hash form
|
10
12
|
assert_nothing_raised {
|
@@ -26,4 +28,4 @@ class TestInvoice < Test::Unit::TestCase
|
|
26
28
|
end
|
27
29
|
|
28
30
|
|
29
|
-
end
|
31
|
+
end
|
data/test/test_mailer.rb
CHANGED
@@ -27,8 +27,8 @@ class TestMailer < Test::Unit::TestCase
|
|
27
27
|
:password => "bacon"
|
28
28
|
}
|
29
29
|
|
30
|
-
Ruport::
|
31
|
-
Ruport::
|
30
|
+
Ruport::Mailer.add_mailer :default, @default_opts
|
31
|
+
Ruport::Mailer.add_mailer :other, @other_opts
|
32
32
|
|
33
33
|
@default_mailer = Ruport::Mailer.new
|
34
34
|
@other_mailer = Ruport::Mailer.new :other
|
@@ -52,8 +52,8 @@ class TestMailer < Test::Unit::TestCase
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def test_mail_defaults
|
55
|
-
assert_equal( Ruport::
|
56
|
-
Ruport::
|
55
|
+
assert_equal( Ruport::Mailer.mailers[:default],
|
56
|
+
Ruport::Mailer.default_mailer)
|
57
57
|
end
|
58
58
|
|
59
59
|
|
@@ -67,7 +67,7 @@ class TestMailer < Test::Unit::TestCase
|
|
67
67
|
end
|
68
68
|
|
69
69
|
def test_constructor_without_mailer
|
70
|
-
Ruport::
|
70
|
+
Ruport::Mailer.mailers[:default] = nil
|
71
71
|
assert_raise(RuntimeError) { Ruport::Mailer.new }
|
72
72
|
end
|
73
73
|
|
@@ -80,10 +80,11 @@ class TestMailer < Test::Unit::TestCase
|
|
80
80
|
end
|
81
81
|
|
82
82
|
def test_mailer_config_errors
|
83
|
-
|
84
|
-
|
83
|
+
|
84
|
+
assert_raise(Ruport::Mailer::InvalidMailerConfigurationError) {
|
85
|
+
Ruport::Mailer.add_mailer :bar, :user => :foo, :address => "foo@bar.com"
|
85
86
|
}
|
86
|
-
assert_nothing_raised { Ruport::
|
87
|
+
assert_nothing_raised { Ruport::Mailer.add_mailer :bar, :host => "localhost" }
|
87
88
|
end
|
88
89
|
|
89
90
|
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
|
|
3
3
|
specification_version: 1
|
4
4
|
name: ruport-util
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date: 2007-04-
|
6
|
+
version: 0.3.0
|
7
|
+
date: 2007-04-22 00:00:00 -04:00
|
8
8
|
summary: A set of tools and helper libs for Ruby Reports
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -29,7 +29,6 @@ post_install_message:
|
|
29
29
|
authors:
|
30
30
|
- Gregory Brown
|
31
31
|
files:
|
32
|
-
- example/mailed_report.rb
|
33
32
|
- example/invoice_report.rb
|
34
33
|
- example/managed_report.rb
|
35
34
|
- example/mailer.rb
|
@@ -37,9 +36,10 @@ files:
|
|
37
36
|
- lib/ruport
|
38
37
|
- lib/ruport/util
|
39
38
|
- lib/ruport/util.rb
|
39
|
+
- lib/ruport/util/mailer.rb
|
40
|
+
- lib/ruport/util/bench.rb
|
40
41
|
- lib/ruport/util/graph.rb
|
41
42
|
- lib/ruport/util/report_manager.rb
|
42
|
-
- lib/ruport/util/mailer.rb
|
43
43
|
- lib/ruport/util/invoice.rb
|
44
44
|
- test/samples
|
45
45
|
- test/init.rb
|
data/example/mailed_report.rb
DELETED
File without changes
|