suspenders 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile.lock +3 -3
- data/README.md +19 -0
- data/Rakefile +2 -92
- data/features/creating_a_heroku_app.feature +9 -0
- data/features/skipping_clearance.feature +13 -0
- data/features/step_definitions/gem_steps.rb +5 -0
- data/features/step_definitions/heroku_steps.rb +3 -0
- data/features/step_definitions/{shell.rb → shell_steps.rb} +19 -8
- data/features/support/bin/heroku +5 -0
- data/features/support/env.rb +15 -0
- data/features/support/fake_heroku.rb +21 -0
- data/lib/suspenders/app_builder.rb +30 -2
- data/lib/suspenders/generators/app_generator.rb +55 -18
- data/lib/suspenders/version.rb +3 -0
- data/suspenders.gemspec +17 -46
- data/templates/Gemfile_additions +0 -1
- data/templates/email_validator.rb +7 -0
- metadata +35 -13
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
suspenders (0.3)
|
4
|
+
suspenders (0.3.2)
|
5
5
|
bundler (>= 1.0.7)
|
6
6
|
rails (= 3.1.1)
|
7
7
|
|
@@ -66,7 +66,7 @@ GEM
|
|
66
66
|
i18n (>= 0.4.0)
|
67
67
|
mime-types (~> 1.16)
|
68
68
|
treetop (~> 1.4.8)
|
69
|
-
mime-types (1.
|
69
|
+
mime-types (1.17.2)
|
70
70
|
multi_json (1.0.3)
|
71
71
|
polyglot (0.3.2)
|
72
72
|
rack (1.3.5)
|
@@ -93,7 +93,7 @@ GEM
|
|
93
93
|
rake (>= 0.8.7)
|
94
94
|
rdoc (~> 3.4)
|
95
95
|
thor (~> 0.14.6)
|
96
|
-
rake (0.9.2)
|
96
|
+
rake (0.9.2.2)
|
97
97
|
rdiscount (1.6.8)
|
98
98
|
rdoc (3.11)
|
99
99
|
json (~> 1.4)
|
data/README.md
CHANGED
@@ -51,6 +51,25 @@ Suspenders also comes with:
|
|
51
51
|
* Rails' flashes set up and in application layout.
|
52
52
|
* A few nice time formats.
|
53
53
|
|
54
|
+
Heroku
|
55
|
+
------
|
56
|
+
|
57
|
+
You can optionally create Heroku staging and production apps:
|
58
|
+
|
59
|
+
suspenders app --heroku true
|
60
|
+
|
61
|
+
This has the same effect as running:
|
62
|
+
|
63
|
+
heroku create app-staging --remote staging --stack cedar
|
64
|
+
heroku create app-production --remote production --stack cedar
|
65
|
+
|
66
|
+
Clearance
|
67
|
+
---------
|
68
|
+
|
69
|
+
You can optionally not include Clearance:
|
70
|
+
|
71
|
+
suspenders app --clearance false
|
72
|
+
|
54
73
|
Dependencies
|
55
74
|
------------
|
56
75
|
|
data/Rakefile
CHANGED
@@ -1,98 +1,8 @@
|
|
1
|
-
require '
|
2
|
-
require '
|
1
|
+
require 'bundler/setup'
|
2
|
+
require 'bundler/gem_tasks'
|
3
3
|
require 'cucumber/rake/task'
|
4
|
-
require 'date'
|
5
|
-
|
6
|
-
TEST_PROJECT = 'test_project'
|
7
|
-
SUSPENDERS_GEM_VERSION = '0.3.1'
|
8
|
-
|
9
|
-
#############################################################################
|
10
|
-
#
|
11
|
-
# Testing functions
|
12
|
-
#
|
13
|
-
#############################################################################
|
14
4
|
|
15
5
|
Cucumber::Rake::Task.new
|
16
6
|
|
17
7
|
desc 'Run the test suite'
|
18
8
|
task :default => ['cucumber']
|
19
|
-
|
20
|
-
#############################################################################
|
21
|
-
#
|
22
|
-
# Helper functions
|
23
|
-
#
|
24
|
-
#############################################################################
|
25
|
-
|
26
|
-
def name
|
27
|
-
@name ||= Dir['*.gemspec'].first.split('.').first
|
28
|
-
end
|
29
|
-
|
30
|
-
def version
|
31
|
-
SUSPENDERS_GEM_VERSION
|
32
|
-
end
|
33
|
-
|
34
|
-
def date
|
35
|
-
Date.today.to_s
|
36
|
-
end
|
37
|
-
|
38
|
-
def gemspec_file
|
39
|
-
"#{name}.gemspec"
|
40
|
-
end
|
41
|
-
|
42
|
-
def gem_file
|
43
|
-
"#{name}-#{version}.gem"
|
44
|
-
end
|
45
|
-
|
46
|
-
def replace_header(head, header_name)
|
47
|
-
head.sub!(/(\.#{header_name}\s*= ').*'/) { "#{$1}#{send(header_name)}'"}
|
48
|
-
end
|
49
|
-
|
50
|
-
#############################################################################
|
51
|
-
#
|
52
|
-
# Packaging tasks
|
53
|
-
#
|
54
|
-
#############################################################################
|
55
|
-
|
56
|
-
task :release => :build do
|
57
|
-
unless `git branch` =~ /^\* master$/
|
58
|
-
puts "You must be on the master branch to release!"
|
59
|
-
exit!
|
60
|
-
end
|
61
|
-
sh "git commit --allow-empty -a -m 'Release #{version}'"
|
62
|
-
sh "git tag v#{version}"
|
63
|
-
sh "git push origin master"
|
64
|
-
sh "git push --tags"
|
65
|
-
sh "gem push pkg/#{name}-#{version}.gem"
|
66
|
-
end
|
67
|
-
|
68
|
-
task :build => :gemspec do
|
69
|
-
sh "mkdir -p pkg"
|
70
|
-
sh "gem build #{gemspec_file}"
|
71
|
-
sh "mv #{gem_file} pkg"
|
72
|
-
end
|
73
|
-
|
74
|
-
task :gemspec do
|
75
|
-
# read spec file and split out manifest section
|
76
|
-
spec = File.read(gemspec_file)
|
77
|
-
head, manifest, tail = spec.split(" # = MANIFEST =\n")
|
78
|
-
|
79
|
-
# replace name version and date
|
80
|
-
replace_header(head, :name)
|
81
|
-
replace_header(head, :version)
|
82
|
-
replace_header(head, :date)
|
83
|
-
|
84
|
-
# determine file list from git ls-files
|
85
|
-
files = `git ls-files`.
|
86
|
-
split("\n").
|
87
|
-
sort.
|
88
|
-
reject { |file| file =~ /^\./ }.
|
89
|
-
reject { |file| file =~ /^(rdoc|pkg)/ }.
|
90
|
-
map { |file| " #{file}" }.
|
91
|
-
join("\n")
|
92
|
-
|
93
|
-
# piece file back together and write
|
94
|
-
manifest = " s.files = %w[\n#{files}\n ]\n"
|
95
|
-
spec = [head, manifest, tail].join(" # = MANIFEST =\n")
|
96
|
-
File.open(gemspec_file, 'w') { |io| io.write(spec) }
|
97
|
-
puts "Updated #{gemspec_file}"
|
98
|
-
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
@disable-bundler
|
2
|
+
Feature: Creating a Heroku app when suspending a project
|
3
|
+
|
4
|
+
Scenario: User uses the --heroku=true command line argument
|
5
|
+
When I suspend a project called "test_project" with:
|
6
|
+
| argument | value |
|
7
|
+
| --heroku | true |
|
8
|
+
Then the "test_project-production" heroku app should exist
|
9
|
+
And the "test_project-production" heroku app should exist
|
@@ -0,0 +1,13 @@
|
|
1
|
+
@disable-bundler
|
2
|
+
Feature: Skipping clearance
|
3
|
+
As a developer
|
4
|
+
I want to suspend an app without clearance
|
5
|
+
So that I can build apps without users, or with other authentication libraries
|
6
|
+
|
7
|
+
Scenario: Passing --clearance=false
|
8
|
+
When I suspend a project called "test_project" with:
|
9
|
+
| argument | value |
|
10
|
+
| --clearance | false |
|
11
|
+
And I cd to the "test_project" root
|
12
|
+
Then "clearance" should not be installed
|
13
|
+
And I can cleanly rake the project
|
@@ -1,13 +1,5 @@
|
|
1
1
|
require 'aruba/cucumber'
|
2
2
|
|
3
|
-
Before do
|
4
|
-
@aruba_timeout_seconds = 60
|
5
|
-
end
|
6
|
-
|
7
|
-
After do
|
8
|
-
FileUtils.rm_rf('test_project')
|
9
|
-
end
|
10
|
-
|
11
3
|
When 'I run the rake task "$task_name"' do |task_name|
|
12
4
|
in_current_dir do
|
13
5
|
run "bundle exec rake #{task_name}"
|
@@ -39,6 +31,25 @@ When 'I suspend a project called "$project_name"' do |project_name|
|
|
39
31
|
assert_exit_status(0)
|
40
32
|
end
|
41
33
|
|
34
|
+
When /^I suspend a project called "([^"]*)" with:$/ do |project_name, arguments_table|
|
35
|
+
suspenders_bin = File.expand_path(File.join('..', '..', 'bin', 'suspenders'), File.dirname(__FILE__))
|
36
|
+
arguments = arguments_table.hashes.inject([]) do |accum, argument|
|
37
|
+
accum << "#{argument['argument']}=#{argument['value']}"
|
38
|
+
end.join
|
39
|
+
run "#{suspenders_bin} #{project_name} #{arguments}"
|
40
|
+
assert_exit_status(0)
|
41
|
+
end
|
42
|
+
|
42
43
|
When 'I cd to the "$test_project" root' do |dirname|
|
43
44
|
cd dirname
|
44
45
|
end
|
46
|
+
|
47
|
+
Then 'I can cleanly rake the project' do
|
48
|
+
steps %{
|
49
|
+
And I run the rake task "db:create"
|
50
|
+
And I run the rake task "db:migrate"
|
51
|
+
And I run the rake task "db:test:prepare"
|
52
|
+
And I run the rake task "cucumber"
|
53
|
+
Then I see a successful response in the shell
|
54
|
+
}
|
55
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class FakeHeroku
|
2
|
+
RECORDER = File.expand_path(File.join('..', '..', 'tmp', 'heroku_commands'), File.dirname(__FILE__))
|
3
|
+
|
4
|
+
def initialize(args)
|
5
|
+
@args = args
|
6
|
+
end
|
7
|
+
|
8
|
+
def run!
|
9
|
+
File.open(RECORDER, 'a') do |file|
|
10
|
+
file.write @args.join(' ')
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.clear!
|
15
|
+
FileUtils.rm_rf(RECORDER)
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.has_created_app?(app_name)
|
19
|
+
File.open(RECORDER, 'r').read.include?("create #{app_name}")
|
20
|
+
end
|
21
|
+
end
|
@@ -14,7 +14,11 @@ module Suspenders
|
|
14
14
|
remove_file 'public/images/rails.png'
|
15
15
|
end
|
16
16
|
|
17
|
-
def
|
17
|
+
def raise_delivery_errors
|
18
|
+
replace_in_file "config/environments/development.rb", "raise_delivery_errors = false", "raise_delivery_errors = true"
|
19
|
+
end
|
20
|
+
|
21
|
+
def setup_staging_environment
|
18
22
|
run "cp config/environments/production.rb config/environments/staging.rb"
|
19
23
|
end
|
20
24
|
|
@@ -49,7 +53,7 @@ module Suspenders
|
|
49
53
|
end
|
50
54
|
|
51
55
|
def create_database
|
52
|
-
rake
|
56
|
+
bundle_command('exec rake db:create')
|
53
57
|
end
|
54
58
|
|
55
59
|
def include_custom_gems
|
@@ -123,6 +127,22 @@ module Suspenders
|
|
123
127
|
end
|
124
128
|
end
|
125
129
|
|
130
|
+
def init_git
|
131
|
+
run "git init"
|
132
|
+
run "git add -A ."
|
133
|
+
run "git commit -m 'Initial commit - suspended project'"
|
134
|
+
end
|
135
|
+
|
136
|
+
def create_heroku_apps
|
137
|
+
path_additions = ''
|
138
|
+
if ENV['TESTING']
|
139
|
+
support_bin = File.expand_path(File.join('..', '..', '..', 'features', 'support', 'bin'))
|
140
|
+
path_addition = "PATH=#{support_bin}:$PATH"
|
141
|
+
end
|
142
|
+
run "#{path_addition} heroku create #{app_name}-production --remote=production --stack=cedar"
|
143
|
+
run "#{path_addition} heroku create #{app_name}-staging --remote=staging --stack=cedar"
|
144
|
+
end
|
145
|
+
|
126
146
|
def copy_miscellaneous_files
|
127
147
|
copy_file "errors.rb", "config/initializers/errors.rb"
|
128
148
|
copy_file "time_formats.rb", "config/initializers/time_formats.rb"
|
@@ -143,6 +163,10 @@ module Suspenders
|
|
143
163
|
:after => /include Clearance::User\n/
|
144
164
|
end
|
145
165
|
|
166
|
+
def add_email_validator
|
167
|
+
copy_file "email_validator.rb", "app/validators/email_validator.rb"
|
168
|
+
end
|
169
|
+
|
146
170
|
def include_clearance_matchers
|
147
171
|
create_file "spec/support/clearance.rb", "require 'clearance/testing'"
|
148
172
|
end
|
@@ -153,5 +177,9 @@ module Suspenders
|
|
153
177
|
end
|
154
178
|
|
155
179
|
end
|
180
|
+
|
181
|
+
def add_clearance_gem
|
182
|
+
insert_into_file("Gemfile", "\ngem 'clearance'", :after => /gem 'jquery-rails'/)
|
183
|
+
end
|
156
184
|
end
|
157
185
|
end
|
@@ -10,6 +10,12 @@ module Suspenders
|
|
10
10
|
class_option :skip_test_unit, :type => :boolean, :aliases => "-T", :default => true,
|
11
11
|
:desc => "Skip Test::Unit files"
|
12
12
|
|
13
|
+
class_option :heroku, :type => :boolean, :aliases => "-H", :default => false,
|
14
|
+
:desc => "Create staging and production heroku apps"
|
15
|
+
|
16
|
+
class_option :clearance, :type => :boolean, :aliases => "-C", :default => true,
|
17
|
+
:desc => "Add the clearance Rails authentication library"
|
18
|
+
|
13
19
|
def finish_template
|
14
20
|
invoke :suspenders_customization
|
15
21
|
super
|
@@ -17,7 +23,8 @@ module Suspenders
|
|
17
23
|
|
18
24
|
def suspenders_customization
|
19
25
|
invoke :remove_files_we_dont_need
|
20
|
-
invoke :
|
26
|
+
invoke :setup_development_environment
|
27
|
+
invoke :setup_staging_environment
|
21
28
|
invoke :create_suspenders_views
|
22
29
|
invoke :create_common_javascripts
|
23
30
|
invoke :add_jquery_ui
|
@@ -25,11 +32,11 @@ module Suspenders
|
|
25
32
|
invoke :customize_gemfile
|
26
33
|
invoke :configure_app
|
27
34
|
invoke :setup_stylesheets
|
28
|
-
invoke :setup_gitignore
|
29
35
|
invoke :copy_miscellaneous_files
|
30
36
|
invoke :setup_root_route
|
31
37
|
invoke :set_active_record_whitelist_attributes
|
32
|
-
invoke :
|
38
|
+
invoke :setup_git
|
39
|
+
invoke :create_heroku_apps
|
33
40
|
invoke :outro
|
34
41
|
end
|
35
42
|
|
@@ -38,9 +45,14 @@ module Suspenders
|
|
38
45
|
build(:remove_public_images_rails)
|
39
46
|
end
|
40
47
|
|
41
|
-
def
|
48
|
+
def setup_development_environment
|
49
|
+
say "Setting up the development environment"
|
50
|
+
build(:raise_delivery_errors)
|
51
|
+
end
|
52
|
+
|
53
|
+
def setup_staging_environment
|
42
54
|
say "Setting up the staging environment"
|
43
|
-
build(:
|
55
|
+
build(:setup_staging_environment)
|
44
56
|
end
|
45
57
|
|
46
58
|
def create_suspenders_views
|
@@ -71,6 +83,10 @@ module Suspenders
|
|
71
83
|
|
72
84
|
def customize_gemfile
|
73
85
|
build(:include_custom_gems)
|
86
|
+
if options[:clearance]
|
87
|
+
build(:add_clearance_gem)
|
88
|
+
end
|
89
|
+
bundle_command('install')
|
74
90
|
end
|
75
91
|
|
76
92
|
def configure_app
|
@@ -79,10 +95,20 @@ module Suspenders
|
|
79
95
|
build(:configure_action_mailer)
|
80
96
|
build(:generate_rspec)
|
81
97
|
build(:generate_cucumber)
|
82
|
-
build(:generate_clearance)
|
83
98
|
build(:install_factory_girl_steps)
|
84
|
-
build(:
|
99
|
+
build(:add_email_validator)
|
85
100
|
build(:setup_default_rake_task)
|
101
|
+
build(:setup_clearance)
|
102
|
+
end
|
103
|
+
|
104
|
+
def setup_clearance
|
105
|
+
if options[:clearance]
|
106
|
+
build(:generate_clearance)
|
107
|
+
build(:include_clearance_matchers)
|
108
|
+
if using_active_record?
|
109
|
+
build(:set_attr_accessibles_on_user)
|
110
|
+
end
|
111
|
+
end
|
86
112
|
end
|
87
113
|
|
88
114
|
def setup_stylesheets
|
@@ -90,11 +116,27 @@ module Suspenders
|
|
90
116
|
build(:setup_stylesheets)
|
91
117
|
end
|
92
118
|
|
119
|
+
def setup_git
|
120
|
+
say "Initializing git and initial commit"
|
121
|
+
invoke :setup_gitignore
|
122
|
+
invoke :init_git
|
123
|
+
end
|
124
|
+
|
125
|
+
def create_heroku_apps
|
126
|
+
if options['heroku']
|
127
|
+
say "Creating heroku apps"
|
128
|
+
build(:create_heroku_apps)
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
93
132
|
def setup_gitignore
|
94
|
-
say "Ignore the right files"
|
95
133
|
build(:gitignore_files)
|
96
134
|
end
|
97
135
|
|
136
|
+
def init_git
|
137
|
+
build(:init_git)
|
138
|
+
end
|
139
|
+
|
98
140
|
def copy_miscellaneous_files
|
99
141
|
say "Copying miscellaneous support files"
|
100
142
|
build(:copy_miscellaneous_files)
|
@@ -112,19 +154,17 @@ module Suspenders
|
|
112
154
|
end
|
113
155
|
end
|
114
156
|
|
115
|
-
def set_attr_accessibles_on_user
|
116
|
-
if using_active_record?
|
117
|
-
say "Setting up writable attributes on user"
|
118
|
-
build(:set_attr_accessibles_on_user)
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
157
|
def outro
|
123
158
|
say "Congratulations! You just pulled our suspenders."
|
124
159
|
say "Remember to run 'rails generate airbrake' with your API key."
|
125
160
|
end
|
126
161
|
|
162
|
+
def run_bundle
|
163
|
+
# Let's not: We'll bundle manually at the right spot
|
164
|
+
end
|
165
|
+
|
127
166
|
protected
|
167
|
+
|
128
168
|
def get_builder_class
|
129
169
|
Suspenders::AppBuilder
|
130
170
|
end
|
@@ -132,8 +172,5 @@ module Suspenders
|
|
132
172
|
def using_active_record?
|
133
173
|
!options[:skip_active_record]
|
134
174
|
end
|
135
|
-
|
136
175
|
end
|
137
176
|
end
|
138
|
-
|
139
|
-
|
data/suspenders.gemspec
CHANGED
@@ -1,11 +1,14 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
s.rubygems_version = '1.3.5'
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "suspenders/version"
|
5
4
|
|
6
|
-
|
7
|
-
s.
|
8
|
-
s.
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = 'suspenders'
|
7
|
+
s.version = Suspenders::VERSION
|
8
|
+
s.date = Date.today.strftime('%Y-%m-%d')
|
9
|
+
s.authors = ["thoughtbot"]
|
10
|
+
s.email = 'support@thoughtbot.com'
|
11
|
+
s.homepage = 'http://github.com/thoughtbot/suspenders'
|
9
12
|
|
10
13
|
s.summary = "Generate a Rails app using thoughtbot's best practices."
|
11
14
|
s.description = <<-HERE
|
@@ -14,51 +17,19 @@ thoughtbot to get a jump start on a working app. Use Suspenders if you're in a
|
|
14
17
|
rush to build something amazing; don't use it if you like missing deadlines.
|
15
18
|
HERE
|
16
19
|
|
17
|
-
s.
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
s.executables
|
22
|
-
s.
|
20
|
+
s.files = `git ls-files`.split("\n").
|
21
|
+
reject { |file| file =~ /^\./ }.
|
22
|
+
reject { |file| file =~ /^(rdoc|pkg)/ }
|
23
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
24
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
25
|
+
s.require_paths = ["lib"]
|
23
26
|
|
24
27
|
s.rdoc_options = ["--charset=UTF-8"]
|
25
28
|
s.extra_rdoc_files = %w[README.md LICENSE]
|
26
29
|
|
27
30
|
s.add_dependency('rails', '3.1.1')
|
28
31
|
s.add_dependency('bundler', '>= 1.0.7')
|
32
|
+
|
29
33
|
s.add_development_dependency('cucumber', '~> 1.1.0')
|
30
34
|
s.add_development_dependency('aruba', '~> 0.4.6')
|
31
|
-
|
32
|
-
# = MANIFEST =
|
33
|
-
s.files = %w[
|
34
|
-
CONTRIBUTING.md
|
35
|
-
Gemfile
|
36
|
-
Gemfile.lock
|
37
|
-
LICENSE
|
38
|
-
README.md
|
39
|
-
Rakefile
|
40
|
-
bin/suspenders
|
41
|
-
features/rake_clean.feature
|
42
|
-
features/step_definitions/shell.rb
|
43
|
-
lib/suspenders/actions.rb
|
44
|
-
lib/suspenders/app_builder.rb
|
45
|
-
lib/suspenders/generators/app_generator.rb
|
46
|
-
suspenders.gemspec
|
47
|
-
templates/Gemfile_additions
|
48
|
-
templates/Procfile
|
49
|
-
templates/README_FOR_SUSPENDERS
|
50
|
-
templates/_flashes.html.erb
|
51
|
-
templates/_javascript.html.erb
|
52
|
-
templates/errors.rb
|
53
|
-
templates/factory_girl_steps.rb
|
54
|
-
templates/import_scss_styles
|
55
|
-
templates/javascripts/prefilled_input.js
|
56
|
-
templates/postgresql_database.yml.erb
|
57
|
-
templates/suspenders_gitignore
|
58
|
-
templates/suspenders_layout.html.erb.erb
|
59
|
-
templates/time_formats.rb
|
60
|
-
]
|
61
|
-
# = MANIFEST =
|
62
|
-
|
63
|
-
s.test_files = s.files.select {|path| path =~ /^features/ }
|
64
35
|
end
|
data/templates/Gemfile_additions
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: suspenders
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
12
|
+
date: 2011-11-23 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &70184024161620 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - =
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 3.1.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70184024161620
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bundler
|
27
|
-
requirement: &
|
27
|
+
requirement: &70184024160860 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.0.7
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70184024160860
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: cucumber
|
38
|
-
requirement: &
|
38
|
+
requirement: &70184024153740 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 1.1.0
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70184024153740
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: aruba
|
49
|
-
requirement: &
|
49
|
+
requirement: &70184024152920 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: 0.4.6
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70184024152920
|
58
58
|
description: ! 'Suspenders is a base Rails project that you can upgrade. It is used
|
59
59
|
by
|
60
60
|
|
@@ -78,17 +78,26 @@ files:
|
|
78
78
|
- README.md
|
79
79
|
- Rakefile
|
80
80
|
- bin/suspenders
|
81
|
+
- features/creating_a_heroku_app.feature
|
81
82
|
- features/rake_clean.feature
|
82
|
-
- features/
|
83
|
+
- features/skipping_clearance.feature
|
84
|
+
- features/step_definitions/gem_steps.rb
|
85
|
+
- features/step_definitions/heroku_steps.rb
|
86
|
+
- features/step_definitions/shell_steps.rb
|
87
|
+
- features/support/bin/heroku
|
88
|
+
- features/support/env.rb
|
89
|
+
- features/support/fake_heroku.rb
|
83
90
|
- lib/suspenders/actions.rb
|
84
91
|
- lib/suspenders/app_builder.rb
|
85
92
|
- lib/suspenders/generators/app_generator.rb
|
93
|
+
- lib/suspenders/version.rb
|
86
94
|
- suspenders.gemspec
|
87
95
|
- templates/Gemfile_additions
|
88
96
|
- templates/Procfile
|
89
97
|
- templates/README_FOR_SUSPENDERS
|
90
98
|
- templates/_flashes.html.erb
|
91
99
|
- templates/_javascript.html.erb
|
100
|
+
- templates/email_validator.rb
|
92
101
|
- templates/errors.rb
|
93
102
|
- templates/factory_girl_steps.rb
|
94
103
|
- templates/import_scss_styles
|
@@ -110,18 +119,31 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
110
119
|
- - ! '>='
|
111
120
|
- !ruby/object:Gem::Version
|
112
121
|
version: '0'
|
122
|
+
segments:
|
123
|
+
- 0
|
124
|
+
hash: 804092796871748007
|
113
125
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
126
|
none: false
|
115
127
|
requirements:
|
116
128
|
- - ! '>='
|
117
129
|
- !ruby/object:Gem::Version
|
118
130
|
version: '0'
|
131
|
+
segments:
|
132
|
+
- 0
|
133
|
+
hash: 804092796871748007
|
119
134
|
requirements: []
|
120
135
|
rubyforge_project:
|
121
136
|
rubygems_version: 1.8.6
|
122
137
|
signing_key:
|
123
|
-
specification_version:
|
138
|
+
specification_version: 3
|
124
139
|
summary: Generate a Rails app using thoughtbot's best practices.
|
125
140
|
test_files:
|
141
|
+
- features/creating_a_heroku_app.feature
|
126
142
|
- features/rake_clean.feature
|
127
|
-
- features/
|
143
|
+
- features/skipping_clearance.feature
|
144
|
+
- features/step_definitions/gem_steps.rb
|
145
|
+
- features/step_definitions/heroku_steps.rb
|
146
|
+
- features/step_definitions/shell_steps.rb
|
147
|
+
- features/support/bin/heroku
|
148
|
+
- features/support/env.rb
|
149
|
+
- features/support/fake_heroku.rb
|