saucy 0.14.2 → 0.14.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.bundle/config +2 -0
- data/.gitignore +6 -0
- data/.rspec +2 -0
- data/CHANGELOG.md +5 -0
- data/Gemfile +3 -17
- data/Gemfile.lock +31 -25
- data/Rakefile +2 -24
- data/app/models/invitation.rb +12 -4
- data/features/step_definitions/rails_steps.rb +1 -1
- data/features/support/env.rb +1 -1
- data/lib/generators/saucy/features/templates/features/manage_projects.feature +1 -1
- data/lib/generators/saucy/features/templates/features/manage_users.feature +1 -1
- data/lib/generators/saucy/features/templates/support/braintree.rb +1 -1
- data/lib/saucy.rb +1 -0
- data/lib/saucy/account_authorization.rb +1 -1
- data/lib/saucy/subscription.rb +25 -2
- data/lib/saucy/version.rb +3 -0
- data/saucy.gemspec +43 -0
- data/spec/controllers/accounts_controller_spec.rb +1 -1
- data/spec/models/invitation_spec.rb +23 -0
- data/spec/scaffold/config/database.yml +6 -0
- data/spec/scaffold/views/layouts/application.html.erb +1 -0
- data/spec/support/.gitkeep +0 -0
- metadata +213 -46
data/.bundle/config
ADDED
data/.rspec
ADDED
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
@@ -1,23 +1,9 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
|
-
|
3
|
-
|
4
|
-
gem "rake"
|
5
|
-
gem "rspec-rails", :require => false
|
6
|
-
gem "rails", ">= 3.0.3"
|
7
|
-
gem "thin"
|
8
|
-
gem "clearance", "~> 0.11.0"
|
9
|
-
gem "shoulda-matchers", "~> 1.0.0.beta3", :require => false
|
10
|
-
gem "bourne", :require => false
|
11
|
-
gem "sqlite3", :require => false
|
12
|
-
gem "factory_girl", :require => false
|
13
|
-
gem "sinatra"
|
14
|
-
gem "sham_rack"
|
15
|
-
gem "braintree"
|
16
|
-
gem "timecop"
|
17
|
-
gem "airbrake", "~> 3.0.4"
|
2
|
+
|
3
|
+
gemspec
|
18
4
|
|
19
5
|
# used by the rails app in cucumber
|
20
|
-
gem "cucumber-rails", :require => false
|
6
|
+
gem "cucumber-rails", '~> 1.0.6', :require => false
|
21
7
|
gem "capybara", :require => false
|
22
8
|
gem "factory_girl_rails", :require => false
|
23
9
|
gem "formtastic", :require => false
|
data/Gemfile.lock
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
saucy (0.14.2)
|
5
|
+
airbrake (~> 3.0.4)
|
6
|
+
braintree (>= 2.6.2)
|
7
|
+
clearance (~> 0.11.2)
|
8
|
+
formtastic (>= 1.2)
|
9
|
+
railties (>= 3.0.3)
|
10
|
+
sham_rack (= 1.3.3)
|
11
|
+
sinatra (>= 1.1.2)
|
12
|
+
|
1
13
|
GEM
|
2
14
|
remote: http://rubygems.org/
|
3
15
|
specs:
|
@@ -61,15 +73,15 @@ GEM
|
|
61
73
|
clearance (0.11.2)
|
62
74
|
diesel (~> 0.1.4)
|
63
75
|
rails (>= 3.0)
|
64
|
-
cucumber (1.0.
|
76
|
+
cucumber (1.0.6)
|
65
77
|
builder (>= 2.1.2)
|
66
78
|
diff-lcs (>= 1.1.2)
|
67
79
|
gherkin (~> 2.4.18)
|
68
80
|
json (>= 1.4.6)
|
69
81
|
term-ansicolor (>= 1.0.6)
|
70
|
-
cucumber-rails (1.0.
|
82
|
+
cucumber-rails (1.0.6)
|
71
83
|
capybara (>= 1.1.1)
|
72
|
-
cucumber (
|
84
|
+
cucumber (>= 1.0.6)
|
73
85
|
nokogiri (>= 1.5.0)
|
74
86
|
daemons (1.1.4)
|
75
87
|
database_cleaner (0.6.7)
|
@@ -83,34 +95,33 @@ GEM
|
|
83
95
|
factory_girl_rails (1.2.0)
|
84
96
|
factory_girl (~> 2.1.0)
|
85
97
|
railties (>= 3.0.0)
|
86
|
-
ffi (1.0.
|
98
|
+
ffi (1.0.10)
|
87
99
|
formtastic (1.2.4)
|
88
100
|
actionpack (>= 2.3.7)
|
89
101
|
activesupport (>= 2.3.7)
|
90
102
|
i18n (~> 0.4)
|
91
|
-
gherkin (2.4.
|
103
|
+
gherkin (2.4.21)
|
92
104
|
json (>= 1.4.6)
|
93
105
|
hike (1.2.1)
|
94
106
|
i18n (0.6.0)
|
95
107
|
jquery-rails (1.0.14)
|
96
108
|
railties (~> 3.0)
|
97
109
|
thor (~> 0.14)
|
98
|
-
json (1.
|
99
|
-
json_pure (1.
|
100
|
-
spruz (~> 0.2.8)
|
110
|
+
json (1.6.1)
|
111
|
+
json_pure (1.6.1)
|
101
112
|
launchy (2.0.5)
|
102
113
|
addressable (~> 2.2.6)
|
103
114
|
mail (2.3.0)
|
104
115
|
i18n (>= 0.4.0)
|
105
116
|
mime-types (~> 1.16)
|
106
117
|
treetop (~> 1.4.8)
|
107
|
-
mime-types (1.
|
118
|
+
mime-types (1.17.2)
|
108
119
|
mocha (0.9.8)
|
109
120
|
rake
|
110
121
|
multi_json (1.0.3)
|
111
122
|
nokogiri (1.5.0)
|
112
123
|
polyglot (0.3.2)
|
113
|
-
rack (1.3.
|
124
|
+
rack (1.3.5)
|
114
125
|
rack-cache (1.0.3)
|
115
126
|
rack (>= 0.4)
|
116
127
|
rack-mount (0.8.3)
|
@@ -151,24 +162,23 @@ GEM
|
|
151
162
|
railties (~> 3.0)
|
152
163
|
rspec (~> 2.6.0)
|
153
164
|
rubyzip (0.9.4)
|
154
|
-
selenium-webdriver (2.
|
165
|
+
selenium-webdriver (2.8.0)
|
155
166
|
childprocess (>= 0.2.1)
|
156
167
|
ffi (>= 1.0.7)
|
157
168
|
json_pure
|
158
169
|
rubyzip
|
159
170
|
sham_rack (1.3.3)
|
160
171
|
rack
|
161
|
-
shoulda-matchers (1.0.0
|
172
|
+
shoulda-matchers (1.0.0)
|
162
173
|
sinatra (1.2.6)
|
163
174
|
rack (~> 1.1)
|
164
|
-
tilt (
|
175
|
+
tilt (>= 1.2.2, < 2.0)
|
165
176
|
sprockets (2.0.0)
|
166
177
|
hike (~> 1.2)
|
167
178
|
rack (~> 1.0)
|
168
|
-
tilt (
|
169
|
-
spruz (0.2.13)
|
179
|
+
tilt (~> 1.1, != 1.3.0)
|
170
180
|
sqlite3 (1.3.4)
|
171
|
-
term-ansicolor (1.0.
|
181
|
+
term-ansicolor (1.0.7)
|
172
182
|
thin (1.2.11)
|
173
183
|
daemons (>= 1.0.9)
|
174
184
|
eventmachine (>= 0.12.6)
|
@@ -187,14 +197,11 @@ PLATFORMS
|
|
187
197
|
ruby
|
188
198
|
|
189
199
|
DEPENDENCIES
|
190
|
-
|
191
|
-
aruba
|
200
|
+
aruba (~> 0.4)
|
192
201
|
bourne
|
193
|
-
braintree
|
194
202
|
capybara
|
195
|
-
|
196
|
-
cucumber
|
197
|
-
cucumber-rails
|
203
|
+
cucumber (~> 1.0.6)
|
204
|
+
cucumber-rails (~> 1.0.6)
|
198
205
|
database_cleaner
|
199
206
|
dynamic_form
|
200
207
|
factory_girl
|
@@ -205,9 +212,8 @@ DEPENDENCIES
|
|
205
212
|
rails (>= 3.0.3)
|
206
213
|
rake
|
207
214
|
rspec-rails
|
208
|
-
|
209
|
-
shoulda-matchers (~> 1.0.0
|
210
|
-
sinatra
|
215
|
+
saucy!
|
216
|
+
shoulda-matchers (~> 1.0.0)
|
211
217
|
sqlite3
|
212
218
|
thin
|
213
219
|
timecop
|
data/Rakefile
CHANGED
@@ -1,13 +1,10 @@
|
|
1
|
-
require 'rubygems'
|
2
1
|
require 'bundler/setup'
|
2
|
+
require "bundler/gem_tasks"
|
3
|
+
|
3
4
|
require 'rake'
|
4
|
-
require 'rubygems/package_task'
|
5
5
|
require 'cucumber/rake/task'
|
6
6
|
require 'rspec/core/rake_task'
|
7
7
|
|
8
|
-
APP_RAKEFILE = File.expand_path("../tmp/aruba/testapp/Rakefile", __FILE__)
|
9
|
-
load 'rails/tasks/engine.rake'
|
10
|
-
|
11
8
|
desc 'Default: run all tests'
|
12
9
|
task :default => [:spec, :cucumber]
|
13
10
|
|
@@ -20,22 +17,3 @@ RSpec::Core::RakeTask.new do |t|
|
|
20
17
|
t.pattern = "spec/**/*_spec.rb"
|
21
18
|
t.rspec_opts = "--format progress"
|
22
19
|
end
|
23
|
-
|
24
|
-
eval("$specification = begin; #{IO.read('saucy.gemspec')}; end")
|
25
|
-
Gem::PackageTask.new($specification) do |package|
|
26
|
-
package.need_zip = true
|
27
|
-
package.need_tar = true
|
28
|
-
end
|
29
|
-
|
30
|
-
gem_file = "pkg/#{$specification.name}-#{$specification.version}.gem"
|
31
|
-
|
32
|
-
desc "Build and install the latest gem"
|
33
|
-
task :install => :gem do
|
34
|
-
sh("gem install --local #{gem_file}")
|
35
|
-
end
|
36
|
-
|
37
|
-
desc "Build and release the latest gem"
|
38
|
-
task :release => :gem do
|
39
|
-
sh("gem push #{gem_file}")
|
40
|
-
end
|
41
|
-
|
data/app/models/invitation.rb
CHANGED
@@ -26,10 +26,7 @@ class Invitation < ActiveRecord::Base
|
|
26
26
|
if valid?
|
27
27
|
transaction do
|
28
28
|
save!
|
29
|
-
@user
|
30
|
-
@user.memberships.create!(:account => account,
|
31
|
-
:admin => admin,
|
32
|
-
:projects => projects)
|
29
|
+
save_and_create_membership(@user)
|
33
30
|
end
|
34
31
|
end
|
35
32
|
end
|
@@ -56,6 +53,17 @@ class Invitation < ActiveRecord::Base
|
|
56
53
|
|
57
54
|
private
|
58
55
|
|
56
|
+
def save_and_create_membership(user)
|
57
|
+
user.save!
|
58
|
+
if !account.has_member?(user)
|
59
|
+
user.memberships.create!(:account => account,
|
60
|
+
:admin => admin,
|
61
|
+
:projects => projects)
|
62
|
+
else
|
63
|
+
true
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
59
67
|
def deliver_invitation
|
60
68
|
InvitationMailer.invitation(self).deliver
|
61
69
|
end
|
data/features/support/env.rb
CHANGED
@@ -135,5 +135,5 @@ Feature: Manage Projects
|
|
135
135
|
| name: Test | Project 1 |
|
136
136
|
When I go to the projects page for the "Test" account
|
137
137
|
And I follow "New Project"
|
138
|
-
Then I should be on the
|
138
|
+
Then I should be on the upgrade plan page for the "Test" account
|
139
139
|
And I should see "at your limit"
|
@@ -138,5 +138,5 @@ Feature: Managing users
|
|
138
138
|
| name | value |
|
139
139
|
| users | 1 |
|
140
140
|
When I follow "Invite user"
|
141
|
-
Then I should be on the
|
141
|
+
Then I should be on the upgrade plan page for the "Test" account
|
142
142
|
And I should see "at your limit"
|
data/lib/saucy.rb
CHANGED
@@ -59,7 +59,7 @@ module Saucy
|
|
59
59
|
|
60
60
|
def ensure_account_within_limit(limit_name)
|
61
61
|
if !Limit.can_add_one?(limit_name, current_account)
|
62
|
-
redirect_to
|
62
|
+
redirect_to edit_account_plan_path(current_account), :alert => t("saucy.errors.limited", :default => "You are at your limit of %{name} for your current plan.", :name => limit_name)
|
63
63
|
end
|
64
64
|
end
|
65
65
|
end
|
data/lib/saucy/subscription.rb
CHANGED
@@ -133,13 +133,26 @@ module Saucy
|
|
133
133
|
if valid?
|
134
134
|
result = Braintree::Customer.update(customer_token, customer_attributes)
|
135
135
|
handle_customer_result(result)
|
136
|
+
if !result.success?
|
137
|
+
Airbrake.notify(nil,
|
138
|
+
:error_class => "Customer update",
|
139
|
+
:error_message => "Customer update failed",
|
140
|
+
:parameters => { :customer_token => customer_token, :customer_attributes => customer_attributes }
|
141
|
+
)
|
142
|
+
end
|
136
143
|
result.success?
|
144
|
+
else
|
145
|
+
Airbrake.notify(nil,
|
146
|
+
:error_class => "Subscription Validation",
|
147
|
+
:error_message => "Customer failed validation",
|
148
|
+
:parameters => customer_attributes
|
149
|
+
)
|
137
150
|
end
|
138
151
|
end
|
139
152
|
|
140
153
|
def save_subscription
|
141
154
|
if subscription
|
142
|
-
Braintree::Subscription.update(subscription_token,
|
155
|
+
Braintree::Subscription.update(subscription_token,
|
143
156
|
:plan_id => plan_id,
|
144
157
|
:price => plan.price.to_s)
|
145
158
|
elsif plan.billed?
|
@@ -174,7 +187,7 @@ module Saucy
|
|
174
187
|
card_attributes.merge!(:options => credit_card_options)
|
175
188
|
end
|
176
189
|
card_attributes
|
177
|
-
else
|
190
|
+
else
|
178
191
|
{}
|
179
192
|
end
|
180
193
|
end
|
@@ -207,6 +220,11 @@ module Saucy
|
|
207
220
|
end
|
208
221
|
|
209
222
|
def handle_errors(result, remote_errors)
|
223
|
+
Airbrake.notify(nil,
|
224
|
+
:error_class => "handle_errors",
|
225
|
+
:error_message => "handle_errors",
|
226
|
+
:parameters => { :result => result, :remote_errors => remote_errors }
|
227
|
+
)
|
210
228
|
if result && result.status == "processor_declined"
|
211
229
|
errors[:card_number] << "was denied by the payment processor with the message: #{result.processor_response_text}"
|
212
230
|
elsif result && result.status == "gateway_rejected"
|
@@ -234,6 +252,11 @@ module Saucy
|
|
234
252
|
self.next_billing_date = zone.parse(result.subscription.next_billing_date)
|
235
253
|
self.subscription_status = result.subscription.status
|
236
254
|
else
|
255
|
+
Airbrake.notify(nil,
|
256
|
+
:error_class => "Subscription creation",
|
257
|
+
:error_message => "Subscription creation failed",
|
258
|
+
:parameters => subscription_attributes
|
259
|
+
)
|
237
260
|
false
|
238
261
|
end
|
239
262
|
end
|
data/saucy.gemspec
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "saucy/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = %q{saucy}
|
7
|
+
s.version = Saucy::VERSION
|
8
|
+
s.summary = %q{Clearance-based Rails engine for SaaS}
|
9
|
+
s.description = %q{Clearance-based Rails engine for Software as a Service (Saas) that provides account and project management}
|
10
|
+
|
11
|
+
s.files = `git ls-files`.split("\n")
|
12
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
13
|
+
s.require_path = 'lib'
|
14
|
+
|
15
|
+
s.has_rdoc = false
|
16
|
+
|
17
|
+
s.authors = ["thoughtbot, inc.", "Joe Ferris", "Mike Burns", "Chad Pytel", "Jason Morrison", "Ben Orenstein"]
|
18
|
+
s.email = %q{support@thoughtbot.com}
|
19
|
+
s.homepage = "http://github.com/thoughtbot/saucy"
|
20
|
+
|
21
|
+
s.add_dependency('clearance', '~> 0.11.2')
|
22
|
+
s.add_dependency('formtastic', '>= 1.2')
|
23
|
+
s.add_dependency('railties', '>= 3.0.3')
|
24
|
+
s.add_dependency('braintree', '>= 2.6.2')
|
25
|
+
s.add_dependency('sham_rack', '1.3.3')
|
26
|
+
s.add_dependency('sinatra', '>= 1.1.2')
|
27
|
+
s.add_dependency('airbrake', '~> 3.0.4')
|
28
|
+
|
29
|
+
s.add_development_dependency('aruba', '~> 0.4')
|
30
|
+
s.add_development_dependency('shoulda-matchers', '~> 1.0.0')
|
31
|
+
s.add_development_dependency('bourne')
|
32
|
+
s.add_development_dependency('sqlite3')
|
33
|
+
s.add_development_dependency('factory_girl')
|
34
|
+
s.add_development_dependency('timecop')
|
35
|
+
s.add_development_dependency('rake')
|
36
|
+
s.add_development_dependency('cucumber', '~> 1.0.6')
|
37
|
+
s.add_development_dependency('rspec-rails')
|
38
|
+
s.add_development_dependency('rails', '>= 3.0.3')
|
39
|
+
s.add_development_dependency('thin')
|
40
|
+
|
41
|
+
s.platform = Gem::Platform::RUBY
|
42
|
+
s.rubygems_version = %q{1.2.0}
|
43
|
+
end
|
@@ -53,7 +53,7 @@ describe AccountsController, "successful create for a confirmed user" do
|
|
53
53
|
post :create, :signup => signup_attributes, :plan_id => plan.to_param
|
54
54
|
end
|
55
55
|
|
56
|
-
it "creates
|
56
|
+
it "creates a signup" do
|
57
57
|
Signup.should have_received(:new).with(signup_attributes)
|
58
58
|
signup.should have_received(:save)
|
59
59
|
end
|
@@ -190,6 +190,29 @@ describe Invitation, "valid accept for an existing user specifically set" do
|
|
190
190
|
end
|
191
191
|
end
|
192
192
|
|
193
|
+
describe Invitation, "valid accept for an existing user specifically set, who is already a member" do
|
194
|
+
let(:user) { Factory(:user) }
|
195
|
+
subject { Factory(:invitation, :email => user.email) }
|
196
|
+
let(:account) { subject.account }
|
197
|
+
|
198
|
+
before do
|
199
|
+
Factory(:membership, :user => user, :account => account)
|
200
|
+
@result = subject.accept({:existing_user => user})
|
201
|
+
end
|
202
|
+
|
203
|
+
it "returns true" do
|
204
|
+
@result.should be_true
|
205
|
+
end
|
206
|
+
|
207
|
+
it "adds the user to the account" do
|
208
|
+
account.users.should include(user)
|
209
|
+
end
|
210
|
+
|
211
|
+
it "marks the invitation as used" do
|
212
|
+
subject.reload.should be_used
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
193
216
|
describe Invitation, "saved" do
|
194
217
|
let(:mail) { stub('invitation', :deliver => true) }
|
195
218
|
subject { Factory(:invitation) }
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= yield %>
|
File without changes
|
metadata
CHANGED
@@ -1,8 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: saucy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 14
|
8
|
+
- 3
|
9
|
+
version: 0.14.3
|
6
10
|
platform: ruby
|
7
11
|
authors:
|
8
12
|
- thoughtbot, inc.
|
@@ -15,16 +19,20 @@ autorequire:
|
|
15
19
|
bindir: bin
|
16
20
|
cert_chain: []
|
17
21
|
|
18
|
-
date: 2011-
|
22
|
+
date: 2011-12-08 00:00:00 -05:00
|
23
|
+
default_executable:
|
19
24
|
dependencies:
|
20
25
|
- !ruby/object:Gem::Dependency
|
21
26
|
name: clearance
|
22
27
|
prerelease: false
|
23
28
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
-
none: false
|
25
29
|
requirements:
|
26
30
|
- - ~>
|
27
31
|
- !ruby/object:Gem::Version
|
32
|
+
segments:
|
33
|
+
- 0
|
34
|
+
- 11
|
35
|
+
- 2
|
28
36
|
version: 0.11.2
|
29
37
|
type: :runtime
|
30
38
|
version_requirements: *id001
|
@@ -32,10 +40,12 @@ dependencies:
|
|
32
40
|
name: formtastic
|
33
41
|
prerelease: false
|
34
42
|
requirement: &id002 !ruby/object:Gem::Requirement
|
35
|
-
none: false
|
36
43
|
requirements:
|
37
44
|
- - ">="
|
38
45
|
- !ruby/object:Gem::Version
|
46
|
+
segments:
|
47
|
+
- 1
|
48
|
+
- 2
|
39
49
|
version: "1.2"
|
40
50
|
type: :runtime
|
41
51
|
version_requirements: *id002
|
@@ -43,10 +53,13 @@ dependencies:
|
|
43
53
|
name: railties
|
44
54
|
prerelease: false
|
45
55
|
requirement: &id003 !ruby/object:Gem::Requirement
|
46
|
-
none: false
|
47
56
|
requirements:
|
48
57
|
- - ">="
|
49
58
|
- !ruby/object:Gem::Version
|
59
|
+
segments:
|
60
|
+
- 3
|
61
|
+
- 0
|
62
|
+
- 3
|
50
63
|
version: 3.0.3
|
51
64
|
type: :runtime
|
52
65
|
version_requirements: *id003
|
@@ -54,10 +67,13 @@ dependencies:
|
|
54
67
|
name: braintree
|
55
68
|
prerelease: false
|
56
69
|
requirement: &id004 !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
70
|
requirements:
|
59
71
|
- - ">="
|
60
72
|
- !ruby/object:Gem::Version
|
73
|
+
segments:
|
74
|
+
- 2
|
75
|
+
- 6
|
76
|
+
- 2
|
61
77
|
version: 2.6.2
|
62
78
|
type: :runtime
|
63
79
|
version_requirements: *id004
|
@@ -65,10 +81,13 @@ dependencies:
|
|
65
81
|
name: sham_rack
|
66
82
|
prerelease: false
|
67
83
|
requirement: &id005 !ruby/object:Gem::Requirement
|
68
|
-
none: false
|
69
84
|
requirements:
|
70
85
|
- - "="
|
71
86
|
- !ruby/object:Gem::Version
|
87
|
+
segments:
|
88
|
+
- 1
|
89
|
+
- 3
|
90
|
+
- 3
|
72
91
|
version: 1.3.3
|
73
92
|
type: :runtime
|
74
93
|
version_requirements: *id005
|
@@ -76,10 +95,13 @@ dependencies:
|
|
76
95
|
name: sinatra
|
77
96
|
prerelease: false
|
78
97
|
requirement: &id006 !ruby/object:Gem::Requirement
|
79
|
-
none: false
|
80
98
|
requirements:
|
81
99
|
- - ">="
|
82
100
|
- !ruby/object:Gem::Version
|
101
|
+
segments:
|
102
|
+
- 1
|
103
|
+
- 1
|
104
|
+
- 2
|
83
105
|
version: 1.1.2
|
84
106
|
type: :runtime
|
85
107
|
version_requirements: *id006
|
@@ -87,10 +109,13 @@ dependencies:
|
|
87
109
|
name: airbrake
|
88
110
|
prerelease: false
|
89
111
|
requirement: &id007 !ruby/object:Gem::Requirement
|
90
|
-
none: false
|
91
112
|
requirements:
|
92
113
|
- - ~>
|
93
114
|
- !ruby/object:Gem::Version
|
115
|
+
segments:
|
116
|
+
- 3
|
117
|
+
- 0
|
118
|
+
- 4
|
94
119
|
version: 3.0.4
|
95
120
|
type: :runtime
|
96
121
|
version_requirements: *id007
|
@@ -98,13 +123,141 @@ dependencies:
|
|
98
123
|
name: aruba
|
99
124
|
prerelease: false
|
100
125
|
requirement: &id008 !ruby/object:Gem::Requirement
|
101
|
-
none: false
|
102
126
|
requirements:
|
103
|
-
- -
|
127
|
+
- - ~>
|
104
128
|
- !ruby/object:Gem::Version
|
105
|
-
|
129
|
+
segments:
|
130
|
+
- 0
|
131
|
+
- 4
|
132
|
+
version: "0.4"
|
106
133
|
type: :development
|
107
134
|
version_requirements: *id008
|
135
|
+
- !ruby/object:Gem::Dependency
|
136
|
+
name: shoulda-matchers
|
137
|
+
prerelease: false
|
138
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
139
|
+
requirements:
|
140
|
+
- - ~>
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
segments:
|
143
|
+
- 1
|
144
|
+
- 0
|
145
|
+
- 0
|
146
|
+
version: 1.0.0
|
147
|
+
type: :development
|
148
|
+
version_requirements: *id009
|
149
|
+
- !ruby/object:Gem::Dependency
|
150
|
+
name: bourne
|
151
|
+
prerelease: false
|
152
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
153
|
+
requirements:
|
154
|
+
- - ">="
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
segments:
|
157
|
+
- 0
|
158
|
+
version: "0"
|
159
|
+
type: :development
|
160
|
+
version_requirements: *id010
|
161
|
+
- !ruby/object:Gem::Dependency
|
162
|
+
name: sqlite3
|
163
|
+
prerelease: false
|
164
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
165
|
+
requirements:
|
166
|
+
- - ">="
|
167
|
+
- !ruby/object:Gem::Version
|
168
|
+
segments:
|
169
|
+
- 0
|
170
|
+
version: "0"
|
171
|
+
type: :development
|
172
|
+
version_requirements: *id011
|
173
|
+
- !ruby/object:Gem::Dependency
|
174
|
+
name: factory_girl
|
175
|
+
prerelease: false
|
176
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
segments:
|
181
|
+
- 0
|
182
|
+
version: "0"
|
183
|
+
type: :development
|
184
|
+
version_requirements: *id012
|
185
|
+
- !ruby/object:Gem::Dependency
|
186
|
+
name: timecop
|
187
|
+
prerelease: false
|
188
|
+
requirement: &id013 !ruby/object:Gem::Requirement
|
189
|
+
requirements:
|
190
|
+
- - ">="
|
191
|
+
- !ruby/object:Gem::Version
|
192
|
+
segments:
|
193
|
+
- 0
|
194
|
+
version: "0"
|
195
|
+
type: :development
|
196
|
+
version_requirements: *id013
|
197
|
+
- !ruby/object:Gem::Dependency
|
198
|
+
name: rake
|
199
|
+
prerelease: false
|
200
|
+
requirement: &id014 !ruby/object:Gem::Requirement
|
201
|
+
requirements:
|
202
|
+
- - ">="
|
203
|
+
- !ruby/object:Gem::Version
|
204
|
+
segments:
|
205
|
+
- 0
|
206
|
+
version: "0"
|
207
|
+
type: :development
|
208
|
+
version_requirements: *id014
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: cucumber
|
211
|
+
prerelease: false
|
212
|
+
requirement: &id015 !ruby/object:Gem::Requirement
|
213
|
+
requirements:
|
214
|
+
- - ~>
|
215
|
+
- !ruby/object:Gem::Version
|
216
|
+
segments:
|
217
|
+
- 1
|
218
|
+
- 0
|
219
|
+
- 6
|
220
|
+
version: 1.0.6
|
221
|
+
type: :development
|
222
|
+
version_requirements: *id015
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: rspec-rails
|
225
|
+
prerelease: false
|
226
|
+
requirement: &id016 !ruby/object:Gem::Requirement
|
227
|
+
requirements:
|
228
|
+
- - ">="
|
229
|
+
- !ruby/object:Gem::Version
|
230
|
+
segments:
|
231
|
+
- 0
|
232
|
+
version: "0"
|
233
|
+
type: :development
|
234
|
+
version_requirements: *id016
|
235
|
+
- !ruby/object:Gem::Dependency
|
236
|
+
name: rails
|
237
|
+
prerelease: false
|
238
|
+
requirement: &id017 !ruby/object:Gem::Requirement
|
239
|
+
requirements:
|
240
|
+
- - ">="
|
241
|
+
- !ruby/object:Gem::Version
|
242
|
+
segments:
|
243
|
+
- 3
|
244
|
+
- 0
|
245
|
+
- 3
|
246
|
+
version: 3.0.3
|
247
|
+
type: :development
|
248
|
+
version_requirements: *id017
|
249
|
+
- !ruby/object:Gem::Dependency
|
250
|
+
name: thin
|
251
|
+
prerelease: false
|
252
|
+
requirement: &id018 !ruby/object:Gem::Requirement
|
253
|
+
requirements:
|
254
|
+
- - ">="
|
255
|
+
- !ruby/object:Gem::Version
|
256
|
+
segments:
|
257
|
+
- 0
|
258
|
+
version: "0"
|
259
|
+
type: :development
|
260
|
+
version_requirements: *id018
|
108
261
|
description: Clearance-based Rails engine for Software as a Service (Saas) that provides account and project management
|
109
262
|
email: support@thoughtbot.com
|
110
263
|
executables: []
|
@@ -114,13 +267,14 @@ extensions: []
|
|
114
267
|
extra_rdoc_files: []
|
115
268
|
|
116
269
|
files:
|
270
|
+
- .bundle/config
|
271
|
+
- .gitignore
|
272
|
+
- .rspec
|
117
273
|
- CHANGELOG.md
|
118
274
|
- Gemfile
|
119
275
|
- Gemfile.lock
|
120
|
-
- Rakefile
|
121
276
|
- README.md
|
122
|
-
-
|
123
|
-
- config/routes.rb
|
277
|
+
- Rakefile
|
124
278
|
- app/controllers/accounts_controller.rb
|
125
279
|
- app/controllers/admin/accounts_controller.rb
|
126
280
|
- app/controllers/admin/base_controller.rb
|
@@ -187,11 +341,34 @@ files:
|
|
187
341
|
- app/views/projects/show.html.erb
|
188
342
|
- app/views/shared/_project_dropdown.html.erb
|
189
343
|
- app/views/shared/_saucy_javascript.html.erb
|
190
|
-
-
|
191
|
-
-
|
344
|
+
- config/locales/en.yml
|
345
|
+
- config/routes.rb
|
346
|
+
- db/migrate/20111014142613_create_canceled_accounts.rb
|
347
|
+
- features/run_features.feature
|
348
|
+
- features/step_definitions/clearance_steps.rb
|
349
|
+
- features/step_definitions/rails_steps.rb
|
350
|
+
- features/step_definitions/saucy_steps.rb
|
351
|
+
- features/support/env.rb
|
352
|
+
- features/support/file.rb
|
192
353
|
- lib/generators/saucy/base.rb
|
193
354
|
- lib/generators/saucy/features/features_generator.rb
|
355
|
+
- lib/generators/saucy/features/templates/README
|
194
356
|
- lib/generators/saucy/features/templates/factories.rb
|
357
|
+
- lib/generators/saucy/features/templates/features/admin_reporting.feature
|
358
|
+
- lib/generators/saucy/features/templates/features/edit_profile.feature
|
359
|
+
- lib/generators/saucy/features/templates/features/edit_project_permissions.feature
|
360
|
+
- lib/generators/saucy/features/templates/features/edit_user_permissions.feature
|
361
|
+
- lib/generators/saucy/features/templates/features/manage_account.feature
|
362
|
+
- lib/generators/saucy/features/templates/features/manage_billing.feature
|
363
|
+
- lib/generators/saucy/features/templates/features/manage_plan.feature
|
364
|
+
- lib/generators/saucy/features/templates/features/manage_projects.feature
|
365
|
+
- lib/generators/saucy/features/templates/features/manage_users.feature
|
366
|
+
- lib/generators/saucy/features/templates/features/new_account.feature
|
367
|
+
- lib/generators/saucy/features/templates/features/project_dropdown.feature
|
368
|
+
- lib/generators/saucy/features/templates/features/sign_up.feature
|
369
|
+
- lib/generators/saucy/features/templates/features/sign_up_coupon.feature
|
370
|
+
- lib/generators/saucy/features/templates/features/sign_up_paid.feature
|
371
|
+
- lib/generators/saucy/features/templates/features/trial_plans.feature
|
195
372
|
- lib/generators/saucy/features/templates/step_definitions/account_steps.rb
|
196
373
|
- lib/generators/saucy/features/templates/step_definitions/braintree_steps.rb
|
197
374
|
- lib/generators/saucy/features/templates/step_definitions/country_steps.rb
|
@@ -213,6 +390,7 @@ files:
|
|
213
390
|
- lib/generators/saucy/specs/specs_generator.rb
|
214
391
|
- lib/generators/saucy/specs/templates/support/braintree.rb
|
215
392
|
- lib/generators/saucy/views/views_generator.rb
|
393
|
+
- lib/saucy.rb
|
216
394
|
- lib/saucy/account.rb
|
217
395
|
- lib/saucy/account_authorization.rb
|
218
396
|
- lib/saucy/configuration.rb
|
@@ -224,34 +402,14 @@ files:
|
|
224
402
|
- lib/saucy/plan.rb
|
225
403
|
- lib/saucy/project.rb
|
226
404
|
- lib/saucy/projects_controller.rb
|
405
|
+
- lib/saucy/railties/tasks.rake
|
227
406
|
- lib/saucy/routing_extensions.rb
|
228
407
|
- lib/saucy/subscription.rb
|
229
408
|
- lib/saucy/user.rb
|
230
|
-
- lib/saucy.rb
|
231
|
-
-
|
232
|
-
-
|
233
|
-
-
|
234
|
-
- features/step_definitions/rails_steps.rb
|
235
|
-
- features/step_definitions/saucy_steps.rb
|
236
|
-
- features/support/env.rb
|
237
|
-
- features/support/file.rb
|
238
|
-
- lib/generators/saucy/features/templates/features/admin_reporting.feature
|
239
|
-
- lib/generators/saucy/features/templates/features/edit_profile.feature
|
240
|
-
- lib/generators/saucy/features/templates/features/edit_project_permissions.feature
|
241
|
-
- lib/generators/saucy/features/templates/features/edit_user_permissions.feature
|
242
|
-
- lib/generators/saucy/features/templates/features/manage_account.feature
|
243
|
-
- lib/generators/saucy/features/templates/features/manage_billing.feature
|
244
|
-
- lib/generators/saucy/features/templates/features/manage_plan.feature
|
245
|
-
- lib/generators/saucy/features/templates/features/manage_projects.feature
|
246
|
-
- lib/generators/saucy/features/templates/features/manage_users.feature
|
247
|
-
- lib/generators/saucy/features/templates/features/new_account.feature
|
248
|
-
- lib/generators/saucy/features/templates/features/project_dropdown.feature
|
249
|
-
- lib/generators/saucy/features/templates/features/sign_up.feature
|
250
|
-
- lib/generators/saucy/features/templates/features/sign_up_coupon.feature
|
251
|
-
- lib/generators/saucy/features/templates/features/sign_up_paid.feature
|
252
|
-
- lib/generators/saucy/features/templates/features/trial_plans.feature
|
253
|
-
- lib/generators/saucy/features/templates/README
|
254
|
-
- db/migrate/20111014142613_create_canceled_accounts.rb
|
409
|
+
- lib/saucy/version.rb
|
410
|
+
- public/saucy/stylesheets/flutie.css
|
411
|
+
- public/saucy/stylesheets/screen.css
|
412
|
+
- saucy.gemspec
|
255
413
|
- spec/controllers/accounts_controller_spec.rb
|
256
414
|
- spec/controllers/admin/accounts_controller_spec.rb
|
257
415
|
- spec/controllers/admin/base_controller_spec.rb
|
@@ -282,14 +440,18 @@ files:
|
|
282
440
|
- spec/route_extensions_spec.rb
|
283
441
|
- spec/saucy/configuration_spec.rb
|
284
442
|
- spec/saucy/notifications_spec.rb
|
443
|
+
- spec/scaffold/config/database.yml
|
285
444
|
- spec/scaffold/config/routes.rb
|
445
|
+
- spec/scaffold/views/layouts/application.html.erb
|
286
446
|
- spec/spec_helper.rb
|
447
|
+
- spec/support/.gitkeep
|
287
448
|
- spec/support/authentication_helpers.rb
|
288
449
|
- spec/support/authorization_helpers.rb
|
289
450
|
- spec/support/braintree.rb
|
290
451
|
- spec/support/clearance_matchers.rb
|
291
452
|
- spec/support/notifications.rb
|
292
453
|
- spec/views/accounts/_account.html.erb_spec.rb
|
454
|
+
has_rdoc: true
|
293
455
|
homepage: http://github.com/thoughtbot/saucy
|
294
456
|
licenses: []
|
295
457
|
|
@@ -299,21 +461,23 @@ rdoc_options: []
|
|
299
461
|
require_paths:
|
300
462
|
- lib
|
301
463
|
required_ruby_version: !ruby/object:Gem::Requirement
|
302
|
-
none: false
|
303
464
|
requirements:
|
304
465
|
- - ">="
|
305
466
|
- !ruby/object:Gem::Version
|
467
|
+
segments:
|
468
|
+
- 0
|
306
469
|
version: "0"
|
307
470
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
308
|
-
none: false
|
309
471
|
requirements:
|
310
472
|
- - ">="
|
311
473
|
- !ruby/object:Gem::Version
|
474
|
+
segments:
|
475
|
+
- 0
|
312
476
|
version: "0"
|
313
477
|
requirements: []
|
314
478
|
|
315
479
|
rubyforge_project:
|
316
|
-
rubygems_version: 1.
|
480
|
+
rubygems_version: 1.3.6
|
317
481
|
signing_key:
|
318
482
|
specification_version: 3
|
319
483
|
summary: Clearance-based Rails engine for SaaS
|
@@ -354,8 +518,11 @@ test_files:
|
|
354
518
|
- spec/route_extensions_spec.rb
|
355
519
|
- spec/saucy/configuration_spec.rb
|
356
520
|
- spec/saucy/notifications_spec.rb
|
521
|
+
- spec/scaffold/config/database.yml
|
357
522
|
- spec/scaffold/config/routes.rb
|
523
|
+
- spec/scaffold/views/layouts/application.html.erb
|
358
524
|
- spec/spec_helper.rb
|
525
|
+
- spec/support/.gitkeep
|
359
526
|
- spec/support/authentication_helpers.rb
|
360
527
|
- spec/support/authorization_helpers.rb
|
361
528
|
- spec/support/braintree.rb
|