roboparts 0.0.1 → 0.5.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.
- checksums.yaml +4 -4
- data/.DS_Store +0 -0
- data/.ruby-version +1 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +108 -0
- data/LICENSE.md +21 -0
- data/README.md +74 -0
- data/bin/rake +16 -0
- data/bin/roboparts +13 -0
- data/bin/rspec +16 -0
- data/bin/setup +13 -0
- data/lib/roboparts.rb +4 -0
- data/lib/roboparts/actions.rb +25 -0
- data/lib/roboparts/app_builder.rb +352 -0
- data/lib/roboparts/generators/app_generator.rb +179 -0
- data/lib/roboparts/version.rb +5 -0
- data/roboparts.gemspec +29 -0
- data/templates/Gemfile.erb +38 -0
- data/templates/_analytics.html.erb +12 -0
- data/templates/_flashes.html.erb +7 -0
- data/templates/_javascript.html.erb +12 -0
- data/templates/action_mailer.rb +5 -0
- data/templates/application.css.scss +7 -0
- data/templates/background_jobs_rspec.rb +19 -0
- data/templates/bin_setup.erb +31 -0
- data/templates/bundler_audit.rake +12 -0
- data/templates/config_i18n_tasks.yml +13 -0
- data/templates/config_locales_en.yml.erb +17 -0
- data/templates/database_cleaner_rspec.rb +21 -0
- data/templates/development_seeds.rb +12 -0
- data/templates/disable_xml_params.rb +3 -0
- data/templates/errors.rb +34 -0
- data/templates/factory_girl_rspec.rb +3 -0
- data/templates/i18n.rb +3 -0
- data/templates/json_encoding.rb +1 -0
- data/templates/postgresql_database.yml.erb +12 -0
- data/templates/rack_timeout.rb +1 -0
- data/templates/rails_helper.rb +23 -0
- data/templates/roboparts_gitignore +13 -0
- data/templates/roboparts_layout.html.erb.erb +16 -0
- data/templates/secrets.yml +14 -0
- data/templates/smtp.rb +9 -0
- data/templates/spec_helper.rb +15 -0
- data/templates/staging.rb +5 -0
- data/templates/unicorn.rb +28 -0
- metadata +49 -4
@@ -0,0 +1,179 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'rails/generators/rails/app/app_generator'
|
3
|
+
|
4
|
+
module Roboparts
|
5
|
+
class AppGenerator < Rails::Generators::AppGenerator
|
6
|
+
class_option :database, :type => :string, :aliases => '-d', :default => 'postgresql', :desc => "Preconfigure for selected database (options: #{DATABASES.join('/')})"
|
7
|
+
|
8
|
+
class_option :github, :type => :string, :aliases => '-G', :default => nil, :desc => 'Create Github repository and add remote origin pointed to repo'
|
9
|
+
|
10
|
+
class_option :skip_test_unit, :type => :boolean, :aliases => '-T', :default => true, :desc => 'Skip Test::Unit files'
|
11
|
+
|
12
|
+
def finish_template
|
13
|
+
invoke :roboparts_customization
|
14
|
+
super
|
15
|
+
end
|
16
|
+
|
17
|
+
def roboparts_customization
|
18
|
+
invoke :customize_gemfile
|
19
|
+
invoke :setup_development_environment
|
20
|
+
end
|
21
|
+
|
22
|
+
def customize_gemfile
|
23
|
+
build :replace_gemfile
|
24
|
+
build :set_ruby_to_version_being_used
|
25
|
+
|
26
|
+
bundle_command 'install'
|
27
|
+
end
|
28
|
+
|
29
|
+
def setup_development_environment
|
30
|
+
say 'Setting up development environment'
|
31
|
+
build :raise_on_delivery_errors
|
32
|
+
build :raise_on_unpermitted_parameters
|
33
|
+
build :provide_setup_script
|
34
|
+
build :provide_dev_prime_task
|
35
|
+
build :configure_generators
|
36
|
+
end
|
37
|
+
|
38
|
+
def setup_database
|
39
|
+
say 'Setting up database'
|
40
|
+
|
41
|
+
if 'postgresql' == options[:database]
|
42
|
+
build :use_postgres_config_template
|
43
|
+
end
|
44
|
+
|
45
|
+
build :create_database
|
46
|
+
end
|
47
|
+
|
48
|
+
def setup_development_environment
|
49
|
+
say 'Setting up the development environment'
|
50
|
+
build :raise_on_delivery_errors
|
51
|
+
build :raise_on_unpermitted_parameters
|
52
|
+
build :provide_setup_script
|
53
|
+
build :provide_dev_prime_task
|
54
|
+
build :configure_generators
|
55
|
+
build :configure_i18n_for_missing_translations
|
56
|
+
end
|
57
|
+
|
58
|
+
def setup_test_environment
|
59
|
+
say 'Setting up test environment'
|
60
|
+
build :setup_factory_girl_for_rspec
|
61
|
+
build :generate_rspec
|
62
|
+
build :configure_rspec
|
63
|
+
build :configure_background_jobs_for_rspec
|
64
|
+
build :enable_database_cleaner
|
65
|
+
build :configure_spec_support_features
|
66
|
+
build :configure_i18n_for_test_environment
|
67
|
+
build :configure_i18n_tasks
|
68
|
+
build :configure_action_mailer_in_specs
|
69
|
+
end
|
70
|
+
|
71
|
+
def setup_production_environment
|
72
|
+
say 'Setting up the production environment'
|
73
|
+
build :configure_smtp
|
74
|
+
build :enable_rack_deflater
|
75
|
+
build :setup_asset_host
|
76
|
+
end
|
77
|
+
|
78
|
+
def setup_staging_environment
|
79
|
+
say 'Setting up the staging environment'
|
80
|
+
build :setup_staging_environment
|
81
|
+
end
|
82
|
+
|
83
|
+
def setup_secret_token
|
84
|
+
say 'Moving secret token out of version control'
|
85
|
+
build :setup_secret_token
|
86
|
+
end
|
87
|
+
|
88
|
+
def create_roboparts_views
|
89
|
+
say 'Creating roboparts views'
|
90
|
+
build :create_partials_directory
|
91
|
+
build :create_shared_flashes
|
92
|
+
build :create_shared_javascripts
|
93
|
+
build :create_application_layout
|
94
|
+
end
|
95
|
+
|
96
|
+
def setup_coffeescript
|
97
|
+
say 'Setting up CoffeeScript defaults'
|
98
|
+
build :remove_turbolinks
|
99
|
+
end
|
100
|
+
|
101
|
+
def configure_app
|
102
|
+
say 'Configuring app'
|
103
|
+
build :configure_action_mailer
|
104
|
+
build :configure_time_zone
|
105
|
+
build :configure_time_formats
|
106
|
+
build :configure_rack_timeout
|
107
|
+
build :disable_xml_params
|
108
|
+
build :fix_i18n_deprecation_warning
|
109
|
+
build :setup_default_rake_task
|
110
|
+
build :configure_unicorn
|
111
|
+
end
|
112
|
+
|
113
|
+
def setup_stylesheets
|
114
|
+
say 'Setting up stylesheets'
|
115
|
+
build :setup_stylesheets
|
116
|
+
end
|
117
|
+
|
118
|
+
def setup_git
|
119
|
+
if !options[:skip_git]
|
120
|
+
say 'Initializing git'
|
121
|
+
invoke :setup_gitignore
|
122
|
+
invoke :init_git
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
def setup_gitignore
|
127
|
+
build :gitignore_files
|
128
|
+
end
|
129
|
+
|
130
|
+
def init_git
|
131
|
+
build :init_git
|
132
|
+
end
|
133
|
+
|
134
|
+
def create_github_repo
|
135
|
+
if !options[:skip_git] && options[:github]
|
136
|
+
say 'Creating GitHub repo'
|
137
|
+
build :create_github_repo, options[:github]
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
def setup_google_analytics
|
142
|
+
say 'Setting up Google Analytics'
|
143
|
+
build :setup_google_analytics
|
144
|
+
end
|
145
|
+
|
146
|
+
def setup_bundler_audit
|
147
|
+
say "Setting up bundler-audit"
|
148
|
+
build :setup_bundler_audit
|
149
|
+
end
|
150
|
+
|
151
|
+
def copy_miscellaneous_files
|
152
|
+
say 'Copying miscellaneous support files'
|
153
|
+
build :copy_miscellaneous_files
|
154
|
+
end
|
155
|
+
|
156
|
+
def customize_error_pages
|
157
|
+
say 'Customizing the 500/404/422 pages'
|
158
|
+
build :customize_error_pages
|
159
|
+
end
|
160
|
+
|
161
|
+
def remove_routes_comment_lines
|
162
|
+
build :remove_routes_comment_lines
|
163
|
+
end
|
164
|
+
|
165
|
+
def outro
|
166
|
+
say "Nothing more to do... You're all set up!"
|
167
|
+
end
|
168
|
+
|
169
|
+
protected
|
170
|
+
|
171
|
+
def get_builder_class
|
172
|
+
Roboparts::AppBuilder
|
173
|
+
end
|
174
|
+
|
175
|
+
def using_active_record?
|
176
|
+
!options[:skip_active_record]
|
177
|
+
end
|
178
|
+
end
|
179
|
+
end
|
data/roboparts.gemspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
$:.push File.expand_path('../lib', __FILE__)
|
2
|
+
require 'roboparts/version'
|
3
|
+
require 'date'
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = 'roboparts'
|
7
|
+
s.date = Date.today.strftime('%Y-%m-%d')
|
8
|
+
s.description = <<-RUBY
|
9
|
+
Roboparts is a base Rails project that you can upgrade. It is used by SILENTPOST
|
10
|
+
to get a jump start on a working app using preferred settings. It is heavily inspired
|
11
|
+
by Thoughtbot's Suspenders, but is more tailored to small team development and
|
12
|
+
has different preferences.
|
13
|
+
RUBY
|
14
|
+
s.summary = "A custom Rails project tailored to SILENTPOST's development standards"
|
15
|
+
s.authors = ["Daniel Strunk"]
|
16
|
+
s.email = 'daniel@silentpost.co'
|
17
|
+
s.executables = ['roboparts']
|
18
|
+
s.require_paths = ['lib']
|
19
|
+
s.files = `git ls-files`.split("\n")
|
20
|
+
s.homepage = 'http://silentpost.co/roboparts'
|
21
|
+
s.license = 'MIT'
|
22
|
+
s.version = Roboparts::VERSION
|
23
|
+
|
24
|
+
s.add_dependency 'bundler', '~> 1.3'
|
25
|
+
s.add_dependency 'rails', Roboparts::RAILS_VERSION
|
26
|
+
|
27
|
+
s.add_development_dependency 'rspec', '~> 2.0'
|
28
|
+
s.add_development_dependency 'capybara', '~> 2.2', '>= 2.2.0'
|
29
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
source "https://rubygems.org"
|
2
|
+
|
3
|
+
ruby "<%= Roboparts::RUBY_VERSION %>"
|
4
|
+
|
5
|
+
gem "rails", "<%= Roboparts::RAILS_VERSION %>"
|
6
|
+
gem "sass-rails"
|
7
|
+
gem "coffee-rails"
|
8
|
+
gem "jquery-rails"
|
9
|
+
gem "uglifier"
|
10
|
+
|
11
|
+
gem "pg"
|
12
|
+
|
13
|
+
gem "normalize-rails"
|
14
|
+
gem "bourbon"
|
15
|
+
gem "neat"
|
16
|
+
|
17
|
+
gem "delayed_job_active_record"
|
18
|
+
gem "simple_form"
|
19
|
+
gem "unicorn"
|
20
|
+
|
21
|
+
gem "devise"
|
22
|
+
|
23
|
+
group :development do
|
24
|
+
gem "spring"
|
25
|
+
gem "spring-commands-rspec"
|
26
|
+
end
|
27
|
+
|
28
|
+
group :development, :test do
|
29
|
+
gem "bundler-audit", require: false
|
30
|
+
gem "dotenv-rails"
|
31
|
+
gem "factory_girl_rails"
|
32
|
+
gem "rspec-rails"
|
33
|
+
end
|
34
|
+
|
35
|
+
group :test do
|
36
|
+
gem "shoulda-matchers"
|
37
|
+
gem "timecop"
|
38
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<% if ENV["GOOGLE_ANALYTICS_KEY"] %>
|
2
|
+
<script>
|
3
|
+
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
4
|
+
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
5
|
+
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
6
|
+
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
7
|
+
|
8
|
+
ga('create', '<%= ENV["GOOGLE_ANALYTICS_KEY"] %>', 'auto');
|
9
|
+
ga('send', 'pageview');
|
10
|
+
|
11
|
+
</script>
|
12
|
+
<% end %>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module BackgroundJobs
|
2
|
+
def run_background_jobs_immediately
|
3
|
+
delay_jobs = Delayed::Worker.delay_jobs
|
4
|
+
Delayed::Worker.delay_jobs = false
|
5
|
+
yield
|
6
|
+
ensure
|
7
|
+
Delayed::Worker.delay_jobs = delay_jobs
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
Rspec.configure do |config|
|
12
|
+
config.around(:each, type: :feature) do |example|
|
13
|
+
run_background_jobs_immediately do
|
14
|
+
example.run
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
config.include BackgroundJobs
|
19
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
#!/usr/bin/env sh
|
2
|
+
|
3
|
+
# Set up Rails app. Run this script immediately after cloning the codebase
|
4
|
+
|
5
|
+
# Exit if any subcommand fails
|
6
|
+
set -e
|
7
|
+
|
8
|
+
# Set up Ruby dependencies via Bundler
|
9
|
+
gem list bundler --installed > /dev/null || gem install bundler
|
10
|
+
bundle install
|
11
|
+
|
12
|
+
# Set up configurable environment variables
|
13
|
+
if [ ! -f .env ]; then
|
14
|
+
cp .sample.env .env
|
15
|
+
fi
|
16
|
+
|
17
|
+
# Set up database and add any development seed data
|
18
|
+
bundle exec rake db:setup dev:prime
|
19
|
+
|
20
|
+
# Add binstubs to PATH via export PATH=".git/safe/../../bin:$PATH"
|
21
|
+
mkdir -p .git/safe
|
22
|
+
|
23
|
+
# Pick a port for Foreman
|
24
|
+
if ! grep --quiet --no-messages --fixed-strings 'port' .foreman; then
|
25
|
+
printf 'port: <%= config[:port_number] %>\n' >> .foreman
|
26
|
+
fi
|
27
|
+
|
28
|
+
if ! command -v foreman > /dev/null; then
|
29
|
+
printf 'Foreman is not installed.\n'
|
30
|
+
printf 'See https://github.com/ddollar/foreman for install instructions.\n'
|
31
|
+
fi
|
@@ -0,0 +1,12 @@
|
|
1
|
+
if Rails.env.development? || Rails.env.test?
|
2
|
+
require "bundler/audit/cli"
|
3
|
+
|
4
|
+
namespace :bundler do
|
5
|
+
desc "Updates the ruby-advisory-db and runs audit"
|
6
|
+
task :audit do
|
7
|
+
%w(update check).each do |command|
|
8
|
+
Bundler::Audit::CLI.start [command]
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
Rspec.configure do |config|
|
2
|
+
config.before(:suite) do
|
3
|
+
DatabaseCleaner.clean_with(:deletion)
|
4
|
+
end
|
5
|
+
|
6
|
+
config.before(:each) do
|
7
|
+
DatabaseCleaner.strategy = :transaction
|
8
|
+
end
|
9
|
+
|
10
|
+
config.before(:each, :js => true) do
|
11
|
+
DatabaseCleaner.strategy = :deletion
|
12
|
+
end
|
13
|
+
|
14
|
+
config.before(:each) do
|
15
|
+
DatabaseCleaner.start
|
16
|
+
end
|
17
|
+
|
18
|
+
config.after(:each) do
|
19
|
+
DatabaseCleaner.clean
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
if Rails.env.development?
|
2
|
+
require "factory_girl"
|
3
|
+
|
4
|
+
namespace :dev do
|
5
|
+
desc "Seed data for development environment"
|
6
|
+
task prime: "db:setup" do
|
7
|
+
include FactoryGirl::Syntax::Methods
|
8
|
+
|
9
|
+
# create(:user, email: "user@example.com", password: "hunter12")
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|