winton-sum 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -8,6 +8,8 @@ The flow
8
8
 
9
9
  Fill out a form containing your total monthly bills, income, and desired savings. When you use your credit card or the ATM, send an email to [sum@sumapp.com](mailto:sum@sumapp.com) with the dollar amount. Every midnight, you will receive an email with budgeting metrics for the day.
10
10
 
11
+ Take a look at the [read email feature](http://github.com/winton/sum/blob/master/features/read_email.feature) to see example budget email scenarios.
12
+
11
13
  Development setup
12
14
  -----------------
13
15
 
@@ -25,6 +27,12 @@ git clone git@github.com:YOUR_NAME/sum.git
25
27
  cd sum
26
28
  </pre>
27
29
 
30
+ Create your database:
31
+
32
+ <pre>
33
+ mysql -uroot -e "create database sum;"
34
+ </pre>
35
+
28
36
  Copy and edit the example config files:
29
37
 
30
38
  <pre>
@@ -33,6 +41,12 @@ cp config/mail.example.yml config/mail.yml
33
41
  mate config/database.yml config/mail.yml
34
42
  </pre>
35
43
 
44
+ Migrate the database:
45
+
46
+ <pre>
47
+ rake db:migrate
48
+ </pre>
49
+
36
50
  Start the application with shotgun:
37
51
 
38
52
  <pre>
@@ -15,6 +15,6 @@ every 1.minute do
15
15
  when 'development'
16
16
  command "curl http://localhost:#{@port}/cron"
17
17
  else
18
- command "curl http://sumapp.com/#{key}"
18
+ command "curl https://sumapp.com/#{key}"
19
19
  end
20
20
  end
@@ -11,4 +11,5 @@ Feature: Front page
11
11
  And I should see an income text field
12
12
  And I should see a bills text field
13
13
  And I should see an email text field
14
+ And I should see a tos checkbox
14
15
  And I should see a submit button
@@ -9,7 +9,6 @@ Feature: Read email
9
9
  And I have created an account with these attributes:
10
10
  | savings | income | bills |
11
11
  | 1000 | 5000 | 2500 |
12
- # income - bills - savings = 1500 (spending money)
13
12
  And my email queue is empty
14
13
 
15
14
  Scenario: I see some static information every day
@@ -6,6 +6,10 @@ Then /^I should see a.? (.+) text field$/ do |field|
6
6
  assert_have_selector "#user_#{field}"
7
7
  end
8
8
 
9
+ Then /^I should see a.? (.+) checkbox$/ do |field|
10
+ assert_have_selector "#user_#{field}"
11
+ end
12
+
9
13
  Then /^I should see a submit button$/ do
10
14
  assert_have_selector "input[type=image]"
11
15
  end
@@ -28,7 +28,12 @@ end
28
28
 
29
29
  When /^submit an empty (.+)$/ do |field|
30
30
  fill_all_with_valid_data
31
- fill_in "user[#{field.split.first}]", :with => ""
31
+ case field
32
+ when 'tos'
33
+ uncheck "user[#{field}]"
34
+ else
35
+ fill_in "user[#{field.split.first}]", :with => ""
36
+ end
32
37
  click_button
33
38
  end
34
39
 
@@ -7,10 +7,16 @@ def fill_all_with_valid_data(hash={})
7
7
  'savings' => '0',
8
8
  'income' => '0',
9
9
  'bills' => '0',
10
- 'email' => current_email_address
10
+ 'email' => current_email_address,
11
+ 'tos' => '1'
11
12
  }.merge(hash)
12
13
  valid.each do |key, value|
13
- fill_in "user[#{key}]", :with => value
14
+ case key
15
+ when 'tos'
16
+ check "user[#{key}]"
17
+ else
18
+ fill_in "user[#{key}]", :with => value
19
+ end
14
20
  end
15
21
  end
16
22
 
@@ -73,4 +73,11 @@ Feature: Update user
73
73
  And submit an empty email
74
74
  Then I should see a form
75
75
  And the email field should have an error
76
- And the error should be "can't be blank"
76
+ And the error should be "can't be blank"
77
+
78
+ Scenario: I don't check the terms of service
79
+ When I visit the front page
80
+ And submit an empty tos
81
+ Then I should see a form
82
+ And the tos field should have an error
83
+ And the error should be "must be accepted"
data/gemspec.rb CHANGED
@@ -22,16 +22,16 @@ GEM_SPEC = Gem::Specification.new do |s|
22
22
  s.summary = "A simple budgeting app built on Sinatra"
23
23
  # == CONFIGURE ==
24
24
  s.add_dependency('bmabey-email_spec', '=0.2.0')
25
- s.add_dependency('cucumber', '>=0.3.11')
26
- s.add_dependency('haml', '=2.0.9')
27
- s.add_dependency('less', '>=0.8.11')
25
+ s.add_dependency('cucumber', '=0.3.93')
26
+ s.add_dependency('haml', '=2.2.2')
27
+ s.add_dependency('less', '=0.8.11')
28
28
  s.add_dependency('javan-whenever', '=0.3.6')
29
- s.add_dependency('rack', '>=1.0.0')
30
- s.add_dependency('rack-test', '>=0.4.0')
31
- s.add_dependency('rspec', '>=1.2.7')
32
- s.add_dependency('shotgun', '>=0.3')
33
- s.add_dependency('sinatra', '=0.9.2')
34
- s.add_dependency('winton-active_wrapper', '=0.1.5')
29
+ s.add_dependency('rack', '=1.0.0')
30
+ s.add_dependency('rack-test', '=0.4.0')
31
+ s.add_dependency('rspec', '=1.2.8')
32
+ s.add_dependency('shotgun', '=0.3')
33
+ s.add_dependency('sinatra', '=0.9.4')
34
+ s.add_dependency('winton-active_wrapper', '=0.1.9')
35
35
  s.add_dependency('winton-externals', '=1.0.2')
36
36
  s.add_dependency('winton-fetcher', '=0.1.2')
37
37
  s.add_dependency('winton-secret_key', '=0.1.0')
@@ -41,5 +41,5 @@ GEM_SPEC = Gem::Specification.new do |s|
41
41
  s.name = GEM_NAME
42
42
  s.platform = Gem::Platform::RUBY
43
43
  s.require_path = "lib"
44
- s.version = "0.1.0"
44
+ s.version = "0.1.1"
45
45
  end
data/lib/sum.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  require 'rubygems'
2
2
 
3
3
  gems = [
4
- [ 'haml', '=2.0.9' ],
5
- [ 'sinatra', '=0.9.2' ],
6
- [ 'winton-active_wrapper', '=0.1.5' ],
4
+ [ 'haml', '=2.2.2' ],
5
+ [ 'sinatra', '=0.9.4' ],
6
+ [ 'winton-active_wrapper', '=0.1.9' ],
7
7
  [ 'winton-fetcher', '=0.1.2' ],
8
8
  [ 'winton-secret_key', '=0.1.0' ]
9
9
  ]
@@ -5,11 +5,12 @@ Application.class_eval do
5
5
  @user && @user.errors.on(attribute)
6
6
  end
7
7
 
8
- def field(attribute, question)
8
+ def field(type, attribute, question)
9
9
  partial(
10
10
  :field,
11
11
  :locals => {
12
12
  :attribute => attribute,
13
+ :checkbox => type == :checkbox,
13
14
  :question => question
14
15
  }
15
16
  )
@@ -5,6 +5,7 @@ class User < ActiveRecord::Base
5
5
  attr_accessible :income
6
6
  attr_accessible :savings
7
7
  attr_accessible :timezone_offset
8
+ attr_accessible :tos
8
9
 
9
10
  after_create :after_create_email
10
11
  before_create :before_create_timestamps
@@ -17,6 +18,15 @@ class User < ActiveRecord::Base
17
18
 
18
19
  serialize :recent_transactions
19
20
 
21
+ not_saved_from_form = lambda do |r|
22
+ r.bills.nil? && r.income.nil? && r.savings.nil?
23
+ end
24
+
25
+ validates_acceptance_of(
26
+ :tos,
27
+ :allow_nil => false,
28
+ :unless => not_saved_from_form
29
+ )
20
30
  validates_format_of(
21
31
  :email,
22
32
  :with => /\S+@\S+\.\S+/,
@@ -26,7 +36,7 @@ class User < ActiveRecord::Base
26
36
  :bills,
27
37
  :income,
28
38
  :savings,
29
- :unless => lambda { |r| r.bills.nil? && r.income.nil? && r.savings.nil? }
39
+ :unless => not_saved_from_form
30
40
  )
31
41
  validates_presence_of :email, :unless => lambda { |r| r.email.nil? }
32
42
 
@@ -78,14 +88,16 @@ class User < ActiveRecord::Base
78
88
 
79
89
  # Instance methods
80
90
 
81
- [ :email, :bills, :income, :savings ].each do |attribute|
91
+ [ :email, :bills, :income, :savings, :tos ].each do |attribute|
82
92
  define_method(attribute) do
83
93
  read_attribute attribute
84
94
  end
85
95
  define_method("#{attribute}=") do |value|
86
96
  write_attribute(
87
97
  attribute,
88
- attribute == :email ? value : to_number(value)
98
+ attribute == :email || attribute == :tos ?
99
+ value :
100
+ to_number(value)
89
101
  )
90
102
  end
91
103
  end
@@ -1,10 +1,23 @@
1
1
  - if valid?(attribute)
2
2
  %input{ :name => "user[#{attribute}]", :type => "hidden", :value => @user.send(attribute) }
3
+
3
4
  - else
4
5
  .field
5
6
  %label{ :for => "user_#{attribute}" }
6
- = question
7
- - if errors_on(attribute)
8
- .validation
9
- = errors_on(attribute)
10
- %input{ :id => "user_#{attribute}", :name => "user[#{attribute}]", :type => "text" }
7
+ - unless checkbox
8
+ = question
9
+ - unless checkbox
10
+ - if errors_on(attribute)
11
+ .validation
12
+ = errors_on(attribute)
13
+ - if checkbox
14
+ .checkbox
15
+ %input{ :id => "user_#{attribute}", :name => "user[#{attribute}]", :value => "1", :type => "checkbox" }
16
+ %label{ :for => "user_#{attribute}" }
17
+ = question
18
+ - if errors_on(attribute)
19
+ .validation
20
+ = errors_on(attribute)
21
+ - else
22
+ .text
23
+ %input{ :id => "user_#{attribute}", :name => "user[#{attribute}]", :type => "text" }
@@ -3,10 +3,11 @@
3
3
  %img{ :src => '/image/field_on.png', :style => 'display:none' }
4
4
  %input{ :id => "timezone_offset", :name => "user[timezone_offset]", :type => "hidden" }
5
5
 
6
- = field :savings, "How much do you want to save each month?"
7
- = field :income, "How much money do you receive each month?"
8
- = field :bills, "How much do you spend on bills each month?"
9
- = field :email, "What is your email address?"
6
+ = field :text, :savings, "How much do you want to save each month?"
7
+ = field :text, :income, "How much money do you receive each month?"
8
+ = field :text, :bills, "How much do you spend on bills each month?"
9
+ = field :text, :email, "What is your email address?"
10
+ = field :checkbox, :tos, partial(:tos)
10
11
 
11
12
  .submit
12
13
  %input{ :src => '/image/submit.png', :type => 'image' }
@@ -22,4 +22,8 @@
22
22
  for the day.
23
23
 
24
24
  .spacer
25
- = partial :form
25
+ = partial :form
26
+
27
+ %h2
28
+ %a{ :href => 'http://faq.sumapp.com', :target => '_new' }
29
+ Frequently Asked Questions
@@ -8,7 +8,7 @@
8
8
  %link{ :href => "/style/facebox.css", :media => "screen, projection", :rel => "stylesheet", :type => "text/css" }
9
9
  %link{ :href => "/style/print.css", :media => "print", :rel => "stylesheet", :type => "text/css" }
10
10
  %link{ :href => "/style/screen.css", :media => "screen, projection", :rel => "stylesheet", :type => "text/css" }
11
- %link{ :href => "/style/sum.css", :media => "screen, projection", :rel => "stylesheet", :type => "text/css" }
11
+ %link{ :href => "/style/sum.css?1", :media => "screen, projection", :rel => "stylesheet", :type => "text/css" }
12
12
  /[if lt IE 8]
13
13
  %link{ :href => "/style/ie.css", :media => "screen, projection", :rel => "stylesheet", :type => "text/css" }
14
14
  %body
@@ -1,15 +1,5 @@
1
1
  - if valid?
2
- %h1 Success!
3
- %p
4
- Soon you will receive an email with today's budget.
5
- %p
6
- When you spend money, don't forget to email
7
- %a{ :href => "sum@sumapp.com" } sum@sumapp.com
8
- with the amount you spent.
9
- %p.last
10
- If your budget changes, use the same form at
11
- %a{ :href => "/" } sumapp.com
12
- to update the numbers.
2
+ = partial :success
13
3
 
14
4
  - else
15
5
  = partial :form
@@ -0,0 +1,14 @@
1
+ %h1 Success!
2
+ %p
3
+ Soon you will receive an email with today's budget.
4
+ %p
5
+ When you spend money, don't forget to email
6
+ %a{ :href => "sum@sumapp.com" } sum@sumapp.com
7
+ with the amount you spent.
8
+ %p.last
9
+ If your budget changes, use the same form at
10
+ %a{ :href => "/" } sumapp.com
11
+ to update the numbers.
12
+ %h2
13
+ %a{ :href => 'http://faq.sumapp.com' }
14
+ Frequently Asked Questions
@@ -0,0 +1,3 @@
1
+ I understand that my email will never be sold or distributed and I can
2
+ %a{ :href => 'http://sum.inquiryapp.com/terms-of-service', :target => '_new' } turn off emails
3
+ at any time.
@@ -6,4 +6,8 @@ jQuery(function($) {
6
6
  closeImage: '/image/facebox/closelabel.gif',
7
7
  loadingImage: '/image/facebox/loading.gif'
8
8
  });
9
+ $('.checkbox a').click(function(e) {
10
+ var check = $('.checkbox input');
11
+ check.attr('checked', !check.attr('checked'));
12
+ });
9
13
  });
@@ -1,22 +1,119 @@
1
- .h1 { font-weight: bold; font-size: 16px; color: #07578F; text-align: center; padding-bottom: 8px; }
2
- a { color: #E16817; }
3
- body { margin: 0px; background: #F3F3F3; }
4
- body, body div, input { font-weight: bold; font-size: 14px; font-family: 'Helvetica Neue', helvetica, arial, sans-serif; color: #575D60; }
5
- a:hover { color: #AA0000; }
6
- #ribbon { position: absolute; height: 128px; right: 0px; background-image: url(/image/ribbon.png); width: 128px; top: 0px; }
7
- #bot { margin-bottom: 20px; text-align: center; height: 19px; }
1
+ .h1 {
2
+ color: #07578f;
3
+ font-size: 16px;
4
+ font-weight: bold;
5
+ text-align: center;
6
+ padding-bottom: 8px;
7
+ }
8
+ a { color: #e16817; }
9
+ a:hover { color: #aa0000; }
10
+ body {
11
+ background: #f3f3f3;
12
+ margin: 0px;
13
+ }
14
+ body {
15
+ color: #575d60;
16
+ font-family: 'Helvetica Neue', helvetica, arial, sans-serif;
17
+ font-size: 14px;
18
+ font-weight: bold;
19
+ }
20
+ body div {
21
+ color: #575d60;
22
+ font-family: 'Helvetica Neue', helvetica, arial, sans-serif;
23
+ font-size: 14px;
24
+ font-weight: bold;
25
+ }
26
+ input {
27
+ color: #575d60;
28
+ font-family: 'Helvetica Neue', helvetica, arial, sans-serif;
29
+ font-size: 14px;
30
+ font-weight: bold;
31
+ }
32
+ #body {
33
+ background-image: url(/image/bg.png);
34
+ margin: 0 auto;
35
+ overflow: auto;
36
+ padding: 6px 29px;
37
+ width: 400px;
38
+ }
39
+ #body > div { background-color: #ffffff; }
40
+ #body > div .field {
41
+ margin-bottom: 20px;
42
+ text-align: center;
43
+ }
44
+ #body > div .field label {
45
+ color: #07578f;
46
+ font-size: 16px;
47
+ font-weight: bold;
48
+ text-align: center;
49
+ padding-bottom: 8px;
50
+ cursor: pointer;
51
+ }
52
+ #body > div .field .checkbox { text-align: left; }
53
+ #body > div .field .checkbox input {
54
+ float: left;
55
+ margin: 2px 10px 50px;
56
+ }
57
+ #body > div .field .text input {
58
+ background-color: #f3f3f3;
59
+ background-image: url(/image/field_off.png);
60
+ border: 0px;
61
+ display: block;
62
+ height: 19px;
63
+ padding: 3px;
64
+ text-align: center;
65
+ width: 394px;
66
+ }
67
+ #body > div .field .text input:focus { background-image: url(/image/field_on.png); }
68
+ #body > div .field .validation { color: #aa0000; }
69
+ #body > div .number {
70
+ clear: both;
71
+ line-height: 25px;
72
+ margin-bottom: 7px;
73
+ overflow: auto;
74
+ }
8
75
  #body > div p.last { margin: 0px; }
9
- #body > div .submit input { background: transparent; outline: none; height: 30px; width: 88px; }
10
- #body > div .submit { height: 30px; text-align: right; }
11
- #body > div .number { margin-bottom: 7px; overflow: auto; clear: both; line-height: 25px; }
12
- #body > div .field label { font-size: 16px; font-weight: bold; cursor: pointer; color: #07578F; text-align: center; padding-bottom: 8px; }
13
- #body > div .field .validation { color: #AA0000; }
14
- #body > div .field input:focus { background-image: url(/image/field_on.png); }
15
- #body > div .field input { background-color: #F3F3F3; border: 0px; padding: 3px; display: block; text-align: center; height: 19px; background-image: url(/image/field_off.png); width: 394px; }
16
- #body > div .field { margin-bottom: 20px; text-align: center; }
17
76
  #body > div .spacer { margin-top: 25px; }
18
- #body > div { background-color: #fff; }
19
- #body { overflow: auto; margin: 0 auto; padding: 6px 29px; background-image: url(/image/bg.png); width: 400px; }
20
- h1 { font-size: 16px; font-weight: bold; color: #07578F; text-align: center; padding-bottom: 8px; }
77
+ #body > div .submit {
78
+ text-align: right;
79
+ height: 30px;
80
+ }
81
+ #body > div .submit input {
82
+ background: transparent;
83
+ height: 30px;
84
+ outline: none;
85
+ width: 88px;
86
+ }
87
+ #bot {
88
+ height: 19px;
89
+ margin-bottom: 20px;
90
+ text-align: center;
91
+ }
92
+ h1 {
93
+ color: #07578f;
94
+ font-size: 16px;
95
+ font-weight: bold;
96
+ text-align: center;
97
+ padding-bottom: 8px;
98
+ }
99
+ h2 {
100
+ display: block;
101
+ font-size: 21px;
102
+ font-weight: bold;
103
+ margin: 25px 0px 15px;
104
+ text-align: center;
105
+ }
106
+ h2 a { color: #ab0000; }
107
+ #ribbon {
108
+ background-image: url(/image/ribbon.png);
109
+ height: 128px;
110
+ position: absolute;
111
+ right: 0px;
112
+ top: 0px;
113
+ width: 128px;
114
+ }
115
+ #top {
116
+ height: 120px;
117
+ text-align: center;
118
+ }
21
119
  #top a { outline: none; }
22
- #top { text-align: center; height: 120px; }
@@ -56,20 +56,32 @@ body, body div, input {
56
56
  .h1;
57
57
  cursor: pointer;
58
58
  }
59
-
60
- input {
61
- background-color: @background;
62
- background-image: url(/image/field_off.png);
63
- border: 0px;
64
- display: block;
65
- height: 19px;
66
- padding: 3px;
67
- text-align: center;
68
- width: 394px;
59
+
60
+ .checkbox {
61
+
62
+ text-align: left;
63
+
64
+ input {
65
+ float: left;
66
+ margin: 2px 10px 50px;
67
+ }
69
68
  }
70
69
 
71
- input:focus {
72
- background-image: url(/image/field_on.png);
70
+ .text {
71
+ input {
72
+ background-color: @background;
73
+ background-image: url(/image/field_off.png);
74
+ border: 0px;
75
+ display: block;
76
+ height: 19px;
77
+ padding: 3px;
78
+ text-align: center;
79
+ width: 394px;
80
+ }
81
+
82
+ input:focus {
83
+ background-image: url(/image/field_on.png);
84
+ }
73
85
  }
74
86
 
75
87
  .validation {
@@ -116,6 +128,18 @@ h1 {
116
128
  .h1;
117
129
  }
118
130
 
131
+ h2 {
132
+ display: block;
133
+ font-size: 21px;
134
+ font-weight: bold;
135
+ margin: 25px 0px 15px;
136
+ text-align: center;
137
+
138
+ a {
139
+ color: #AB0000;
140
+ }
141
+ }
142
+
119
143
  #ribbon {
120
144
  background-image: url(/image/ribbon.png);
121
145
  height: 128px;
@@ -14,7 +14,8 @@ def create_valid_user
14
14
  :bills => "1000.02",
15
15
  :income => "2500.54",
16
16
  :savings => "500.02",
17
- :timezone_offset => "-25200"
17
+ :timezone_offset => "-25200",
18
+ :tos => '1'
18
19
  )
19
20
  end
20
21
 
@@ -155,6 +155,7 @@ describe User do
155
155
  :savings => "500.02",
156
156
  :timezone_offset => "-25200",
157
157
  :temporary_spending_cut => 5000,
158
+ :tos => '1',
158
159
  :send_at => Time.now.utc
159
160
  )
160
161
  @user.update_attributes(
@@ -2,14 +2,14 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{sum}
5
- s.version = "0.1.0"
5
+ s.version = "0.1.1"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Winton Welsh"]
9
- s.date = %q{2009-07-19}
9
+ s.date = %q{2009-08-04}
10
10
  s.email = %q{mail@wintoni.us}
11
11
  s.extra_rdoc_files = ["README.markdown"]
12
- s.files = ["Capfile", "config", "config/database.example.yml", "config/deploy.example.rb", "config/externals.yml", "config/mail.example.yml", "config/schedule.rb", "config.ru", "db", "db/migrate", "db/migrate/001_users.rb", "db/migrate/002_user_emails.rb", "features", "features/front_page.feature", "features/read_email.feature", "features/receive_email.feature", "features/step_definitions", "features/step_definitions/email.rb", "features/step_definitions/given.rb", "features/step_definitions/then.rb", "features/step_definitions/when.rb", "features/support", "features/support/env.rb", "features/support/helpers.rb", "features/support/rspec.rb", "features/support/webrat.rb", "features/update_user.feature", "gemspec.rb", "lib", "lib/sum", "lib/sum/boot.rb", "lib/sum/controller", "lib/sum/controller/cron.rb", "lib/sum/controller/front.rb", "lib/sum/controller/new.rb", "lib/sum/helper", "lib/sum/helper/application.rb", "lib/sum/helper/cron.rb", "lib/sum/helper/new.rb", "lib/sum/model", "lib/sum/model/incoming_mail.rb", "lib/sum/model/user.rb", "lib/sum/model/user_email.rb", "lib/sum/view", "lib/sum/view/email.haml", "lib/sum/view/field.haml", "lib/sum/view/form.haml", "lib/sum/view/front.haml", "lib/sum/view/layout.haml", "lib/sum/view/new.haml", "lib/sum.rb", "MIT-LICENSE", "public", "public/image", "public/image/1.png", "public/image/2.png", "public/image/3.png", "public/image/bg.png", "public/image/bot.png", "public/image/facebox", "public/image/facebox/b.png", "public/image/facebox/bl.png", "public/image/facebox/br.png", "public/image/facebox/closelabel.gif", "public/image/facebox/loading.gif", "public/image/facebox/tl.png", "public/image/facebox/tr.png", "public/image/favicon.png", "public/image/field_off.png", "public/image/field_on.png", "public/image/ribbon.png", "public/image/screenshot_receive.png", "public/image/screenshot_send.png", "public/image/submit.png", "public/image/top.png", "public/javascript", "public/javascript/facebox.js", "public/javascript/jquery-1.3.2.js", "public/javascript/sum.js", "public/style", "public/style/facebox.css", "public/style/ie.css", "public/style/print.css", "public/style/screen.css", "public/style/sum.css", "public/style/sum.less", "Rakefile", "README.markdown", "spec", "spec/spec.opts", "spec/spec_helper.rb", "spec/sum", "spec/sum/model", "spec/sum/model/incoming_mail_spec.rb", "spec/sum/model/user_spec.rb", "sum.gemspec", "vendor", "vendor/webrat", "vendor/webrat/History.txt", "vendor/webrat/install.rb", "vendor/webrat/lib", "vendor/webrat/lib/webrat", "vendor/webrat/lib/webrat/core", "vendor/webrat/lib/webrat/core/configuration.rb", "vendor/webrat/lib/webrat/core/elements", "vendor/webrat/lib/webrat/core/elements/area.rb", "vendor/webrat/lib/webrat/core/elements/element.rb", "vendor/webrat/lib/webrat/core/elements/field.rb", "vendor/webrat/lib/webrat/core/elements/form.rb", "vendor/webrat/lib/webrat/core/elements/label.rb", "vendor/webrat/lib/webrat/core/elements/link.rb", "vendor/webrat/lib/webrat/core/elements/select_option.rb", "vendor/webrat/lib/webrat/core/locators", "vendor/webrat/lib/webrat/core/locators/area_locator.rb", "vendor/webrat/lib/webrat/core/locators/button_locator.rb", "vendor/webrat/lib/webrat/core/locators/field_by_id_locator.rb", "vendor/webrat/lib/webrat/core/locators/field_labeled_locator.rb", "vendor/webrat/lib/webrat/core/locators/field_locator.rb", "vendor/webrat/lib/webrat/core/locators/field_named_locator.rb", "vendor/webrat/lib/webrat/core/locators/form_locator.rb", "vendor/webrat/lib/webrat/core/locators/label_locator.rb", "vendor/webrat/lib/webrat/core/locators/link_locator.rb", "vendor/webrat/lib/webrat/core/locators/locator.rb", "vendor/webrat/lib/webrat/core/locators/select_option_locator.rb", "vendor/webrat/lib/webrat/core/locators.rb", "vendor/webrat/lib/webrat/core/logging.rb", "vendor/webrat/lib/webrat/core/matchers", "vendor/webrat/lib/webrat/core/matchers/have_content.rb", "vendor/webrat/lib/webrat/core/matchers/have_selector.rb", "vendor/webrat/lib/webrat/core/matchers/have_tag.rb", "vendor/webrat/lib/webrat/core/matchers/have_xpath.rb", "vendor/webrat/lib/webrat/core/matchers.rb", "vendor/webrat/lib/webrat/core/methods.rb", "vendor/webrat/lib/webrat/core/mime.rb", "vendor/webrat/lib/webrat/core/save_and_open_page.rb", "vendor/webrat/lib/webrat/core/scope.rb", "vendor/webrat/lib/webrat/core/session.rb", "vendor/webrat/lib/webrat/core/xml", "vendor/webrat/lib/webrat/core/xml/hpricot.rb", "vendor/webrat/lib/webrat/core/xml/nokogiri.rb", "vendor/webrat/lib/webrat/core/xml/rexml.rb", "vendor/webrat/lib/webrat/core/xml.rb", "vendor/webrat/lib/webrat/core.rb", "vendor/webrat/lib/webrat/core_extensions", "vendor/webrat/lib/webrat/core_extensions/blank.rb", "vendor/webrat/lib/webrat/core_extensions/deprecate.rb", "vendor/webrat/lib/webrat/core_extensions/detect_mapped.rb", "vendor/webrat/lib/webrat/core_extensions/meta_class.rb", "vendor/webrat/lib/webrat/core_extensions/nil_to_param.rb", "vendor/webrat/lib/webrat/core_extensions/tcp_socket.rb", "vendor/webrat/lib/webrat/mechanize.rb", "vendor/webrat/lib/webrat/merb.rb", "vendor/webrat/lib/webrat/merb_multipart_support.rb", "vendor/webrat/lib/webrat/merb_session.rb", "vendor/webrat/lib/webrat/rack.rb", "vendor/webrat/lib/webrat/rails.rb", "vendor/webrat/lib/webrat/rspec-rails.rb", "vendor/webrat/lib/webrat/selenium", "vendor/webrat/lib/webrat/selenium/application_server_factory.rb", "vendor/webrat/lib/webrat/selenium/application_servers", "vendor/webrat/lib/webrat/selenium/application_servers/base.rb", "vendor/webrat/lib/webrat/selenium/application_servers/external.rb", "vendor/webrat/lib/webrat/selenium/application_servers/merb.rb", "vendor/webrat/lib/webrat/selenium/application_servers/rails.rb", "vendor/webrat/lib/webrat/selenium/application_servers/sinatra.rb", "vendor/webrat/lib/webrat/selenium/application_servers.rb", "vendor/webrat/lib/webrat/selenium/location_strategy_javascript", "vendor/webrat/lib/webrat/selenium/location_strategy_javascript/button.js", "vendor/webrat/lib/webrat/selenium/location_strategy_javascript/label.js", "vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webrat.js", "vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webratlink.js", "vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webratlinkwithin.js", "vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webratselectwithoption.js", "vendor/webrat/lib/webrat/selenium/matchers", "vendor/webrat/lib/webrat/selenium/matchers/have_content.rb", "vendor/webrat/lib/webrat/selenium/matchers/have_selector.rb", "vendor/webrat/lib/webrat/selenium/matchers/have_tag.rb", "vendor/webrat/lib/webrat/selenium/matchers/have_xpath.rb", "vendor/webrat/lib/webrat/selenium/matchers.rb", "vendor/webrat/lib/webrat/selenium/selenium_extensions.js", "vendor/webrat/lib/webrat/selenium/selenium_rc_server.rb", "vendor/webrat/lib/webrat/selenium/selenium_session.rb", "vendor/webrat/lib/webrat/selenium/silence_stream.rb", "vendor/webrat/lib/webrat/selenium.rb", "vendor/webrat/lib/webrat/sinatra.rb", "vendor/webrat/lib/webrat.rb", "vendor/webrat/MIT-LICENSE.txt", "vendor/webrat/Rakefile", "vendor/webrat/README.rdoc", "vendor/webrat/spec", "vendor/webrat/spec/fakes", "vendor/webrat/spec/fakes/test_session.rb", "vendor/webrat/spec/integration", "vendor/webrat/spec/integration/merb", "vendor/webrat/spec/integration/merb/app", "vendor/webrat/spec/integration/merb/app/controllers", "vendor/webrat/spec/integration/merb/app/controllers/application.rb", "vendor/webrat/spec/integration/merb/app/controllers/exceptions.rb", "vendor/webrat/spec/integration/merb/app/controllers/testing.rb", "vendor/webrat/spec/integration/merb/app/views", "vendor/webrat/spec/integration/merb/app/views/exceptions", "vendor/webrat/spec/integration/merb/app/views/exceptions/not_acceptable.html.erb", "vendor/webrat/spec/integration/merb/app/views/exceptions/not_found.html.erb", "vendor/webrat/spec/integration/merb/app/views/layout", "vendor/webrat/spec/integration/merb/app/views/layout/application.html.erb", "vendor/webrat/spec/integration/merb/app/views/testing", "vendor/webrat/spec/integration/merb/app/views/testing/show_form.html.erb", "vendor/webrat/spec/integration/merb/app/views/testing/upload.html.erb", "vendor/webrat/spec/integration/merb/config", "vendor/webrat/spec/integration/merb/config/environments", "vendor/webrat/spec/integration/merb/config/environments/development.rb", "vendor/webrat/spec/integration/merb/config/environments/rake.rb", "vendor/webrat/spec/integration/merb/config/environments/test.rb", "vendor/webrat/spec/integration/merb/config/init.rb", "vendor/webrat/spec/integration/merb/config/rack.rb", "vendor/webrat/spec/integration/merb/config/router.rb", "vendor/webrat/spec/integration/merb/Rakefile", "vendor/webrat/spec/integration/merb/spec", "vendor/webrat/spec/integration/merb/spec/spec.opts", "vendor/webrat/spec/integration/merb/spec/spec_helper.rb", "vendor/webrat/spec/integration/merb/spec/webrat_spec.rb", "vendor/webrat/spec/integration/merb/tasks", "vendor/webrat/spec/integration/merb/tasks/merb.thor", "vendor/webrat/spec/integration/merb/tasks/merb.thor/app_script.rb", "vendor/webrat/spec/integration/merb/tasks/merb.thor/common.rb", "vendor/webrat/spec/integration/merb/tasks/merb.thor/gem_ext.rb", "vendor/webrat/spec/integration/merb/tasks/merb.thor/main.thor", "vendor/webrat/spec/integration/merb/tasks/merb.thor/ops.rb", "vendor/webrat/spec/integration/merb/tasks/merb.thor/utils.rb", "vendor/webrat/spec/integration/rack", "vendor/webrat/spec/integration/rack/app.rb", "vendor/webrat/spec/integration/rack/Rakefile", "vendor/webrat/spec/integration/rack/test", "vendor/webrat/spec/integration/rack/test/helper.rb", "vendor/webrat/spec/integration/rack/test/webrat_rack_test.rb", "vendor/webrat/spec/integration/rails", "vendor/webrat/spec/integration/rails/app", "vendor/webrat/spec/integration/rails/app/controllers", "vendor/webrat/spec/integration/rails/app/controllers/application.rb", "vendor/webrat/spec/integration/rails/app/controllers/buttons_controller.rb", "vendor/webrat/spec/integration/rails/app/controllers/fields_controller.rb", "vendor/webrat/spec/integration/rails/app/controllers/links_controller.rb", "vendor/webrat/spec/integration/rails/app/controllers/webrat_controller.rb", "vendor/webrat/spec/integration/rails/app/helpers", "vendor/webrat/spec/integration/rails/app/helpers/buttons_helper.rb", "vendor/webrat/spec/integration/rails/app/helpers/fields_helper.rb", "vendor/webrat/spec/integration/rails/app/helpers/links_helper.rb", "vendor/webrat/spec/integration/rails/app/views", "vendor/webrat/spec/integration/rails/app/views/buttons", "vendor/webrat/spec/integration/rails/app/views/buttons/show.html.erb", "vendor/webrat/spec/integration/rails/app/views/fields", "vendor/webrat/spec/integration/rails/app/views/fields/show.html.erb", "vendor/webrat/spec/integration/rails/app/views/links", "vendor/webrat/spec/integration/rails/app/views/links/show.html.erb", "vendor/webrat/spec/integration/rails/app/views/webrat", "vendor/webrat/spec/integration/rails/app/views/webrat/before_redirect_form.html.erb", "vendor/webrat/spec/integration/rails/app/views/webrat/buttons.html.erb", "vendor/webrat/spec/integration/rails/app/views/webrat/form.html.erb", "vendor/webrat/spec/integration/rails/config", "vendor/webrat/spec/integration/rails/config/boot.rb", "vendor/webrat/spec/integration/rails/config/environment.rb", "vendor/webrat/spec/integration/rails/config/environments", "vendor/webrat/spec/integration/rails/config/environments/development.rb", "vendor/webrat/spec/integration/rails/config/environments/selenium.rb", "vendor/webrat/spec/integration/rails/config/environments/test.rb", "vendor/webrat/spec/integration/rails/config/initializers", "vendor/webrat/spec/integration/rails/config/initializers/inflections.rb", "vendor/webrat/spec/integration/rails/config/initializers/mime_types.rb", "vendor/webrat/spec/integration/rails/config/initializers/new_rails_defaults.rb", "vendor/webrat/spec/integration/rails/config/locales", "vendor/webrat/spec/integration/rails/config/locales/en.yml", "vendor/webrat/spec/integration/rails/config/routes.rb", "vendor/webrat/spec/integration/rails/public", "vendor/webrat/spec/integration/rails/public/404.html", "vendor/webrat/spec/integration/rails/public/422.html", "vendor/webrat/spec/integration/rails/public/500.html", "vendor/webrat/spec/integration/rails/Rakefile", "vendor/webrat/spec/integration/rails/script", "vendor/webrat/spec/integration/rails/script/about", "vendor/webrat/spec/integration/rails/script/console", "vendor/webrat/spec/integration/rails/script/dbconsole", "vendor/webrat/spec/integration/rails/script/destroy", "vendor/webrat/spec/integration/rails/script/generate", "vendor/webrat/spec/integration/rails/script/performance", "vendor/webrat/spec/integration/rails/script/performance/benchmarker", "vendor/webrat/spec/integration/rails/script/performance/profiler", "vendor/webrat/spec/integration/rails/script/performance/request", "vendor/webrat/spec/integration/rails/script/plugin", "vendor/webrat/spec/integration/rails/script/process", "vendor/webrat/spec/integration/rails/script/process/inspector", "vendor/webrat/spec/integration/rails/script/process/reaper", "vendor/webrat/spec/integration/rails/script/process/spawner", "vendor/webrat/spec/integration/rails/script/runner", "vendor/webrat/spec/integration/rails/script/server", "vendor/webrat/spec/integration/rails/test", "vendor/webrat/spec/integration/rails/test/integration", "vendor/webrat/spec/integration/rails/test/integration/button_click_test.rb", "vendor/webrat/spec/integration/rails/test/integration/fill_in_test.rb", "vendor/webrat/spec/integration/rails/test/integration/link_click_test.rb", "vendor/webrat/spec/integration/rails/test/integration/webrat_test.rb", "vendor/webrat/spec/integration/rails/test/test_helper.rb", "vendor/webrat/spec/integration/sinatra", "vendor/webrat/spec/integration/sinatra/classic_app.rb", "vendor/webrat/spec/integration/sinatra/modular_app.rb", "vendor/webrat/spec/integration/sinatra/Rakefile", "vendor/webrat/spec/integration/sinatra/test", "vendor/webrat/spec/integration/sinatra/test/classic_app_test.rb", "vendor/webrat/spec/integration/sinatra/test/modular_app_test.rb", "vendor/webrat/spec/integration/sinatra/test/test_helper.rb", "vendor/webrat/spec/private", "vendor/webrat/spec/private/core", "vendor/webrat/spec/private/core/configuration_spec.rb", "vendor/webrat/spec/private/core/field_spec.rb", "vendor/webrat/spec/private/core/link_spec.rb", "vendor/webrat/spec/private/core/logging_spec.rb", "vendor/webrat/spec/private/core/session_spec.rb", "vendor/webrat/spec/private/mechanize", "vendor/webrat/spec/private/mechanize/mechanize_session_spec.rb", "vendor/webrat/spec/private/merb", "vendor/webrat/spec/private/merb/attaches_file_spec.rb", "vendor/webrat/spec/private/merb/merb_session_spec.rb", "vendor/webrat/spec/private/nokogiri_spec.rb", "vendor/webrat/spec/private/rails", "vendor/webrat/spec/private/rails/attaches_file_spec.rb", "vendor/webrat/spec/private/rails/rails_session_spec.rb", "vendor/webrat/spec/private/selenium", "vendor/webrat/spec/private/selenium/application_servers", "vendor/webrat/spec/private/selenium/application_servers/rails_spec.rb", "vendor/webrat/spec/public", "vendor/webrat/spec/public/basic_auth_spec.rb", "vendor/webrat/spec/public/check_spec.rb", "vendor/webrat/spec/public/choose_spec.rb", "vendor/webrat/spec/public/click_area_spec.rb", "vendor/webrat/spec/public/click_button_spec.rb", "vendor/webrat/spec/public/click_link_spec.rb", "vendor/webrat/spec/public/fill_in_spec.rb", "vendor/webrat/spec/public/locators", "vendor/webrat/spec/public/locators/field_by_xpath_spec.rb", "vendor/webrat/spec/public/locators/field_labeled_spec.rb", "vendor/webrat/spec/public/locators/field_with_id_spec.rb", "vendor/webrat/spec/public/matchers", "vendor/webrat/spec/public/matchers/contain_spec.rb", "vendor/webrat/spec/public/matchers/have_selector_spec.rb", "vendor/webrat/spec/public/matchers/have_tag_spec.rb", "vendor/webrat/spec/public/matchers/have_xpath_spec.rb", "vendor/webrat/spec/public/reload_spec.rb", "vendor/webrat/spec/public/save_and_open_spec.rb", "vendor/webrat/spec/public/select_date_spec.rb", "vendor/webrat/spec/public/select_datetime_spec.rb", "vendor/webrat/spec/public/select_spec.rb", "vendor/webrat/spec/public/select_time_spec.rb", "vendor/webrat/spec/public/selenium", "vendor/webrat/spec/public/selenium/application_server_factory_spec.rb", "vendor/webrat/spec/public/selenium/application_servers", "vendor/webrat/spec/public/selenium/application_servers/external_spec.rb", "vendor/webrat/spec/public/selenium/selenium_session_spec.rb", "vendor/webrat/spec/public/set_hidden_field_spec.rb", "vendor/webrat/spec/public/submit_form_spec.rb", "vendor/webrat/spec/public/visit_spec.rb", "vendor/webrat/spec/public/within_spec.rb", "vendor/webrat/spec/rcov.opts", "vendor/webrat/spec/spec.opts", "vendor/webrat/spec/spec_helper.rb"]
12
+ s.files = ["Capfile", "config", "config/database.example.yml", "config/deploy.example.rb", "config/externals.yml", "config/mail.example.yml", "config/schedule.rb", "config.ru", "db", "db/migrate", "db/migrate/001_users.rb", "db/migrate/002_user_emails.rb", "features", "features/front_page.feature", "features/read_email.feature", "features/receive_email.feature", "features/step_definitions", "features/step_definitions/email.rb", "features/step_definitions/given.rb", "features/step_definitions/then.rb", "features/step_definitions/when.rb", "features/support", "features/support/env.rb", "features/support/helpers.rb", "features/support/rspec.rb", "features/support/webrat.rb", "features/update_user.feature", "gemspec.rb", "lib", "lib/sum", "lib/sum/boot.rb", "lib/sum/controller", "lib/sum/controller/cron.rb", "lib/sum/controller/front.rb", "lib/sum/controller/new.rb", "lib/sum/helper", "lib/sum/helper/application.rb", "lib/sum/helper/cron.rb", "lib/sum/helper/new.rb", "lib/sum/model", "lib/sum/model/incoming_mail.rb", "lib/sum/model/user.rb", "lib/sum/model/user_email.rb", "lib/sum/view", "lib/sum/view/email.haml", "lib/sum/view/field.haml", "lib/sum/view/form.haml", "lib/sum/view/front.haml", "lib/sum/view/layout.haml", "lib/sum/view/new.haml", "lib/sum/view/success.haml", "lib/sum/view/tos.haml", "lib/sum.rb", "MIT-LICENSE", "public", "public/image", "public/image/1.png", "public/image/2.png", "public/image/3.png", "public/image/bg.png", "public/image/bot.png", "public/image/facebox", "public/image/facebox/b.png", "public/image/facebox/bl.png", "public/image/facebox/br.png", "public/image/facebox/closelabel.gif", "public/image/facebox/loading.gif", "public/image/facebox/tl.png", "public/image/facebox/tr.png", "public/image/favicon.png", "public/image/field_off.png", "public/image/field_on.png", "public/image/ribbon.png", "public/image/screenshot_receive.png", "public/image/screenshot_send.png", "public/image/submit.png", "public/image/top.png", "public/javascript", "public/javascript/facebox.js", "public/javascript/jquery-1.3.2.js", "public/javascript/sum.js", "public/style", "public/style/facebox.css", "public/style/ie.css", "public/style/print.css", "public/style/screen.css", "public/style/sum.css", "public/style/sum.less", "Rakefile", "README.markdown", "spec", "spec/spec.opts", "spec/spec_helper.rb", "spec/sum", "spec/sum/model", "spec/sum/model/incoming_mail_spec.rb", "spec/sum/model/user_spec.rb", "sum.gemspec", "vendor", "vendor/webrat", "vendor/webrat/History.txt", "vendor/webrat/install.rb", "vendor/webrat/lib", "vendor/webrat/lib/webrat", "vendor/webrat/lib/webrat/core", "vendor/webrat/lib/webrat/core/configuration.rb", "vendor/webrat/lib/webrat/core/elements", "vendor/webrat/lib/webrat/core/elements/area.rb", "vendor/webrat/lib/webrat/core/elements/element.rb", "vendor/webrat/lib/webrat/core/elements/field.rb", "vendor/webrat/lib/webrat/core/elements/form.rb", "vendor/webrat/lib/webrat/core/elements/label.rb", "vendor/webrat/lib/webrat/core/elements/link.rb", "vendor/webrat/lib/webrat/core/elements/select_option.rb", "vendor/webrat/lib/webrat/core/locators", "vendor/webrat/lib/webrat/core/locators/area_locator.rb", "vendor/webrat/lib/webrat/core/locators/button_locator.rb", "vendor/webrat/lib/webrat/core/locators/field_by_id_locator.rb", "vendor/webrat/lib/webrat/core/locators/field_labeled_locator.rb", "vendor/webrat/lib/webrat/core/locators/field_locator.rb", "vendor/webrat/lib/webrat/core/locators/field_named_locator.rb", "vendor/webrat/lib/webrat/core/locators/form_locator.rb", "vendor/webrat/lib/webrat/core/locators/label_locator.rb", "vendor/webrat/lib/webrat/core/locators/link_locator.rb", "vendor/webrat/lib/webrat/core/locators/locator.rb", "vendor/webrat/lib/webrat/core/locators/select_option_locator.rb", "vendor/webrat/lib/webrat/core/locators.rb", "vendor/webrat/lib/webrat/core/logging.rb", "vendor/webrat/lib/webrat/core/matchers", "vendor/webrat/lib/webrat/core/matchers/have_content.rb", "vendor/webrat/lib/webrat/core/matchers/have_selector.rb", "vendor/webrat/lib/webrat/core/matchers/have_tag.rb", "vendor/webrat/lib/webrat/core/matchers/have_xpath.rb", "vendor/webrat/lib/webrat/core/matchers.rb", "vendor/webrat/lib/webrat/core/methods.rb", "vendor/webrat/lib/webrat/core/mime.rb", "vendor/webrat/lib/webrat/core/save_and_open_page.rb", "vendor/webrat/lib/webrat/core/scope.rb", "vendor/webrat/lib/webrat/core/session.rb", "vendor/webrat/lib/webrat/core/xml", "vendor/webrat/lib/webrat/core/xml/hpricot.rb", "vendor/webrat/lib/webrat/core/xml/nokogiri.rb", "vendor/webrat/lib/webrat/core/xml/rexml.rb", "vendor/webrat/lib/webrat/core/xml.rb", "vendor/webrat/lib/webrat/core.rb", "vendor/webrat/lib/webrat/core_extensions", "vendor/webrat/lib/webrat/core_extensions/blank.rb", "vendor/webrat/lib/webrat/core_extensions/deprecate.rb", "vendor/webrat/lib/webrat/core_extensions/detect_mapped.rb", "vendor/webrat/lib/webrat/core_extensions/meta_class.rb", "vendor/webrat/lib/webrat/core_extensions/nil_to_param.rb", "vendor/webrat/lib/webrat/core_extensions/tcp_socket.rb", "vendor/webrat/lib/webrat/mechanize.rb", "vendor/webrat/lib/webrat/merb.rb", "vendor/webrat/lib/webrat/merb_multipart_support.rb", "vendor/webrat/lib/webrat/merb_session.rb", "vendor/webrat/lib/webrat/rack.rb", "vendor/webrat/lib/webrat/rails.rb", "vendor/webrat/lib/webrat/rspec-rails.rb", "vendor/webrat/lib/webrat/selenium", "vendor/webrat/lib/webrat/selenium/application_server_factory.rb", "vendor/webrat/lib/webrat/selenium/application_servers", "vendor/webrat/lib/webrat/selenium/application_servers/base.rb", "vendor/webrat/lib/webrat/selenium/application_servers/external.rb", "vendor/webrat/lib/webrat/selenium/application_servers/merb.rb", "vendor/webrat/lib/webrat/selenium/application_servers/rails.rb", "vendor/webrat/lib/webrat/selenium/application_servers/sinatra.rb", "vendor/webrat/lib/webrat/selenium/application_servers.rb", "vendor/webrat/lib/webrat/selenium/location_strategy_javascript", "vendor/webrat/lib/webrat/selenium/location_strategy_javascript/button.js", "vendor/webrat/lib/webrat/selenium/location_strategy_javascript/label.js", "vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webrat.js", "vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webratlink.js", "vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webratlinkwithin.js", "vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webratselectwithoption.js", "vendor/webrat/lib/webrat/selenium/matchers", "vendor/webrat/lib/webrat/selenium/matchers/have_content.rb", "vendor/webrat/lib/webrat/selenium/matchers/have_selector.rb", "vendor/webrat/lib/webrat/selenium/matchers/have_tag.rb", "vendor/webrat/lib/webrat/selenium/matchers/have_xpath.rb", "vendor/webrat/lib/webrat/selenium/matchers.rb", "vendor/webrat/lib/webrat/selenium/selenium_extensions.js", "vendor/webrat/lib/webrat/selenium/selenium_rc_server.rb", "vendor/webrat/lib/webrat/selenium/selenium_session.rb", "vendor/webrat/lib/webrat/selenium/silence_stream.rb", "vendor/webrat/lib/webrat/selenium.rb", "vendor/webrat/lib/webrat/sinatra.rb", "vendor/webrat/lib/webrat.rb", "vendor/webrat/MIT-LICENSE.txt", "vendor/webrat/Rakefile", "vendor/webrat/README.rdoc", "vendor/webrat/spec", "vendor/webrat/spec/fakes", "vendor/webrat/spec/fakes/test_session.rb", "vendor/webrat/spec/integration", "vendor/webrat/spec/integration/merb", "vendor/webrat/spec/integration/merb/app", "vendor/webrat/spec/integration/merb/app/controllers", "vendor/webrat/spec/integration/merb/app/controllers/application.rb", "vendor/webrat/spec/integration/merb/app/controllers/exceptions.rb", "vendor/webrat/spec/integration/merb/app/controllers/testing.rb", "vendor/webrat/spec/integration/merb/app/views", "vendor/webrat/spec/integration/merb/app/views/exceptions", "vendor/webrat/spec/integration/merb/app/views/exceptions/not_acceptable.html.erb", "vendor/webrat/spec/integration/merb/app/views/exceptions/not_found.html.erb", "vendor/webrat/spec/integration/merb/app/views/layout", "vendor/webrat/spec/integration/merb/app/views/layout/application.html.erb", "vendor/webrat/spec/integration/merb/app/views/testing", "vendor/webrat/spec/integration/merb/app/views/testing/show_form.html.erb", "vendor/webrat/spec/integration/merb/app/views/testing/upload.html.erb", "vendor/webrat/spec/integration/merb/config", "vendor/webrat/spec/integration/merb/config/environments", "vendor/webrat/spec/integration/merb/config/environments/development.rb", "vendor/webrat/spec/integration/merb/config/environments/rake.rb", "vendor/webrat/spec/integration/merb/config/environments/test.rb", "vendor/webrat/spec/integration/merb/config/init.rb", "vendor/webrat/spec/integration/merb/config/rack.rb", "vendor/webrat/spec/integration/merb/config/router.rb", "vendor/webrat/spec/integration/merb/Rakefile", "vendor/webrat/spec/integration/merb/spec", "vendor/webrat/spec/integration/merb/spec/spec.opts", "vendor/webrat/spec/integration/merb/spec/spec_helper.rb", "vendor/webrat/spec/integration/merb/spec/webrat_spec.rb", "vendor/webrat/spec/integration/merb/tasks", "vendor/webrat/spec/integration/merb/tasks/merb.thor", "vendor/webrat/spec/integration/merb/tasks/merb.thor/app_script.rb", "vendor/webrat/spec/integration/merb/tasks/merb.thor/common.rb", "vendor/webrat/spec/integration/merb/tasks/merb.thor/gem_ext.rb", "vendor/webrat/spec/integration/merb/tasks/merb.thor/main.thor", "vendor/webrat/spec/integration/merb/tasks/merb.thor/ops.rb", "vendor/webrat/spec/integration/merb/tasks/merb.thor/utils.rb", "vendor/webrat/spec/integration/rack", "vendor/webrat/spec/integration/rack/app.rb", "vendor/webrat/spec/integration/rack/Rakefile", "vendor/webrat/spec/integration/rack/test", "vendor/webrat/spec/integration/rack/test/helper.rb", "vendor/webrat/spec/integration/rack/test/webrat_rack_test.rb", "vendor/webrat/spec/integration/rails", "vendor/webrat/spec/integration/rails/app", "vendor/webrat/spec/integration/rails/app/controllers", "vendor/webrat/spec/integration/rails/app/controllers/application.rb", "vendor/webrat/spec/integration/rails/app/controllers/buttons_controller.rb", "vendor/webrat/spec/integration/rails/app/controllers/fields_controller.rb", "vendor/webrat/spec/integration/rails/app/controllers/links_controller.rb", "vendor/webrat/spec/integration/rails/app/controllers/webrat_controller.rb", "vendor/webrat/spec/integration/rails/app/helpers", "vendor/webrat/spec/integration/rails/app/helpers/buttons_helper.rb", "vendor/webrat/spec/integration/rails/app/helpers/fields_helper.rb", "vendor/webrat/spec/integration/rails/app/helpers/links_helper.rb", "vendor/webrat/spec/integration/rails/app/views", "vendor/webrat/spec/integration/rails/app/views/buttons", "vendor/webrat/spec/integration/rails/app/views/buttons/show.html.erb", "vendor/webrat/spec/integration/rails/app/views/fields", "vendor/webrat/spec/integration/rails/app/views/fields/show.html.erb", "vendor/webrat/spec/integration/rails/app/views/links", "vendor/webrat/spec/integration/rails/app/views/links/show.html.erb", "vendor/webrat/spec/integration/rails/app/views/webrat", "vendor/webrat/spec/integration/rails/app/views/webrat/before_redirect_form.html.erb", "vendor/webrat/spec/integration/rails/app/views/webrat/buttons.html.erb", "vendor/webrat/spec/integration/rails/app/views/webrat/form.html.erb", "vendor/webrat/spec/integration/rails/config", "vendor/webrat/spec/integration/rails/config/boot.rb", "vendor/webrat/spec/integration/rails/config/environment.rb", "vendor/webrat/spec/integration/rails/config/environments", "vendor/webrat/spec/integration/rails/config/environments/development.rb", "vendor/webrat/spec/integration/rails/config/environments/selenium.rb", "vendor/webrat/spec/integration/rails/config/environments/test.rb", "vendor/webrat/spec/integration/rails/config/initializers", "vendor/webrat/spec/integration/rails/config/initializers/inflections.rb", "vendor/webrat/spec/integration/rails/config/initializers/mime_types.rb", "vendor/webrat/spec/integration/rails/config/initializers/new_rails_defaults.rb", "vendor/webrat/spec/integration/rails/config/locales", "vendor/webrat/spec/integration/rails/config/locales/en.yml", "vendor/webrat/spec/integration/rails/config/routes.rb", "vendor/webrat/spec/integration/rails/public", "vendor/webrat/spec/integration/rails/public/404.html", "vendor/webrat/spec/integration/rails/public/422.html", "vendor/webrat/spec/integration/rails/public/500.html", "vendor/webrat/spec/integration/rails/Rakefile", "vendor/webrat/spec/integration/rails/script", "vendor/webrat/spec/integration/rails/script/about", "vendor/webrat/spec/integration/rails/script/console", "vendor/webrat/spec/integration/rails/script/dbconsole", "vendor/webrat/spec/integration/rails/script/destroy", "vendor/webrat/spec/integration/rails/script/generate", "vendor/webrat/spec/integration/rails/script/performance", "vendor/webrat/spec/integration/rails/script/performance/benchmarker", "vendor/webrat/spec/integration/rails/script/performance/profiler", "vendor/webrat/spec/integration/rails/script/performance/request", "vendor/webrat/spec/integration/rails/script/plugin", "vendor/webrat/spec/integration/rails/script/process", "vendor/webrat/spec/integration/rails/script/process/inspector", "vendor/webrat/spec/integration/rails/script/process/reaper", "vendor/webrat/spec/integration/rails/script/process/spawner", "vendor/webrat/spec/integration/rails/script/runner", "vendor/webrat/spec/integration/rails/script/server", "vendor/webrat/spec/integration/rails/test", "vendor/webrat/spec/integration/rails/test/integration", "vendor/webrat/spec/integration/rails/test/integration/button_click_test.rb", "vendor/webrat/spec/integration/rails/test/integration/fill_in_test.rb", "vendor/webrat/spec/integration/rails/test/integration/link_click_test.rb", "vendor/webrat/spec/integration/rails/test/integration/webrat_test.rb", "vendor/webrat/spec/integration/rails/test/test_helper.rb", "vendor/webrat/spec/integration/sinatra", "vendor/webrat/spec/integration/sinatra/classic_app.rb", "vendor/webrat/spec/integration/sinatra/modular_app.rb", "vendor/webrat/spec/integration/sinatra/Rakefile", "vendor/webrat/spec/integration/sinatra/test", "vendor/webrat/spec/integration/sinatra/test/classic_app_test.rb", "vendor/webrat/spec/integration/sinatra/test/modular_app_test.rb", "vendor/webrat/spec/integration/sinatra/test/test_helper.rb", "vendor/webrat/spec/private", "vendor/webrat/spec/private/core", "vendor/webrat/spec/private/core/configuration_spec.rb", "vendor/webrat/spec/private/core/field_spec.rb", "vendor/webrat/spec/private/core/link_spec.rb", "vendor/webrat/spec/private/core/logging_spec.rb", "vendor/webrat/spec/private/core/session_spec.rb", "vendor/webrat/spec/private/mechanize", "vendor/webrat/spec/private/mechanize/mechanize_session_spec.rb", "vendor/webrat/spec/private/merb", "vendor/webrat/spec/private/merb/attaches_file_spec.rb", "vendor/webrat/spec/private/merb/merb_session_spec.rb", "vendor/webrat/spec/private/nokogiri_spec.rb", "vendor/webrat/spec/private/rails", "vendor/webrat/spec/private/rails/attaches_file_spec.rb", "vendor/webrat/spec/private/rails/rails_session_spec.rb", "vendor/webrat/spec/private/selenium", "vendor/webrat/spec/private/selenium/application_servers", "vendor/webrat/spec/private/selenium/application_servers/rails_spec.rb", "vendor/webrat/spec/public", "vendor/webrat/spec/public/basic_auth_spec.rb", "vendor/webrat/spec/public/check_spec.rb", "vendor/webrat/spec/public/choose_spec.rb", "vendor/webrat/spec/public/click_area_spec.rb", "vendor/webrat/spec/public/click_button_spec.rb", "vendor/webrat/spec/public/click_link_spec.rb", "vendor/webrat/spec/public/fill_in_spec.rb", "vendor/webrat/spec/public/locators", "vendor/webrat/spec/public/locators/field_by_xpath_spec.rb", "vendor/webrat/spec/public/locators/field_labeled_spec.rb", "vendor/webrat/spec/public/locators/field_with_id_spec.rb", "vendor/webrat/spec/public/matchers", "vendor/webrat/spec/public/matchers/contain_spec.rb", "vendor/webrat/spec/public/matchers/have_selector_spec.rb", "vendor/webrat/spec/public/matchers/have_tag_spec.rb", "vendor/webrat/spec/public/matchers/have_xpath_spec.rb", "vendor/webrat/spec/public/reload_spec.rb", "vendor/webrat/spec/public/save_and_open_spec.rb", "vendor/webrat/spec/public/select_date_spec.rb", "vendor/webrat/spec/public/select_datetime_spec.rb", "vendor/webrat/spec/public/select_spec.rb", "vendor/webrat/spec/public/select_time_spec.rb", "vendor/webrat/spec/public/selenium", "vendor/webrat/spec/public/selenium/application_server_factory_spec.rb", "vendor/webrat/spec/public/selenium/application_servers", "vendor/webrat/spec/public/selenium/application_servers/external_spec.rb", "vendor/webrat/spec/public/selenium/selenium_session_spec.rb", "vendor/webrat/spec/public/set_hidden_field_spec.rb", "vendor/webrat/spec/public/submit_form_spec.rb", "vendor/webrat/spec/public/visit_spec.rb", "vendor/webrat/spec/public/within_spec.rb", "vendor/webrat/spec/rcov.opts", "vendor/webrat/spec/spec.opts", "vendor/webrat/spec/spec_helper.rb"]
13
13
  s.homepage = %q{http://github.com/winton/sum}
14
14
  s.require_paths = ["lib"]
15
15
  s.rubygems_version = %q{1.3.1}
@@ -21,47 +21,47 @@ Gem::Specification.new do |s|
21
21
 
22
22
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
23
23
  s.add_runtime_dependency(%q<bmabey-email_spec>, ["= 0.2.0"])
24
- s.add_runtime_dependency(%q<cucumber>, [">= 0.3.11"])
25
- s.add_runtime_dependency(%q<haml>, ["= 2.0.9"])
26
- s.add_runtime_dependency(%q<less>, [">= 0.8.11"])
24
+ s.add_runtime_dependency(%q<cucumber>, ["= 0.3.93"])
25
+ s.add_runtime_dependency(%q<haml>, ["= 2.2.2"])
26
+ s.add_runtime_dependency(%q<less>, ["= 0.8.11"])
27
27
  s.add_runtime_dependency(%q<javan-whenever>, ["= 0.3.6"])
28
- s.add_runtime_dependency(%q<rack>, [">= 1.0.0"])
29
- s.add_runtime_dependency(%q<rack-test>, [">= 0.4.0"])
30
- s.add_runtime_dependency(%q<rspec>, [">= 1.2.7"])
31
- s.add_runtime_dependency(%q<shotgun>, [">= 0.3"])
32
- s.add_runtime_dependency(%q<sinatra>, ["= 0.9.2"])
33
- s.add_runtime_dependency(%q<winton-active_wrapper>, ["= 0.1.5"])
28
+ s.add_runtime_dependency(%q<rack>, ["= 1.0.0"])
29
+ s.add_runtime_dependency(%q<rack-test>, ["= 0.4.0"])
30
+ s.add_runtime_dependency(%q<rspec>, ["= 1.2.8"])
31
+ s.add_runtime_dependency(%q<shotgun>, ["= 0.3"])
32
+ s.add_runtime_dependency(%q<sinatra>, ["= 0.9.4"])
33
+ s.add_runtime_dependency(%q<winton-active_wrapper>, ["= 0.1.9"])
34
34
  s.add_runtime_dependency(%q<winton-externals>, ["= 1.0.2"])
35
35
  s.add_runtime_dependency(%q<winton-fetcher>, ["= 0.1.2"])
36
36
  s.add_runtime_dependency(%q<winton-secret_key>, ["= 0.1.0"])
37
37
  else
38
38
  s.add_dependency(%q<bmabey-email_spec>, ["= 0.2.0"])
39
- s.add_dependency(%q<cucumber>, [">= 0.3.11"])
40
- s.add_dependency(%q<haml>, ["= 2.0.9"])
41
- s.add_dependency(%q<less>, [">= 0.8.11"])
39
+ s.add_dependency(%q<cucumber>, ["= 0.3.93"])
40
+ s.add_dependency(%q<haml>, ["= 2.2.2"])
41
+ s.add_dependency(%q<less>, ["= 0.8.11"])
42
42
  s.add_dependency(%q<javan-whenever>, ["= 0.3.6"])
43
- s.add_dependency(%q<rack>, [">= 1.0.0"])
44
- s.add_dependency(%q<rack-test>, [">= 0.4.0"])
45
- s.add_dependency(%q<rspec>, [">= 1.2.7"])
46
- s.add_dependency(%q<shotgun>, [">= 0.3"])
47
- s.add_dependency(%q<sinatra>, ["= 0.9.2"])
48
- s.add_dependency(%q<winton-active_wrapper>, ["= 0.1.5"])
43
+ s.add_dependency(%q<rack>, ["= 1.0.0"])
44
+ s.add_dependency(%q<rack-test>, ["= 0.4.0"])
45
+ s.add_dependency(%q<rspec>, ["= 1.2.8"])
46
+ s.add_dependency(%q<shotgun>, ["= 0.3"])
47
+ s.add_dependency(%q<sinatra>, ["= 0.9.4"])
48
+ s.add_dependency(%q<winton-active_wrapper>, ["= 0.1.9"])
49
49
  s.add_dependency(%q<winton-externals>, ["= 1.0.2"])
50
50
  s.add_dependency(%q<winton-fetcher>, ["= 0.1.2"])
51
51
  s.add_dependency(%q<winton-secret_key>, ["= 0.1.0"])
52
52
  end
53
53
  else
54
54
  s.add_dependency(%q<bmabey-email_spec>, ["= 0.2.0"])
55
- s.add_dependency(%q<cucumber>, [">= 0.3.11"])
56
- s.add_dependency(%q<haml>, ["= 2.0.9"])
57
- s.add_dependency(%q<less>, [">= 0.8.11"])
55
+ s.add_dependency(%q<cucumber>, ["= 0.3.93"])
56
+ s.add_dependency(%q<haml>, ["= 2.2.2"])
57
+ s.add_dependency(%q<less>, ["= 0.8.11"])
58
58
  s.add_dependency(%q<javan-whenever>, ["= 0.3.6"])
59
- s.add_dependency(%q<rack>, [">= 1.0.0"])
60
- s.add_dependency(%q<rack-test>, [">= 0.4.0"])
61
- s.add_dependency(%q<rspec>, [">= 1.2.7"])
62
- s.add_dependency(%q<shotgun>, [">= 0.3"])
63
- s.add_dependency(%q<sinatra>, ["= 0.9.2"])
64
- s.add_dependency(%q<winton-active_wrapper>, ["= 0.1.5"])
59
+ s.add_dependency(%q<rack>, ["= 1.0.0"])
60
+ s.add_dependency(%q<rack-test>, ["= 0.4.0"])
61
+ s.add_dependency(%q<rspec>, ["= 1.2.8"])
62
+ s.add_dependency(%q<shotgun>, ["= 0.3"])
63
+ s.add_dependency(%q<sinatra>, ["= 0.9.4"])
64
+ s.add_dependency(%q<winton-active_wrapper>, ["= 0.1.9"])
65
65
  s.add_dependency(%q<winton-externals>, ["= 1.0.2"])
66
66
  s.add_dependency(%q<winton-fetcher>, ["= 0.1.2"])
67
67
  s.add_dependency(%q<winton-secret_key>, ["= 0.1.0"])
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: winton-sum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Winton Welsh
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-07-19 00:00:00 -07:00
12
+ date: 2009-08-04 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -28,9 +28,9 @@ dependencies:
28
28
  version_requirement:
29
29
  version_requirements: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.3.11
33
+ version: 0.3.93
34
34
  version:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: haml
@@ -40,7 +40,7 @@ dependencies:
40
40
  requirements:
41
41
  - - "="
42
42
  - !ruby/object:Gem::Version
43
- version: 2.0.9
43
+ version: 2.2.2
44
44
  version:
45
45
  - !ruby/object:Gem::Dependency
46
46
  name: less
@@ -48,7 +48,7 @@ dependencies:
48
48
  version_requirement:
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - ">="
51
+ - - "="
52
52
  - !ruby/object:Gem::Version
53
53
  version: 0.8.11
54
54
  version:
@@ -68,7 +68,7 @@ dependencies:
68
68
  version_requirement:
69
69
  version_requirements: !ruby/object:Gem::Requirement
70
70
  requirements:
71
- - - ">="
71
+ - - "="
72
72
  - !ruby/object:Gem::Version
73
73
  version: 1.0.0
74
74
  version:
@@ -78,7 +78,7 @@ dependencies:
78
78
  version_requirement:
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - ">="
81
+ - - "="
82
82
  - !ruby/object:Gem::Version
83
83
  version: 0.4.0
84
84
  version:
@@ -88,9 +88,9 @@ dependencies:
88
88
  version_requirement:
89
89
  version_requirements: !ruby/object:Gem::Requirement
90
90
  requirements:
91
- - - ">="
91
+ - - "="
92
92
  - !ruby/object:Gem::Version
93
- version: 1.2.7
93
+ version: 1.2.8
94
94
  version:
95
95
  - !ruby/object:Gem::Dependency
96
96
  name: shotgun
@@ -98,7 +98,7 @@ dependencies:
98
98
  version_requirement:
99
99
  version_requirements: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - "="
102
102
  - !ruby/object:Gem::Version
103
103
  version: "0.3"
104
104
  version:
@@ -110,7 +110,7 @@ dependencies:
110
110
  requirements:
111
111
  - - "="
112
112
  - !ruby/object:Gem::Version
113
- version: 0.9.2
113
+ version: 0.9.4
114
114
  version:
115
115
  - !ruby/object:Gem::Dependency
116
116
  name: winton-active_wrapper
@@ -120,7 +120,7 @@ dependencies:
120
120
  requirements:
121
121
  - - "="
122
122
  - !ruby/object:Gem::Version
123
- version: 0.1.5
123
+ version: 0.1.9
124
124
  version:
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: winton-externals
@@ -211,6 +211,8 @@ files:
211
211
  - lib/sum/view/front.haml
212
212
  - lib/sum/view/layout.haml
213
213
  - lib/sum/view/new.haml
214
+ - lib/sum/view/success.haml
215
+ - lib/sum/view/tos.haml
214
216
  - lib/sum.rb
215
217
  - MIT-LICENSE
216
218
  - public
@@ -526,6 +528,7 @@ files:
526
528
  - vendor/webrat/spec/spec_helper.rb
527
529
  has_rdoc: false
528
530
  homepage: http://github.com/winton/sum
531
+ licenses:
529
532
  post_install_message:
530
533
  rdoc_options: []
531
534
 
@@ -546,7 +549,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
546
549
  requirements: []
547
550
 
548
551
  rubyforge_project:
549
- rubygems_version: 1.2.0
552
+ rubygems_version: 1.3.5
550
553
  signing_key:
551
554
  specification_version: 2
552
555
  summary: A simple budgeting app built on Sinatra