slining 1.0.0

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.
Files changed (66) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +4 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +11 -0
  5. data/CONTRIBUTING.md +48 -0
  6. data/Gemfile +3 -0
  7. data/Gemfile.lock +120 -0
  8. data/LICENSE +40 -0
  9. data/NEWS.md +2 -0
  10. data/README.md +207 -0
  11. data/Rakefile +8 -0
  12. data/bin/rake +16 -0
  13. data/bin/rspec +16 -0
  14. data/bin/setup +13 -0
  15. data/bin/slining +18 -0
  16. data/lib/slining.rb +4 -0
  17. data/lib/slining/actions.rb +33 -0
  18. data/lib/slining/app_builder.rb +499 -0
  19. data/lib/slining/generators/app_generator.rb +238 -0
  20. data/lib/slining/version.rb +5 -0
  21. data/slining.gemspec +34 -0
  22. data/spec/fakes/bin/heroku +5 -0
  23. data/spec/fakes/bin/hub +5 -0
  24. data/spec/features/github_spec.rb +15 -0
  25. data/spec/features/heroku_spec.rb +46 -0
  26. data/spec/features/new_project_spec.rb +135 -0
  27. data/spec/spec_helper.rb +20 -0
  28. data/spec/support/fake_github.rb +21 -0
  29. data/spec/support/fake_heroku.rb +43 -0
  30. data/spec/support/slining.rb +49 -0
  31. data/templates/Gemfile.erb +58 -0
  32. data/templates/Procfile +2 -0
  33. data/templates/README.md.erb +32 -0
  34. data/templates/_analytics.html.erb +7 -0
  35. data/templates/_flashes.html.erb +7 -0
  36. data/templates/_javascript.html.erb +12 -0
  37. data/templates/action_mailer.rb +5 -0
  38. data/templates/application.scss +8 -0
  39. data/templates/bin_deploy +12 -0
  40. data/templates/bin_setup.erb +36 -0
  41. data/templates/browserslist +4 -0
  42. data/templates/bundler_audit.rake +12 -0
  43. data/templates/config_i18n_tasks.yml +13 -0
  44. data/templates/config_locales_en.yml.erb +19 -0
  45. data/templates/database_cleaner_rspec.rb +21 -0
  46. data/templates/development_seeds.rb +12 -0
  47. data/templates/disable_xml_params.rb +3 -0
  48. data/templates/errors.rb +34 -0
  49. data/templates/factory_girl_rspec.rb +3 -0
  50. data/templates/flashes_helper.rb +5 -0
  51. data/templates/hound.yml +17 -0
  52. data/templates/i18n.rb +3 -0
  53. data/templates/json_encoding.rb +1 -0
  54. data/templates/newrelic.yml.erb +34 -0
  55. data/templates/postgresql_database.yml.erb +12 -0
  56. data/templates/rails_helper.rb +23 -0
  57. data/templates/sample.env +6 -0
  58. data/templates/secrets.yml +14 -0
  59. data/templates/slining_gitignore +14 -0
  60. data/templates/slining_layout.html.erb.erb +21 -0
  61. data/templates/smtp.rb +9 -0
  62. data/templates/spec_helper.rb +22 -0
  63. data/templates/staging.rb +5 -0
  64. data/templates/travis.yml.erb +21 -0
  65. data/templates/unicorn.rb +30 -0
  66. metadata +156 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 217c08be278859c2df49a4077a985e90ea4d1554
4
+ data.tar.gz: 762eb626da4cc5f1b0efeb1d6556961ae80c439f
5
+ SHA512:
6
+ metadata.gz: 68fac886a0434ce7879b24c1ac28283a6ceccfc134bca0a9d3e59ebef9f6554b00da7a1de63dc4cc5ba2ede404c797da0337781dfac9d8ebf9c05544fff16f68
7
+ data.tar.gz: 8b03d7f54e2851733839363a5a447ad2bd26944b9f941e3121ae1131254c1e340647aec82485745fbf5b6eeb86898984520badaa978c9d3f4f3ef9246d2e9686
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ *.swp
3
+ /.bundle
4
+ /tmp
@@ -0,0 +1 @@
1
+ 2.2.2
@@ -0,0 +1,11 @@
1
+ language: ruby
2
+ rvm: 2.2.2
3
+ cache: bundler
4
+ sudo: false
5
+ before_install:
6
+ - "echo '--colour' > ~/.rspec"
7
+ - git config --global user.name 'Travis CI'
8
+ - git config --global user.email 'travis-ci@example.com'
9
+ install: bundle install
10
+ notifications:
11
+ email: false
@@ -0,0 +1,48 @@
1
+ # Contributing
2
+
3
+ We love pull requests from everyone. By participating in this project, you agree
4
+ to abide by the thoughtbot [code of conduct].
5
+
6
+ [code of conduct]: https://thoughtbot.com/open-source-code-of-conduct
7
+
8
+ Fork the repo:
9
+
10
+ git clone git@github.com:vaporware/slining.git
11
+
12
+ Set up your machine:
13
+
14
+ ./bin/setup
15
+
16
+ Make sure the tests pass:
17
+
18
+ rake
19
+
20
+ Make your change.
21
+ Write tests.
22
+ Follow our [style guide][style].
23
+ Make the tests pass:
24
+
25
+ [style]: https://github.com/thoughtbot/guides/tree/master/style
26
+
27
+ rake
28
+
29
+ Write a [good commit message][commit].
30
+ Push to your fork.
31
+ [Submit a pull request][pr].
32
+
33
+ [commit]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
34
+ [pr]: https://github.com/vaporware/slining/compare/
35
+
36
+ If [Hound] catches style violations,
37
+ fix them.
38
+
39
+ [hound]: https://houndci.com
40
+
41
+ Wait for us.
42
+ We try to at least comment on pull requests within one business day.
43
+ We may suggest changes.
44
+
45
+ ## Versions
46
+
47
+ To update the Ruby version,
48
+ change `.ruby-version` and `.travis.yml`.
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
@@ -0,0 +1,120 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ slining (1.0.0)
5
+ bundler (~> 1.3)
6
+ rails (= 4.2.1)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ actionmailer (4.2.1)
12
+ actionpack (= 4.2.1)
13
+ actionview (= 4.2.1)
14
+ activejob (= 4.2.1)
15
+ mail (~> 2.5, >= 2.5.4)
16
+ rails-dom-testing (~> 1.0, >= 1.0.5)
17
+ actionpack (4.2.1)
18
+ actionview (= 4.2.1)
19
+ activesupport (= 4.2.1)
20
+ rack (~> 1.6)
21
+ rack-test (~> 0.6.2)
22
+ rails-dom-testing (~> 1.0, >= 1.0.5)
23
+ rails-html-sanitizer (~> 1.0, >= 1.0.1)
24
+ actionview (4.2.1)
25
+ activesupport (= 4.2.1)
26
+ builder (~> 3.1)
27
+ erubis (~> 2.7.0)
28
+ rails-dom-testing (~> 1.0, >= 1.0.5)
29
+ rails-html-sanitizer (~> 1.0, >= 1.0.1)
30
+ activejob (4.2.1)
31
+ activesupport (= 4.2.1)
32
+ globalid (>= 0.3.0)
33
+ activemodel (4.2.1)
34
+ activesupport (= 4.2.1)
35
+ builder (~> 3.1)
36
+ activerecord (4.2.1)
37
+ activemodel (= 4.2.1)
38
+ activesupport (= 4.2.1)
39
+ arel (~> 6.0)
40
+ activesupport (4.2.1)
41
+ i18n (~> 0.7)
42
+ json (~> 1.7, >= 1.7.7)
43
+ minitest (~> 5.1)
44
+ thread_safe (~> 0.3, >= 0.3.4)
45
+ tzinfo (~> 1.1)
46
+ arel (6.0.0)
47
+ builder (3.2.2)
48
+ diff-lcs (1.2.5)
49
+ erubis (2.7.0)
50
+ globalid (0.3.5)
51
+ activesupport (>= 4.1.0)
52
+ i18n (0.7.0)
53
+ json (1.8.3)
54
+ loofah (2.0.2)
55
+ nokogiri (>= 1.5.9)
56
+ mail (2.6.3)
57
+ mime-types (>= 1.16, < 3)
58
+ mime-types (2.6.1)
59
+ mini_portile (0.6.2)
60
+ minitest (5.7.0)
61
+ nokogiri (1.6.6.2)
62
+ mini_portile (~> 0.6.0)
63
+ rack (1.6.2)
64
+ rack-test (0.6.3)
65
+ rack (>= 1.0)
66
+ rails (4.2.1)
67
+ actionmailer (= 4.2.1)
68
+ actionpack (= 4.2.1)
69
+ actionview (= 4.2.1)
70
+ activejob (= 4.2.1)
71
+ activemodel (= 4.2.1)
72
+ activerecord (= 4.2.1)
73
+ activesupport (= 4.2.1)
74
+ bundler (>= 1.3.0, < 2.0)
75
+ railties (= 4.2.1)
76
+ sprockets-rails
77
+ rails-deprecated_sanitizer (1.0.3)
78
+ activesupport (>= 4.2.0.alpha)
79
+ rails-dom-testing (1.0.6)
80
+ activesupport (>= 4.2.0.beta, < 5.0)
81
+ nokogiri (~> 1.6.0)
82
+ rails-deprecated_sanitizer (>= 1.0.1)
83
+ rails-html-sanitizer (1.0.2)
84
+ loofah (~> 2.0)
85
+ railties (4.2.1)
86
+ actionpack (= 4.2.1)
87
+ activesupport (= 4.2.1)
88
+ rake (>= 0.8.7)
89
+ thor (>= 0.18.1, < 2.0)
90
+ rake (10.4.2)
91
+ rspec (3.3.0)
92
+ rspec-core (~> 3.3.0)
93
+ rspec-expectations (~> 3.3.0)
94
+ rspec-mocks (~> 3.3.0)
95
+ rspec-core (3.3.0)
96
+ rspec-support (~> 3.3.0)
97
+ rspec-expectations (3.3.0)
98
+ diff-lcs (>= 1.2.0, < 2.0)
99
+ rspec-support (~> 3.3.0)
100
+ rspec-mocks (3.3.0)
101
+ diff-lcs (>= 1.2.0, < 2.0)
102
+ rspec-support (~> 3.3.0)
103
+ rspec-support (3.3.0)
104
+ sprockets (3.2.0)
105
+ rack (~> 1.0)
106
+ sprockets-rails (2.3.1)
107
+ actionpack (>= 3.0)
108
+ activesupport (>= 3.0)
109
+ sprockets (>= 2.8, < 4.0)
110
+ thor (0.19.1)
111
+ thread_safe (0.3.5)
112
+ tzinfo (1.2.2)
113
+ thread_safe (~> 0.1)
114
+
115
+ PLATFORMS
116
+ ruby
117
+
118
+ DEPENDENCIES
119
+ rspec (~> 3.2)
120
+ slining!
data/LICENSE ADDED
@@ -0,0 +1,40 @@
1
+ ## SLINING LICENSE
2
+
3
+ The MIT License
4
+
5
+ Copyright (c) 2015+ and vaporware, inc.
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ of this software and associated documentation files (the "Software"), to deal
9
+ in the Software without restriction, including without limitation the rights
10
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ copies of the Software, and to permit persons to whom the Software is
12
+ furnished to do so, subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in
15
+ all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
+ THE SOFTWARE.
24
+
25
+
26
+ ## SUSPENDERS LICENSE
27
+
28
+ The MIT License
29
+
30
+ Copyright (c) 2010-2012 Mike Burns and thoughtbot, inc.
31
+
32
+ Permission is hereby granted, free of charge, to any person obtaining a copy
33
+ of this software and associated documentation files (the "Software"), to deal
34
+ in the Software without restriction, including without limitation the rights
35
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
36
+ copies of the Software, and to permit persons to whom the Software is
37
+ furnished to do so, subject to the following conditions:
38
+
39
+ The above copyright notice and this permission notice shall be included in
40
+ all copies or substantial portions of the Software.
data/NEWS.md ADDED
@@ -0,0 +1,2 @@
1
+ 1.0 (June 16, 2015)
2
+ * Forked from thoughtbot/suspenders and released without material changes
@@ -0,0 +1,207 @@
1
+ # Slining [![Build Status](https://secure.travis-ci.org/vaporware/slining.svg?branch=master)](http://travis-ci.org/vaporware/slining)
2
+
3
+ Slining is the Silver Lining to Vaporware's Rails development, i.e. the base Rails application used at
4
+ [vaporware](http://vaporwa.re). It's a forked project from [thoughtbot's suspenders](http://github.com/thoughtbot/suspenders).
5
+
6
+ ## Installation
7
+
8
+ First install the slining gem:
9
+
10
+ gem install slining
11
+
12
+ Then run:
13
+
14
+ slining projectname
15
+
16
+ This will create a Rails app in `projectname` using the latest version of Rails.
17
+
18
+ ## Gemfile
19
+
20
+ To see the latest and greatest gems, look at Slining's
21
+ [Gemfile](templates/Gemfile.erb), which will be appended to the default
22
+ generated projectname/Gemfile.
23
+
24
+ It includes application gems like:
25
+
26
+ * [Airbrake](https://github.com/airbrake/airbrake) for exception notification
27
+ * [Autoprefixer Rails](https://github.com/ai/autoprefixer-rails) for CSS vendor prefixes
28
+ * [Bourbon](https://github.com/thoughtbot/bourbon) for Sass mixins
29
+ * [Bitters](https://github.com/thoughtbot/bitters) for scaffold application styles
30
+ * [Delayed Job](https://github.com/collectiveidea/delayed_job) for background
31
+ processing
32
+ * [Email Validator](https://github.com/balexand/email_validator) for email
33
+ validation
34
+ * [Flutie](https://github.com/thoughtbot/flutie) for `page_title` and `body_class` view
35
+ helpers
36
+ * [High Voltage](https://github.com/thoughtbot/high_voltage) for static pages
37
+ * [jQuery Rails](https://github.com/rails/jquery-rails) for jQuery
38
+ * [Neat](https://github.com/thoughtbot/neat) for semantic grids
39
+ * [New Relic RPM](https://github.com/newrelic/rpm) for monitoring performance
40
+ * [Normalize](https://necolas.github.io/normalize.css/) for resetting browser styles
41
+ * [Postgres](https://github.com/ged/ruby-pg) for access to the Postgres database
42
+ * [Rack Canonical Host](https://github.com/tylerhunt/rack-canonical-host) to
43
+ ensure all requests are served from the same domain
44
+ * [Rack Timeout](https://github.com/kch/rack-timeout) to abort requests that are
45
+ taking too long
46
+ * [Recipient Interceptor](https://github.com/croaky/recipient_interceptor) to
47
+ avoid accidentally sending emails to real people from staging
48
+ * [Refills](https://github.com/thoughtbot/refills) for “copy-paste” components
49
+ and patterns based on Bourbon, Neat and Bitters
50
+ * [Simple Form](https://github.com/plataformatec/simple_form) for form markup
51
+ and style
52
+ * [Title](https://github.com/calebthompson/title) for storing titles in
53
+ translations
54
+ * [Unicorn](https://github.com/defunkt/unicorn) to serve HTTP requests
55
+
56
+ And development gems like:
57
+
58
+ * [Dotenv](https://github.com/bkeepers/dotenv) for loading environment variables
59
+ * [Pry Rails](https://github.com/rweng/pry-rails) for interactively exploring
60
+ objects
61
+ * [ByeBug](https://github.com/deivid-rodriguez/byebug) for interactively
62
+ debugging behavior
63
+ * [Bundler Audit](https://github.com/rubysec/bundler-audit) for scanning the
64
+ Gemfile for insecure dependencies based on published CVEs
65
+ * [Spring](https://github.com/rails/spring) for fast Rails actions via
66
+ pre-loading
67
+ * [Web Console](https://github.com/rails/web-console) for better debugging via
68
+ in-browser IRB consoles.
69
+
70
+ And testing gems like:
71
+
72
+ * [Capybara](https://github.com/jnicklas/capybara) and
73
+ [Capybara Webkit](https://github.com/thoughtbot/capybara-webkit) for
74
+ integration testing
75
+ * [Factory Girl](https://github.com/thoughtbot/factory_girl) for test data
76
+ * [Formulaic](https://github.com/thoughtbot/formulaic) for integration testing
77
+ HTML forms
78
+ * [RSpec](https://github.com/rspec/rspec) for unit testing
79
+ * [RSpec Mocks](https://github.com/rspec/rspec-mocks) for stubbing and spying
80
+ * [Shoulda Matchers](https://github.com/thoughtbot/shoulda-matchers) for common
81
+ RSpec matchers
82
+ * [Timecop](https://github.com/jtrupiano/timecop-console) for testing time
83
+
84
+ ## Other goodies
85
+
86
+ Slining also comes with:
87
+
88
+ * The [`./bin/setup`][setup] convention for new developer setup
89
+ * The `./bin/deploy` convention for deploying to Heroku
90
+ * Rails' flashes set up and in application layout
91
+ * A few nice time formats set up for localization
92
+ * `Rack::Deflater` to [compress responses with Gzip][compress]
93
+ * A [low database connection pool limit][pool]
94
+ * [Safe binstubs][binstub]
95
+ * [t() and l() in specs without prefixing with I18n][i18n]
96
+ * An automatically-created `SECRET_KEY_BASE` environment variable in all
97
+ environments
98
+ * Configuration for [Travis][travis] Continuous Integration (tests)
99
+ * Configuration for [Hound][hound] Continuous Integration (style)
100
+ * The analytics adapter [Segment][segment] (and therefore config for Google
101
+ Analytics, Intercom, Facebook Ads, Twitter Ads, etc.)
102
+
103
+ [setup]: http://robots.thoughtbot.com/bin-setup
104
+ [compress]: http://robots.thoughtbot.com/content-compression-with-rack-deflater/
105
+ [pool]: https://devcenter.heroku.com/articles/concurrency-and-database-connections
106
+ [binstub]: https://github.com/thoughtbot/suspenders/pull/282
107
+ [i18n]: https://github.com/thoughtbot/suspenders/pull/304
108
+ [travis]: http://docs.travis-ci.com/user/travis-pro/
109
+ [hound]: https://houndci.com
110
+ [segment]: https://segment.com
111
+
112
+ ## Heroku
113
+
114
+ You can optionally create Heroku staging and production apps:
115
+
116
+ slining app --heroku true
117
+
118
+ This:
119
+
120
+ * Creates a staging and production Heroku app
121
+ * Sets them as `staging` and `production` Git remotes
122
+ * Configures staging with `RACK_ENV` and `RAILS_ENV` environment variables set
123
+ to `staging`
124
+ * Adds the [Rails Stdout Logging][logging-gem] gem
125
+ to configure the app to log to standard out,
126
+ which is how [Heroku's logging][heroku-logging] works.
127
+
128
+ [logging-gem]: https://github.com/heroku/rails_stdout_logging
129
+ [heroku-logging]: https://devcenter.heroku.com/articles/logging#writing-to-your-log
130
+
131
+ You can optionally specify alternate Heroku flags:
132
+
133
+ slining app \
134
+ --heroku true \
135
+ --heroku-flags "--region eu --addons newrelic,pgbackups,sendgrid,ssl"
136
+
137
+ See all possible Heroku flags:
138
+
139
+ heroku help create
140
+
141
+ ## Git
142
+
143
+ This will initialize a new git repository for your Rails app. You can
144
+ bypass this with the `--skip-git` option:
145
+
146
+ slining app --skip-git true
147
+
148
+ ## GitHub
149
+
150
+ You can optionally create a GitHub repository for the slining Rails app. It
151
+ requires that you have [Hub](https://github.com/github/hub) on your system:
152
+
153
+ curl http://hub.github.com/standalone -sLo ~/bin/hub && chmod +x ~/bin/hub
154
+ slining app --github organization/project
155
+
156
+ This has the same effect as running:
157
+
158
+ hub create organization/project
159
+
160
+ ## Spring
161
+
162
+ Suspenders uses [spring](https://github.com/rails/spring) by default.
163
+ It makes Rails applications load faster, but it might introduce confusing issues
164
+ around stale code not being refreshed.
165
+ If you think your application is running old code, run `spring stop`.
166
+ And if you'd rather not use spring, add `DISABLE_SPRING=1` to your login file.
167
+
168
+ ## Dependencies
169
+
170
+ Slining requires the latest version of Ruby.
171
+
172
+ Some gems included in Slining have native extensions. You should have GCC
173
+ installed on your machine before generating an app with Slining.
174
+
175
+ Use [OS X GCC Installer](https://github.com/kennethreitz/osx-gcc-installer/) for
176
+ Snow Leopard (OS X 10.6).
177
+
178
+ Use [Command Line Tools for XCode](https://developer.apple.com/downloads/index.action)
179
+ for Lion (OS X 10.7) or Mountain Lion (OS X 10.8).
180
+
181
+ We use [Capybara Webkit](https://github.com/thoughtbot/capybara-webkit) for
182
+ full-stack JavaScript integration testing. It requires QT. Instructions for
183
+ installing QT are
184
+ [here](https://github.com/thoughtbot/capybara-webkit/wiki/Installing-Qt-and-compiling-capybara-webkit).
185
+
186
+ PostgreSQL needs to be installed and running for the `db:create` rake task.
187
+
188
+ ## Issues
189
+
190
+ If you have problems, please create a
191
+ [GitHub Issue](https://github.com/thoughtbot/slining/issues).
192
+
193
+ ## Contributing
194
+
195
+ See [CONTRIBUTING.md](CONTRIBUTING.md).
196
+
197
+ Thank you, [contributors]!
198
+
199
+ [contributors]: https://github.com/thoughtbot/slining/graphs/contributors
200
+
201
+ ## License
202
+ Slining is Copyright © 2015+ vaporware.
203
+
204
+ Slining is a forked project from Suspenders. Suspenders is Copyright © 2008-2015 thoughtbot.
205
+ It is free software, and may be redistributed under the terms specified in the [LICENSE] file.
206
+
207
+ [LICENSE]: LICENSE