gimbal 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/gimbal/app_builder.rb +78 -5
- data/lib/gimbal/generators/app_generator.rb +21 -0
- data/lib/gimbal/version.rb +1 -1
- data/spec/features/new_project_spec.rb +53 -0
- data/templates/Gemfile.erb +5 -5
- data/templates/_flashes.html.erb +7 -0
- data/templates/_javascript.html.erb +12 -0
- data/templates/bundler_audit.rake +12 -0
- data/templates/config_i18n_tasks.yml +13 -0
- data/templates/config_locales_en.yml.erb +19 -0
- data/templates/flashes_helper.rb +5 -0
- data/templates/gimbal_layout.html.erb.erb +21 -0
- data/templates/i18n.rb +3 -0
- data/templates/puma.rb +28 -0
- metadata +10 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9c9bec73840acda47571b6eb7d1391c7d1c9b260
|
4
|
+
data.tar.gz: 8894555a3a221376fe8a9096903470d72ac836aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 995d3ecfa9e1d058d3e42ad793129582c86742ce0dd9b3ea7a94230d70ebcf03aa3ca5f77f706aaf49288843afc47a518a2c189fdc54752a7c6f5e5979d2fbad
|
7
|
+
data.tar.gz: 624476dea16243d2084d0482474f4bfbb84ff1e372d948178240b68cf08be38dcc057e56f6f6b9d7ff08570af9a41acde75bf9ac056b181d7daa282f509c1610
|
data/lib/gimbal/app_builder.rb
CHANGED
@@ -64,6 +64,38 @@ module Gimbal
|
|
64
64
|
inject_into_class "config/application.rb", "Application", config
|
65
65
|
end
|
66
66
|
|
67
|
+
def configure_generators
|
68
|
+
config = <<-RUBY
|
69
|
+
|
70
|
+
config.generators do |generate|
|
71
|
+
generate.helper false
|
72
|
+
generate.javascript_engine false
|
73
|
+
generate.request_specs false
|
74
|
+
generate.routing_specs false
|
75
|
+
generate.stylesheets false
|
76
|
+
generate.test_framework :rspec
|
77
|
+
generate.view_specs false
|
78
|
+
end
|
79
|
+
|
80
|
+
RUBY
|
81
|
+
|
82
|
+
inject_into_class 'config/application.rb', 'Application', config
|
83
|
+
end
|
84
|
+
|
85
|
+
def configure_i18n_for_missing_translations
|
86
|
+
raise_on_missing_translations_in("development")
|
87
|
+
raise_on_missing_translations_in("test")
|
88
|
+
end
|
89
|
+
|
90
|
+
def configure_i18n_for_test_environment
|
91
|
+
copy_file "i18n.rb", "spec/support/i18n.rb"
|
92
|
+
end
|
93
|
+
|
94
|
+
def configure_i18n_tasks
|
95
|
+
run "cp $(i18n-tasks gem-path)/templates/rspec/i18n_spec.rb spec/"
|
96
|
+
copy_file "config_i18n_tasks.yml", "config/i18n-tasks.yml"
|
97
|
+
end
|
98
|
+
|
67
99
|
def use_mysql_config_template
|
68
100
|
template 'mysql_database.yml.erb', 'config/database.yml', force: true
|
69
101
|
end
|
@@ -91,6 +123,10 @@ module Gimbal
|
|
91
123
|
generate 'rspec:install'
|
92
124
|
end
|
93
125
|
|
126
|
+
def configure_puma
|
127
|
+
copy_file "puma.rb", "config/puma.rb"
|
128
|
+
end
|
129
|
+
|
94
130
|
def enable_database_cleaner
|
95
131
|
copy_file 'database_cleaner_rspec.rb', 'spec/support/database_cleaner.rb'
|
96
132
|
end
|
@@ -117,10 +153,34 @@ module Gimbal
|
|
117
153
|
copy_file "spec_helper.rb", "spec/spec_helper.rb"
|
118
154
|
end
|
119
155
|
|
156
|
+
def create_partials_directory
|
157
|
+
empty_directory 'app/views/application'
|
158
|
+
end
|
159
|
+
|
160
|
+
def create_shared_flashes
|
161
|
+
copy_file "_flashes.html.erb", "app/views/application/_flashes.html.erb"
|
162
|
+
copy_file "flashes_helper.rb", "app/helpers/flashes_helper.rb"
|
163
|
+
end
|
164
|
+
|
165
|
+
def create_shared_javascripts
|
166
|
+
copy_file '_javascript.html.erb', 'app/views/application/_javascript.html.erb'
|
167
|
+
end
|
168
|
+
|
169
|
+
def create_application_layout
|
170
|
+
template 'gimbal_layout.html.erb.erb',
|
171
|
+
'app/views/layouts/application.html.erb',
|
172
|
+
force: true
|
173
|
+
end
|
174
|
+
|
120
175
|
def create_database
|
121
176
|
bundle_command 'exec rake db:create db:migrate'
|
122
177
|
end
|
123
178
|
|
179
|
+
def configure_time_formats
|
180
|
+
remove_file "config/locales/en.yml"
|
181
|
+
template "config_locales_en.yml.erb", "config/locales/en.yml"
|
182
|
+
end
|
183
|
+
|
124
184
|
def create_github_repo(repo_name)
|
125
185
|
run "hub create #{repo_name}"
|
126
186
|
end
|
@@ -128,11 +188,10 @@ module Gimbal
|
|
128
188
|
def setup_spring
|
129
189
|
bundle_command "exec spring binstub --all"
|
130
190
|
end
|
131
|
-
end
|
132
191
|
|
133
|
-
|
134
|
-
|
135
|
-
|
192
|
+
def setup_default_rake_task
|
193
|
+
append_file 'Rakefile' do
|
194
|
+
<<-EOS
|
136
195
|
task(:default).clear
|
137
196
|
task default: [:spec]
|
138
197
|
if defined? RSpec
|
@@ -141,7 +200,21 @@ if defined? RSpec
|
|
141
200
|
t.verbose = false
|
142
201
|
end
|
143
202
|
end
|
144
|
-
|
203
|
+
EOS
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
207
|
+
def setup_bundler_audit
|
208
|
+
copy_file "bundler_audit.rake", "lib/tasks/bundler_audit.rake"
|
209
|
+
append_file "Rakefile", %{\ntask default: "bundler:audit"\n}
|
210
|
+
end
|
211
|
+
|
212
|
+
private
|
213
|
+
|
214
|
+
def raise_on_missing_translations_in(environment)
|
215
|
+
config = 'config.action_view.raise_on_missing_translations = true'
|
216
|
+
|
217
|
+
uncomment_lines("config/environments/#{environment}.rb", config)
|
145
218
|
end
|
146
219
|
end
|
147
220
|
end
|
@@ -30,10 +30,12 @@ module Gimbal
|
|
30
30
|
invoke :setup_development_environment
|
31
31
|
invoke :setup_test_environment
|
32
32
|
invoke :setup_production_environment
|
33
|
+
invoke :create_gimbal_views
|
33
34
|
invoke :configure_app
|
34
35
|
invoke :setup_git
|
35
36
|
invoke :setup_database
|
36
37
|
invoke :create_github_repo
|
38
|
+
invoke :setup_bundler_audit
|
37
39
|
invoke :setup_spring
|
38
40
|
end
|
39
41
|
|
@@ -61,6 +63,8 @@ module Gimbal
|
|
61
63
|
build :set_dev_mail_delivery_method
|
62
64
|
build :add_bullet_gem_configuration
|
63
65
|
build :raise_on_unpermitted_parameters
|
66
|
+
build :configure_generators
|
67
|
+
build :configure_i18n_for_missing_translations
|
64
68
|
end
|
65
69
|
|
66
70
|
def setup_test_environment
|
@@ -72,6 +76,8 @@ module Gimbal
|
|
72
76
|
build :enable_database_cleaner
|
73
77
|
build :provide_shoulda_matchers_config
|
74
78
|
build :configure_spec_support_features
|
79
|
+
build :configure_i18n_for_test_environment
|
80
|
+
build :configure_i18n_tasks
|
75
81
|
build :configure_action_mailer_in_specs
|
76
82
|
end
|
77
83
|
|
@@ -80,9 +86,19 @@ module Gimbal
|
|
80
86
|
|
81
87
|
end
|
82
88
|
|
89
|
+
def create_gimbal_views
|
90
|
+
say 'Creating gimbal views'
|
91
|
+
build :create_partials_directory
|
92
|
+
build :create_shared_flashes
|
93
|
+
build :create_shared_javascripts
|
94
|
+
build :create_application_layout
|
95
|
+
end
|
96
|
+
|
83
97
|
def configure_app
|
84
98
|
say 'Configuring app'
|
99
|
+
build :configure_time_formats
|
85
100
|
build :setup_default_rake_task
|
101
|
+
build :configure_puma
|
86
102
|
end
|
87
103
|
|
88
104
|
def setup_git
|
@@ -97,6 +113,11 @@ module Gimbal
|
|
97
113
|
build :gitignore_files
|
98
114
|
end
|
99
115
|
|
116
|
+
def setup_bundler_audit
|
117
|
+
say "Setting up bundler-audit"
|
118
|
+
build :setup_bundler_audit
|
119
|
+
end
|
120
|
+
|
100
121
|
def setup_spring
|
101
122
|
say "Springifying binstubs"
|
102
123
|
build :setup_spring
|
data/lib/gimbal/version.rb
CHANGED
@@ -39,6 +39,22 @@ RSpec.describe "Create a new project with default config" do
|
|
39
39
|
)
|
40
40
|
end
|
41
41
|
|
42
|
+
it "configs development to raise on missing translations" do
|
43
|
+
dev_config = IO.read("#{project_path}/config/environments/development.rb")
|
44
|
+
|
45
|
+
expect(dev_config).to match(
|
46
|
+
/^ +config.action_view.raise_on_missing_translations = true/,
|
47
|
+
)
|
48
|
+
end
|
49
|
+
|
50
|
+
it "configs test to raise on missing translations" do
|
51
|
+
dev_config = IO.read("#{project_path}/config/environments/test.rb")
|
52
|
+
|
53
|
+
expect(dev_config).to match(
|
54
|
+
/^ +config.action_view.raise_on_missing_translations = true/,
|
55
|
+
)
|
56
|
+
end
|
57
|
+
|
42
58
|
it "configs bullet gem in development" do
|
43
59
|
dev_config = IO.read("#{project_path}/config/environments/development.rb")
|
44
60
|
|
@@ -55,6 +71,31 @@ RSpec.describe "Create a new project with default config" do
|
|
55
71
|
)
|
56
72
|
end
|
57
73
|
|
74
|
+
it "configures generators" do
|
75
|
+
result = IO.read("#{project_path}/config/application.rb")
|
76
|
+
|
77
|
+
expect(result).to match(/^ +generate.helper false$/)
|
78
|
+
expect(result).to match(/^ +generate.javascript_engine false$/)
|
79
|
+
expect(result).to match(/^ +generate.request_specs false$/)
|
80
|
+
expect(result).to match(/^ +generate.routing_specs false$/)
|
81
|
+
expect(result).to match(/^ +generate.stylesheets false$/)
|
82
|
+
expect(result).to match(/^ +generate.test_framework :rspec/)
|
83
|
+
expect(result).to match(/^ +generate.view_specs false/)
|
84
|
+
end
|
85
|
+
|
86
|
+
it "configures language in html element" do
|
87
|
+
layout_path = "/app/views/layouts/application.html.erb"
|
88
|
+
layout_file = IO.read("#{project_path}#{layout_path}")
|
89
|
+
expect(layout_file).to match(/<html lang="en">/)
|
90
|
+
end
|
91
|
+
|
92
|
+
it "evaluates en.yml.erb" do
|
93
|
+
locales_en_file = IO.read("#{project_path}/config/locales/en.yml")
|
94
|
+
app_name = GimbalTestHelpers::APP_NAME
|
95
|
+
|
96
|
+
expect(locales_en_file).to match(/application: #{app_name.humanize}/)
|
97
|
+
end
|
98
|
+
|
58
99
|
it "adds support file for action mailer" do
|
59
100
|
expect(File).to exist("#{project_path}/spec/support/action_mailer.rb")
|
60
101
|
end
|
@@ -71,6 +112,18 @@ RSpec.describe "Create a new project with default config" do
|
|
71
112
|
expect(File).to exist("#{project_path}/spec/support/shoulda_matchers.rb")
|
72
113
|
end
|
73
114
|
|
115
|
+
it "adds support file for i18n" do
|
116
|
+
expect(File).to exist("#{project_path}/spec/support/i18n.rb")
|
117
|
+
end
|
118
|
+
|
119
|
+
it "adds specs for missing or unused translations" do
|
120
|
+
expect(File).to exist("#{project_path}/spec/i18n_spec.rb")
|
121
|
+
end
|
122
|
+
|
123
|
+
it "configs i18n-tasks" do
|
124
|
+
expect(File).to exist("#{project_path}/config/i18n-tasks.yml")
|
125
|
+
end
|
126
|
+
|
74
127
|
it "creates .ruby-version from Gimbal .ruby-version" do
|
75
128
|
ruby_version_file = IO.read("#{project_path}/.ruby-version")
|
76
129
|
|
data/templates/Gemfile.erb
CHANGED
@@ -12,7 +12,7 @@ gem "jquery-rails"
|
|
12
12
|
# gem "newrelic_rpm", ">= 3.9.8"
|
13
13
|
gem "normalize-rails", "~> 3.0.0"
|
14
14
|
gem "mysql2"
|
15
|
-
|
15
|
+
gem "puma"
|
16
16
|
# gem "rack-canonical-host"
|
17
17
|
gem "rails", "<%= Gimbal::RAILS_VERSION %>"
|
18
18
|
# gem "recipient_interceptor"
|
@@ -31,19 +31,19 @@ end
|
|
31
31
|
group :development, :test do
|
32
32
|
gem "awesome_print"
|
33
33
|
gem "bullet"
|
34
|
-
|
34
|
+
gem "bundler-audit", require: false
|
35
35
|
gem "byebug"
|
36
|
-
|
36
|
+
gem "dotenv-rails"
|
37
37
|
gem "factory_girl_rails"
|
38
38
|
gem "i18n-tasks"
|
39
|
-
|
39
|
+
gem "pry-rails"
|
40
40
|
gem "rspec-rails", "~> 3.3.0"
|
41
41
|
end
|
42
42
|
|
43
43
|
group :test do
|
44
44
|
# gem "capybara-webkit"
|
45
45
|
gem "database_cleaner"
|
46
|
-
|
46
|
+
gem "formulaic"
|
47
47
|
gem "launchy"
|
48
48
|
gem "shoulda-matchers"
|
49
49
|
gem "simplecov", require: false
|
@@ -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
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="<%= I18n.locale %>">
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8" />
|
5
|
+
<meta name="ROBOTS" content="NOODP" />
|
6
|
+
<meta name="viewport" content="initial-scale=1" />
|
7
|
+
<%%#
|
8
|
+
Configure default and controller-, and view-specific titles in
|
9
|
+
config/locales/en.yml. For more see:
|
10
|
+
https://github.com/calebthompson/title#usage
|
11
|
+
%>
|
12
|
+
<title><%%= title %></title>
|
13
|
+
<%%= stylesheet_link_tag :application, media: "all" %>
|
14
|
+
<%%= csrf_meta_tags %>
|
15
|
+
</head>
|
16
|
+
<body class="<%%= body_class %>">
|
17
|
+
<%%= render "flashes" -%>
|
18
|
+
<%%= yield %>
|
19
|
+
<%%= render "javascript" %>
|
20
|
+
</body>
|
21
|
+
</html>
|
data/templates/i18n.rb
ADDED
data/templates/puma.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server
|
2
|
+
|
3
|
+
# The environment variable WEB_CONCURRENCY may be set to a default value based
|
4
|
+
# on dyno size. To manually configure this value use heroku config:set
|
5
|
+
# WEB_CONCURRENCY.
|
6
|
+
#
|
7
|
+
# Increasing the number of workers will increase the amount of resting memory
|
8
|
+
# your dynos use. Increasing the number of threads will increase the amount of
|
9
|
+
# potential bloat added to your dynos when they are responding to heavy
|
10
|
+
# requests.
|
11
|
+
#
|
12
|
+
# Starting with a low number of workers and threads provides adequate
|
13
|
+
# performance for most applications, even under load, while maintaining a low
|
14
|
+
# risk of overusing memory.
|
15
|
+
workers Integer(ENV.fetch("WEB_CONCURRENCY", 2))
|
16
|
+
threads_count = Integer(ENV.fetch("MAX_THREADS", 2))
|
17
|
+
threads(threads_count, threads_count)
|
18
|
+
|
19
|
+
preload_app!
|
20
|
+
|
21
|
+
rackup DefaultRackup
|
22
|
+
environment ENV.fetch("RACK_ENV", "development")
|
23
|
+
|
24
|
+
on_worker_boot do
|
25
|
+
# Worker specific setup for Rails 4.1+
|
26
|
+
# See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
|
27
|
+
ActiveRecord::Base.establish_connection
|
28
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gimbal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jon Pascoe
|
@@ -96,11 +96,20 @@ files:
|
|
96
96
|
- spec/support/fake_github.rb
|
97
97
|
- spec/support/gimbal.rb
|
98
98
|
- templates/Gemfile.erb
|
99
|
+
- templates/_flashes.html.erb
|
100
|
+
- templates/_javascript.html.erb
|
99
101
|
- templates/action_mailer.rb
|
102
|
+
- templates/bundler_audit.rake
|
103
|
+
- templates/config_i18n_tasks.yml
|
104
|
+
- templates/config_locales_en.yml.erb
|
100
105
|
- templates/database_cleaner_rspec.rb
|
101
106
|
- templates/factory_girl_rspec.rb
|
107
|
+
- templates/flashes_helper.rb
|
102
108
|
- templates/gimbal_gitignore
|
109
|
+
- templates/gimbal_layout.html.erb.erb
|
110
|
+
- templates/i18n.rb
|
103
111
|
- templates/mysql_database.yml.erb
|
112
|
+
- templates/puma.rb
|
104
113
|
- templates/rails_helper.rb
|
105
114
|
- templates/shoulda_matchers_config_rspec.rb
|
106
115
|
- templates/spec_helper.rb
|