suspenders 0.3.2 → 0.3.4
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +67 -73
- data/README.md +6 -2
- data/features/creating_a_heroku_app.feature +1 -1
- data/lib/suspenders/app_builder.rb +10 -5
- data/lib/suspenders/generators/app_generator.rb +10 -9
- data/lib/suspenders/version.rb +1 -1
- data/suspenders.gemspec +4 -4
- data/templates/Gemfile_additions +3 -3
- data/templates/HEROKU_README.md +66 -0
- data/templates/Procfile +1 -1
- data/templates/README.md +81 -0
- data/templates/suspenders_layout.html.erb.erb +1 -0
- data/templates/time_formats.rb +1 -1
- metadata +38 -23
- data/templates/README_FOR_SUSPENDERS +0 -70
data/Gemfile.lock
CHANGED
@@ -1,126 +1,120 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
suspenders (0.3.
|
5
|
-
bundler (>= 1.
|
6
|
-
rails (= 3.
|
4
|
+
suspenders (0.3.3)
|
5
|
+
bundler (>= 1.1)
|
6
|
+
rails (= 3.2.3)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: http://rubygems.org/
|
10
10
|
specs:
|
11
|
-
actionmailer (3.
|
12
|
-
actionpack (= 3.
|
13
|
-
mail (~> 2.
|
14
|
-
actionpack (3.
|
15
|
-
activemodel (= 3.
|
16
|
-
activesupport (= 3.
|
11
|
+
actionmailer (3.2.3)
|
12
|
+
actionpack (= 3.2.3)
|
13
|
+
mail (~> 2.4.4)
|
14
|
+
actionpack (3.2.3)
|
15
|
+
activemodel (= 3.2.3)
|
16
|
+
activesupport (= 3.2.3)
|
17
17
|
builder (~> 3.0.0)
|
18
18
|
erubis (~> 2.7.0)
|
19
|
-
|
20
|
-
rack (~> 1.
|
21
|
-
rack-cache (~> 1.
|
22
|
-
rack-mount (~> 0.8.2)
|
19
|
+
journey (~> 1.0.1)
|
20
|
+
rack (~> 1.4.0)
|
21
|
+
rack-cache (~> 1.2)
|
23
22
|
rack-test (~> 0.6.1)
|
24
|
-
sprockets (~> 2.
|
25
|
-
activemodel (3.
|
26
|
-
activesupport (= 3.
|
23
|
+
sprockets (~> 2.1.2)
|
24
|
+
activemodel (3.2.3)
|
25
|
+
activesupport (= 3.2.3)
|
27
26
|
builder (~> 3.0.0)
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
arel (~> 2.2.1)
|
27
|
+
activerecord (3.2.3)
|
28
|
+
activemodel (= 3.2.3)
|
29
|
+
activesupport (= 3.2.3)
|
30
|
+
arel (~> 3.0.2)
|
33
31
|
tzinfo (~> 0.3.29)
|
34
|
-
activeresource (3.
|
35
|
-
activemodel (= 3.
|
36
|
-
activesupport (= 3.
|
37
|
-
activesupport (3.
|
32
|
+
activeresource (3.2.3)
|
33
|
+
activemodel (= 3.2.3)
|
34
|
+
activesupport (= 3.2.3)
|
35
|
+
activesupport (3.2.3)
|
36
|
+
i18n (~> 0.6)
|
38
37
|
multi_json (~> 1.0)
|
39
|
-
arel (
|
40
|
-
aruba (0.4.
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
rspec (>= 2.6.0)
|
46
|
-
bcat (0.6.2)
|
47
|
-
rack (~> 1.0)
|
38
|
+
arel (3.0.2)
|
39
|
+
aruba (0.4.11)
|
40
|
+
childprocess (>= 0.2.3)
|
41
|
+
cucumber (>= 1.1.1)
|
42
|
+
ffi (>= 1.0.11)
|
43
|
+
rspec (>= 2.7.0)
|
48
44
|
builder (3.0.0)
|
49
|
-
childprocess (0.
|
45
|
+
childprocess (0.3.1)
|
50
46
|
ffi (~> 1.0.6)
|
51
|
-
cucumber (1.1.
|
47
|
+
cucumber (1.1.9)
|
52
48
|
builder (>= 2.1.2)
|
53
49
|
diff-lcs (>= 1.1.2)
|
54
|
-
gherkin (~> 2.
|
50
|
+
gherkin (~> 2.9.0)
|
55
51
|
json (>= 1.4.6)
|
56
52
|
term-ansicolor (>= 1.0.6)
|
57
53
|
diff-lcs (1.1.3)
|
58
54
|
erubis (2.7.0)
|
59
|
-
ffi (1.0.
|
60
|
-
gherkin (2.
|
55
|
+
ffi (1.0.11)
|
56
|
+
gherkin (2.9.3)
|
61
57
|
json (>= 1.4.6)
|
62
58
|
hike (1.2.1)
|
63
59
|
i18n (0.6.0)
|
64
|
-
|
65
|
-
|
60
|
+
journey (1.0.3)
|
61
|
+
json (1.6.6)
|
62
|
+
mail (2.4.4)
|
66
63
|
i18n (>= 0.4.0)
|
67
64
|
mime-types (~> 1.16)
|
68
65
|
treetop (~> 1.4.8)
|
69
|
-
mime-types (1.
|
70
|
-
multi_json (1.0
|
71
|
-
polyglot (0.3.
|
72
|
-
rack (1.
|
73
|
-
rack-cache (1.
|
66
|
+
mime-types (1.18)
|
67
|
+
multi_json (1.2.0)
|
68
|
+
polyglot (0.3.3)
|
69
|
+
rack (1.4.1)
|
70
|
+
rack-cache (1.2)
|
74
71
|
rack (>= 0.4)
|
75
|
-
rack-mount (0.8.3)
|
76
|
-
rack (>= 1.0.0)
|
77
72
|
rack-ssl (1.3.2)
|
78
73
|
rack
|
79
74
|
rack-test (0.6.1)
|
80
75
|
rack (>= 1.0)
|
81
|
-
rails (3.
|
82
|
-
actionmailer (= 3.
|
83
|
-
actionpack (= 3.
|
84
|
-
activerecord (= 3.
|
85
|
-
activeresource (= 3.
|
86
|
-
activesupport (= 3.
|
76
|
+
rails (3.2.3)
|
77
|
+
actionmailer (= 3.2.3)
|
78
|
+
actionpack (= 3.2.3)
|
79
|
+
activerecord (= 3.2.3)
|
80
|
+
activeresource (= 3.2.3)
|
81
|
+
activesupport (= 3.2.3)
|
87
82
|
bundler (~> 1.0)
|
88
|
-
railties (= 3.
|
89
|
-
railties (3.
|
90
|
-
actionpack (= 3.
|
91
|
-
activesupport (= 3.
|
83
|
+
railties (= 3.2.3)
|
84
|
+
railties (3.2.3)
|
85
|
+
actionpack (= 3.2.3)
|
86
|
+
activesupport (= 3.2.3)
|
92
87
|
rack-ssl (~> 1.3.2)
|
93
88
|
rake (>= 0.8.7)
|
94
89
|
rdoc (~> 3.4)
|
95
90
|
thor (~> 0.14.6)
|
96
91
|
rake (0.9.2.2)
|
97
|
-
|
98
|
-
rdoc (3.11)
|
92
|
+
rdoc (3.12)
|
99
93
|
json (~> 1.4)
|
100
|
-
rspec (2.
|
101
|
-
rspec-core (~> 2.
|
102
|
-
rspec-expectations (~> 2.
|
103
|
-
rspec-mocks (~> 2.
|
104
|
-
rspec-core (2.
|
105
|
-
rspec-expectations (2.
|
106
|
-
diff-lcs (~> 1.1.
|
107
|
-
rspec-mocks (2.
|
108
|
-
sprockets (2.
|
94
|
+
rspec (2.9.0)
|
95
|
+
rspec-core (~> 2.9.0)
|
96
|
+
rspec-expectations (~> 2.9.0)
|
97
|
+
rspec-mocks (~> 2.9.0)
|
98
|
+
rspec-core (2.9.0)
|
99
|
+
rspec-expectations (2.9.0)
|
100
|
+
diff-lcs (~> 1.1.3)
|
101
|
+
rspec-mocks (2.9.0)
|
102
|
+
sprockets (2.1.2)
|
109
103
|
hike (~> 1.2)
|
110
104
|
rack (~> 1.0)
|
111
|
-
tilt (
|
105
|
+
tilt (~> 1.1, != 1.3.0)
|
112
106
|
term-ansicolor (1.0.7)
|
113
107
|
thor (0.14.6)
|
114
108
|
tilt (1.3.3)
|
115
109
|
treetop (1.4.10)
|
116
110
|
polyglot
|
117
111
|
polyglot (>= 0.3.1)
|
118
|
-
tzinfo (0.3.
|
112
|
+
tzinfo (0.3.32)
|
119
113
|
|
120
114
|
PLATFORMS
|
121
115
|
ruby
|
122
116
|
|
123
117
|
DEPENDENCIES
|
124
|
-
aruba (~> 0.4.
|
125
|
-
cucumber (~> 1.1.
|
118
|
+
aruba (~> 0.4.11)
|
119
|
+
cucumber (~> 1.1.9)
|
126
120
|
suspenders!
|
data/README.md
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# Suspenders [![Build Status](https://secure.travis-ci.org/thoughtbot/suspenders.png?branch=master)](http://travis-ci.org/thoughtbot/suspenders)
|
2
|
+
|
1
3
|
Suspenders is the base Rails application used at [thoughtbot](http://thoughtbot.com/community).
|
2
4
|
|
3
5
|
![Suspenders boy](http://media.tumblr.com/1TEAMALpseh5xzf0Jt6bcwSMo1_400.png)
|
@@ -13,7 +15,7 @@ Then run:
|
|
13
15
|
|
14
16
|
suspenders projectname
|
15
17
|
|
16
|
-
This will create a Rails 3.1 app in `projectname
|
18
|
+
This will create a Rails 3.1 app in `projectname`. This script creates a new
|
17
19
|
new git repository. It is not meant to be used against an existing repo.
|
18
20
|
|
19
21
|
Gemfile
|
@@ -27,7 +29,7 @@ It includes application gems like:
|
|
27
29
|
|
28
30
|
* [Paperclip](https://github.com/thoughtbot/paperclip) for file uploads
|
29
31
|
* [Formtastic](https://github.com/justinfrench/formtastic) for better forms
|
30
|
-
* [
|
32
|
+
* [Airbrake](https://github.com/airbrake/airbrake) for exception notification
|
31
33
|
* [Flutie](https://github.com/thoughtbot/flutie) for default CSS styles
|
32
34
|
* [Bourbon](https://github.com/thoughtbot/bourbon) for classy sass mixins
|
33
35
|
* [Clearance](https://github.com/thoughtbot/clearance) for authentication
|
@@ -83,6 +85,8 @@ It requires you have QT installed on your machine before running Suspenders.
|
|
83
85
|
|
84
86
|
Instructions for installing QT on most systems are [available here](https://github.com/thoughtbot/capybara-webkit/wiki/Installing-QT).
|
85
87
|
|
88
|
+
PostgreSQL needs to be installed and running for the `db:create` rake task.
|
89
|
+
|
86
90
|
Issues
|
87
91
|
------
|
88
92
|
|
@@ -5,5 +5,5 @@ Feature: Creating a Heroku app when suspending a project
|
|
5
5
|
When I suspend a project called "test_project" with:
|
6
6
|
| argument | value |
|
7
7
|
| --heroku | true |
|
8
|
-
Then the "test_project-
|
8
|
+
Then the "test_project-staging" heroku app should exist
|
9
9
|
And the "test_project-production" heroku app should exist
|
@@ -3,7 +3,7 @@ module Suspenders
|
|
3
3
|
include Suspenders::Actions
|
4
4
|
|
5
5
|
def readme
|
6
|
-
copy_file "
|
6
|
+
copy_file "README.md"
|
7
7
|
end
|
8
8
|
|
9
9
|
def remove_public_index
|
@@ -59,7 +59,7 @@ module Suspenders
|
|
59
59
|
def include_custom_gems
|
60
60
|
additions_path = find_in_source_paths 'Gemfile_additions'
|
61
61
|
new_gems = File.open(additions_path).read
|
62
|
-
|
62
|
+
inject_into_file("Gemfile", "\n#{new_gems}", :after => /gem 'jquery-rails'/)
|
63
63
|
end
|
64
64
|
|
65
65
|
def configure_rspec
|
@@ -80,7 +80,7 @@ module Suspenders
|
|
80
80
|
|
81
81
|
def generate_rspec
|
82
82
|
generate "rspec:install"
|
83
|
-
replace_in_file "spec/spec_helper.rb", "mock_with :
|
83
|
+
replace_in_file "spec/spec_helper.rb", "# config.mock_with :mocha", "config.mock_with :mocha"
|
84
84
|
end
|
85
85
|
|
86
86
|
def generate_cucumber
|
@@ -143,6 +143,12 @@ module Suspenders
|
|
143
143
|
run "#{path_addition} heroku create #{app_name}-staging --remote=staging --stack=cedar"
|
144
144
|
end
|
145
145
|
|
146
|
+
def document_heroku
|
147
|
+
heroku_readme_path = find_in_source_paths 'HEROKU_README.md'
|
148
|
+
documentation = File.open(heroku_readme_path).read
|
149
|
+
inject_into_file("README.md", "#{documentation}\n", :before => "Most importantly")
|
150
|
+
end
|
151
|
+
|
146
152
|
def copy_miscellaneous_files
|
147
153
|
copy_file "errors.rb", "config/initializers/errors.rb"
|
148
154
|
copy_file "time_formats.rb", "config/initializers/time_formats.rb"
|
@@ -175,11 +181,10 @@ module Suspenders
|
|
175
181
|
append_file "Rakefile" do
|
176
182
|
"task(:default).clear\ntask :default => [:spec, :cucumber]"
|
177
183
|
end
|
178
|
-
|
179
184
|
end
|
180
185
|
|
181
186
|
def add_clearance_gem
|
182
|
-
|
187
|
+
inject_into_file("Gemfile", "\ngem 'clearance'", :after => /gem 'jquery-rails'/)
|
183
188
|
end
|
184
189
|
end
|
185
190
|
end
|
@@ -28,8 +28,8 @@ module Suspenders
|
|
28
28
|
invoke :create_suspenders_views
|
29
29
|
invoke :create_common_javascripts
|
30
30
|
invoke :add_jquery_ui
|
31
|
-
invoke :setup_database
|
32
31
|
invoke :customize_gemfile
|
32
|
+
invoke :setup_database
|
33
33
|
invoke :configure_app
|
34
34
|
invoke :setup_stylesheets
|
35
35
|
invoke :copy_miscellaneous_files
|
@@ -73,14 +73,6 @@ module Suspenders
|
|
73
73
|
build(:add_jquery_ui)
|
74
74
|
end
|
75
75
|
|
76
|
-
def setup_database
|
77
|
-
say "Setting up database"
|
78
|
-
if 'postgresql' == options[:database]
|
79
|
-
build(:use_postgres_config_template)
|
80
|
-
end
|
81
|
-
build(:create_database)
|
82
|
-
end
|
83
|
-
|
84
76
|
def customize_gemfile
|
85
77
|
build(:include_custom_gems)
|
86
78
|
if options[:clearance]
|
@@ -89,6 +81,14 @@ module Suspenders
|
|
89
81
|
bundle_command('install')
|
90
82
|
end
|
91
83
|
|
84
|
+
def setup_database
|
85
|
+
say "Setting up database"
|
86
|
+
if 'postgresql' == options[:database]
|
87
|
+
build(:use_postgres_config_template)
|
88
|
+
end
|
89
|
+
build(:create_database)
|
90
|
+
end
|
91
|
+
|
92
92
|
def configure_app
|
93
93
|
say "Configuring app"
|
94
94
|
build(:configure_rspec)
|
@@ -126,6 +126,7 @@ module Suspenders
|
|
126
126
|
if options['heroku']
|
127
127
|
say "Creating heroku apps"
|
128
128
|
build(:create_heroku_apps)
|
129
|
+
build(:document_heroku)
|
129
130
|
end
|
130
131
|
end
|
131
132
|
|
data/lib/suspenders/version.rb
CHANGED
data/suspenders.gemspec
CHANGED
@@ -27,9 +27,9 @@ rush to build something amazing; don't use it if you like missing deadlines.
|
|
27
27
|
s.rdoc_options = ["--charset=UTF-8"]
|
28
28
|
s.extra_rdoc_files = %w[README.md LICENSE]
|
29
29
|
|
30
|
-
s.add_dependency('rails', '3.
|
31
|
-
s.add_dependency('bundler', '>= 1.
|
30
|
+
s.add_dependency('rails', '3.2.3')
|
31
|
+
s.add_dependency('bundler', '>= 1.1')
|
32
32
|
|
33
|
-
s.add_development_dependency('cucumber', '~> 1.1.
|
34
|
-
s.add_development_dependency('aruba', '~> 0.4.
|
33
|
+
s.add_development_dependency('cucumber', '~> 1.1.9')
|
34
|
+
s.add_development_dependency('aruba', '~> 0.4.11')
|
35
35
|
end
|
data/templates/Gemfile_additions
CHANGED
@@ -13,14 +13,14 @@ group :development do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
group :development, :test do
|
16
|
-
gem "rspec-rails", "~> 2.
|
16
|
+
gem "rspec-rails", "~> 2.9.0"
|
17
17
|
gem "ruby-debug19"
|
18
18
|
gem "sham_rack"
|
19
19
|
end
|
20
20
|
|
21
21
|
group :test do
|
22
|
-
gem "cucumber-rails", "1.
|
23
|
-
gem "capybara-webkit", "~> 0.
|
22
|
+
gem "cucumber-rails", "1.3.0"
|
23
|
+
gem "capybara-webkit", "~> 0.11.0"
|
24
24
|
gem "factory_girl_rails"
|
25
25
|
gem "bourne"
|
26
26
|
gem "database_cleaner"
|
@@ -0,0 +1,66 @@
|
|
1
|
+
Staging and production environments
|
2
|
+
-----------------------------------
|
3
|
+
|
4
|
+
We're using Heroku as a hosting provider. Deploying to Heroku is done via git. So, set up your git remotes for each environment:
|
5
|
+
|
6
|
+
git remote add staging git@heroku.com:your-app-staging.git
|
7
|
+
git remote add production git@heroku.com:your-app-production.git
|
8
|
+
|
9
|
+
Heroku
|
10
|
+
------
|
11
|
+
|
12
|
+
The following are mostly aliases from the `dotfiles` script.
|
13
|
+
|
14
|
+
To access your code on Heroku:
|
15
|
+
|
16
|
+
staging
|
17
|
+
production
|
18
|
+
|
19
|
+
That will drop you into a Rails console for either environment. You can run ActiveRecord queries from there.
|
20
|
+
|
21
|
+
To dump staging or production data into your development environment:
|
22
|
+
|
23
|
+
db-pull-staging
|
24
|
+
db-pull-production
|
25
|
+
|
26
|
+
You will see progress bars for each db index and table.
|
27
|
+
|
28
|
+
We can create a database backup at any time:
|
29
|
+
|
30
|
+
db-backup-production
|
31
|
+
|
32
|
+
View backups:
|
33
|
+
|
34
|
+
db-backups
|
35
|
+
|
36
|
+
To destroy a backup:
|
37
|
+
|
38
|
+
heroku pgbackups:destroy b003 --remote production
|
39
|
+
|
40
|
+
Transfer production data to staging:
|
41
|
+
|
42
|
+
db-copy-production-to-staging
|
43
|
+
|
44
|
+
More information in the [Dev Center](http://devcenter.heroku.com/articles/pgbackups).
|
45
|
+
|
46
|
+
To check the status of running app servers, background jobs, cron jobs, etc:
|
47
|
+
|
48
|
+
staging-process
|
49
|
+
production-process
|
50
|
+
|
51
|
+
To see the performance of the staging application, see:
|
52
|
+
|
53
|
+
https://heroku.newrelic.com/...
|
54
|
+
|
55
|
+
To see the performance of the production application, see:
|
56
|
+
|
57
|
+
https://heroku.newrelic.com/...
|
58
|
+
|
59
|
+
ENV variables
|
60
|
+
-------------
|
61
|
+
|
62
|
+
ENV variables like AWS keys should not be in the source code. They are configuration and should be stored as ENV variables. On Heroku, they are called "config variables." You can pull config variables using the `heroku-config` plugin that comes with the `laptop` script:
|
63
|
+
|
64
|
+
heroku config:pull --remote staging
|
65
|
+
|
66
|
+
You'll see the Amazon credentials as config vars. You should delete lines that don't apply, like Redis to Go connection strings.
|
data/templates/Procfile
CHANGED
@@ -1 +1 @@
|
|
1
|
-
web: bundle exec thin start -p $PORT
|
1
|
+
web: bundle exec thin start -p $PORT
|
data/templates/README.md
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
Rails app
|
2
|
+
=========
|
3
|
+
|
4
|
+
This is a Rails 3.1 app running on Ruby 1.9.2 and deployed to Heroku's Cedar stack. It has an RSpec and Cucumber test suite which should be run before commiting to the master branch.
|
5
|
+
|
6
|
+
Laptop setup
|
7
|
+
------------
|
8
|
+
|
9
|
+
Use our laptop script to get Homebrew, Postgres, Redis, RVM, Ruby 1.9.2, and Bundler:
|
10
|
+
|
11
|
+
https://github.com/thoughtbot/laptop
|
12
|
+
|
13
|
+
Use our dotfiles to get commands like `git up` and `git down` for a clean git history:
|
14
|
+
|
15
|
+
https://github.com/thoughtbot/dotfiles
|
16
|
+
|
17
|
+
Get the code:
|
18
|
+
|
19
|
+
git clone git@github.com:your-account/your-app.git
|
20
|
+
|
21
|
+
Set up the app:
|
22
|
+
|
23
|
+
cd your-app
|
24
|
+
bundle
|
25
|
+
bake db:create
|
26
|
+
bake db:migrate
|
27
|
+
|
28
|
+
Running tests
|
29
|
+
-------------
|
30
|
+
|
31
|
+
Run the whole test suite with:
|
32
|
+
|
33
|
+
bake
|
34
|
+
|
35
|
+
Run individual specs like:
|
36
|
+
|
37
|
+
s spec/models/user_spec.rb
|
38
|
+
|
39
|
+
Run individual features like:
|
40
|
+
|
41
|
+
cuc features/visitor_signs_in.feature
|
42
|
+
|
43
|
+
Tab complete to make it even faster!
|
44
|
+
|
45
|
+
When a spec or feature file has many specs in them, you sometimes want to run just what you're working on. In that case, specify a line number:
|
46
|
+
|
47
|
+
s spec/models/user_spec.rb:8
|
48
|
+
cuc features/visitor_signs_in.feature:105
|
49
|
+
|
50
|
+
Development process
|
51
|
+
-------------------
|
52
|
+
|
53
|
+
To run the app in development mode, use Foreman, which was installed from the `laptop` script:
|
54
|
+
|
55
|
+
foreman start
|
56
|
+
|
57
|
+
It will pick up on the Procfile and use Thin as the app server instead of Webrick, which will also be used by Heroku's Cedar stack.
|
58
|
+
|
59
|
+
git pull --rebase
|
60
|
+
grb create feature-branch
|
61
|
+
bake
|
62
|
+
|
63
|
+
This creates a new branch for your feature. Name it something relevant. Run the tests to make sure everything's passing. Then, implement the feature.
|
64
|
+
|
65
|
+
bake
|
66
|
+
git add -A
|
67
|
+
git commit -m "my awesome feature"
|
68
|
+
git push origin feature-branch
|
69
|
+
|
70
|
+
Open up the Github repo, change into your feature-branch branch. Press the "Pull request" button. It should automatically choose the commits that are different between master and your feature-branch. Create a pull request and share the link in Campfire with the team. When someone else gives you the thumbs-up, you can merge into master:
|
71
|
+
|
72
|
+
git up
|
73
|
+
git down
|
74
|
+
git push origin master
|
75
|
+
|
76
|
+
For more details and screenshots of the feature branch code review process, read [this blog post](http://robots.thoughtbot.com/post/2831837714/feature-branch-code-reviews).
|
77
|
+
|
78
|
+
Most importantly
|
79
|
+
----------------
|
80
|
+
|
81
|
+
Have fun!
|
data/templates/time_formats.rb
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.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,52 +9,72 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-04-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- - =
|
19
|
+
- - '='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 3.
|
21
|
+
version: 3.2.3
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - '='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 3.2.3
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: bundler
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
31
36
|
- !ruby/object:Gem::Version
|
32
|
-
version: 1.
|
37
|
+
version: '1.1'
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '1.1'
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: cucumber
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ~>
|
42
52
|
- !ruby/object:Gem::Version
|
43
|
-
version: 1.1.
|
53
|
+
version: 1.1.9
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.1.9
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: aruba
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ~>
|
53
68
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.4.
|
69
|
+
version: 0.4.11
|
55
70
|
type: :development
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 0.4.11
|
58
78
|
description: ! 'Suspenders is a base Rails project that you can upgrade. It is used
|
59
79
|
by
|
60
80
|
|
@@ -93,8 +113,9 @@ files:
|
|
93
113
|
- lib/suspenders/version.rb
|
94
114
|
- suspenders.gemspec
|
95
115
|
- templates/Gemfile_additions
|
116
|
+
- templates/HEROKU_README.md
|
96
117
|
- templates/Procfile
|
97
|
-
- templates/
|
118
|
+
- templates/README.md
|
98
119
|
- templates/_flashes.html.erb
|
99
120
|
- templates/_javascript.html.erb
|
100
121
|
- templates/email_validator.rb
|
@@ -119,21 +140,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
119
140
|
- - ! '>='
|
120
141
|
- !ruby/object:Gem::Version
|
121
142
|
version: '0'
|
122
|
-
segments:
|
123
|
-
- 0
|
124
|
-
hash: 804092796871748007
|
125
143
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
144
|
none: false
|
127
145
|
requirements:
|
128
146
|
- - ! '>='
|
129
147
|
- !ruby/object:Gem::Version
|
130
148
|
version: '0'
|
131
|
-
segments:
|
132
|
-
- 0
|
133
|
-
hash: 804092796871748007
|
134
149
|
requirements: []
|
135
150
|
rubyforge_project:
|
136
|
-
rubygems_version: 1.8.
|
151
|
+
rubygems_version: 1.8.21
|
137
152
|
signing_key:
|
138
153
|
specification_version: 3
|
139
154
|
summary: Generate a Rails app using thoughtbot's best practices.
|
@@ -1,70 +0,0 @@
|
|
1
|
-
Suspenders is a base Rails application that you can upgrade.
|
2
|
-
|
3
|
-
![Suspenders boy](http://media.tumblr.com/1TEAMALpseh5xzf0Jt6bcwSMo1_400.png)
|
4
|
-
|
5
|
-
Installation
|
6
|
-
------------
|
7
|
-
|
8
|
-
First install the suspenders gem:
|
9
|
-
|
10
|
-
gem install suspenders
|
11
|
-
|
12
|
-
Then run:
|
13
|
-
|
14
|
-
suspenders create projectname
|
15
|
-
|
16
|
-
This will create a Rails 3 app in `projectname'. This script creates a new
|
17
|
-
new git repository. It is not meant to be used against an existing repo.
|
18
|
-
|
19
|
-
Gemfile
|
20
|
-
-------
|
21
|
-
|
22
|
-
To see the latest and greatest gems, look at Suspenders'
|
23
|
-
[template/trout/Gemfile](https://github.com/thoughtbot/suspenders/blob/master/template/trout/Gemfile),
|
24
|
-
which will be copied into your projectname/Gemfile.
|
25
|
-
|
26
|
-
It includes application gems like:
|
27
|
-
|
28
|
-
* [Paperclip](https://github.com/thoughtbot/paperclip) for file uploads
|
29
|
-
* [Formtastic](https://github.com/justinfrench/formtastic) for better forms
|
30
|
-
* [Hoptoad Notifier](https://github.com/thoughtbot/hoptoad_notifier) for exception notification
|
31
|
-
* [Flutie](https://github.com/thoughtbot/flutie) for default CSS styles
|
32
|
-
* [Clearance](https://github.com/thoughtbot/clearance) for authentication
|
33
|
-
|
34
|
-
And testing gems like:
|
35
|
-
|
36
|
-
* [Cucumber, Capybara, and Akephalos](http://robots.thoughtbot.com/post/1658763359/thoughtbot-and-the-holy-grail) for integration testing, including Javascript behavior
|
37
|
-
* [RSpec](https://github.com/rspec/rspec) for awesome, readable isolation testing
|
38
|
-
* [Factory Girl](https://github.com/thoughtbot/factory_girl) for easier creation of test data
|
39
|
-
* [Shoulda](http://github.com/thoughtbot/shoulda) for frequently needed Rails and RSpec matchers
|
40
|
-
* [Timecop](https://github.com/jtrupiano/timecop) for dealing with time
|
41
|
-
* [Bourne](https://github.com/thoughtbot/bourne) and Mocha for stubbing and spying
|
42
|
-
|
43
|
-
Other goodies
|
44
|
-
-------------
|
45
|
-
|
46
|
-
Suspenders also comes with:
|
47
|
-
|
48
|
-
* [jQuery](https://github.com/jquery/jquery) for Javascript pleasantry
|
49
|
-
* Rails' flashes set up and in application layout.
|
50
|
-
* A few nice time formats.
|
51
|
-
|
52
|
-
See [template/files](https://github.com/thoughtbot/suspenders/blob/master/template/files) to
|
53
|
-
see what is generated one-time.
|
54
|
-
|
55
|
-
Dependencies
|
56
|
-
------------
|
57
|
-
|
58
|
-
Some gems included in Suspenders have native extensions. You should have GCC installed on your
|
59
|
-
machine before running Suspenders.
|
60
|
-
If you're running OS X, we recommend the [GCC OSX installer](https://github.com/kennethreitz/osx-gcc-installer).
|
61
|
-
We use [Capybara Webkit](https://github.com/thoughtbot/capybara-webkit) for full-stack Javascript integration testing.
|
62
|
-
It requires you have QT installed on your machine before running Suspenders.
|
63
|
-
Instructions for installing QT on most systems are [available here](https://github.com/thoughtbot/capybara-webkit/wiki/Installing-QT).
|
64
|
-
|
65
|
-
|
66
|
-
Issues
|
67
|
-
------
|
68
|
-
|
69
|
-
If you have problems, please create a [Github issue](https://github.com/thoughtbot/suspenders/issues).
|
70
|
-
|