katapult 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG.md +34 -12
- data/README.md +154 -114
- data/Rakefile +3 -3
- data/bin/katapult +34 -8
- data/features/application_model.feature +8 -44
- data/features/authenticate.feature +21 -4
- data/features/basics.feature +16 -89
- data/features/binary.feature +37 -4
- data/features/model.feature +40 -24
- data/features/navigation.feature +2 -0
- data/features/step_definitions/katapult_steps.rb +48 -16
- data/features/step_definitions/test_steps.rb +2 -0
- data/features/templates.feature +74 -0
- data/lib/generators/katapult/app_model/templates/lib/katapult/application_model.rb +2 -2
- data/lib/generators/katapult/basics/basics_generator.rb +12 -1
- data/lib/generators/katapult/basics/templates/Capfile +5 -0
- data/lib/generators/katapult/basics/templates/Gemfile +3 -1
- data/lib/generators/katapult/basics/templates/Gemfile.lock +376 -0
- data/lib/generators/katapult/basics/templates/app/models/application_record.rb +28 -0
- data/lib/generators/katapult/basics/templates/app/webpack/assets/javascripts/bootstrap.js +2 -2
- data/lib/generators/katapult/basics/templates/config/deploy.rb +2 -3
- data/lib/generators/katapult/basics/templates/config/deploy/production.rb +2 -2
- data/lib/generators/katapult/basics/templates/config/deploy/staging.rb +1 -1
- data/lib/generators/katapult/basics/templates/lib/capistrano/tasks/deploy.rake +1 -4
- data/lib/generators/katapult/clearance/clearance_generator.rb +13 -4
- data/lib/generators/katapult/clearance/templates/features/authentication.feature +3 -3
- data/lib/generators/katapult/model/model_generator.rb +14 -4
- data/lib/generators/katapult/templates/templates_generator.rb +35 -0
- data/lib/generators/katapult/transform/transform_generator.rb +3 -3
- data/lib/generators/katapult/views/views_generator.rb +1 -1
- data/lib/generators/katapult/web_ui/web_ui_generator.rb +1 -1
- data/lib/katapult/application_model.rb +7 -7
- data/lib/katapult/elements/attribute.rb +16 -0
- data/lib/katapult/elements/authentication.rb +9 -6
- data/lib/katapult/elements/model.rb +8 -4
- data/lib/katapult/elements/navigation.rb +2 -2
- data/lib/katapult/elements/web_ui.rb +2 -2
- data/lib/katapult/generator.rb +12 -2
- data/lib/katapult/support/generator_goodies.rb +14 -0
- data/lib/katapult/version.rb +1 -1
- data/script/update +5 -1
- metadata +8 -8
- data/features/configuration.feature +0 -24
- data/lib/generators/katapult/basics/templates/lib/capistrano/tasks/passenger.rake +0 -8
- data/lib/generators/katapult/basics/templates/lib/ext/active_record/find_by_anything.rb +0 -20
- data/lib/generators/katapult/basics/templates/lib/ext/active_record/these.rb +0 -7
data/features/navigation.feature
CHANGED
@@ -27,22 +27,32 @@ When /^I generate katapult basics$/ do
|
|
27
27
|
end
|
28
28
|
|
29
29
|
# By default, transforming the application model will not recreate and migrate
|
30
|
-
# the test app database (massive test suite speedup).
|
31
|
-
#
|
32
|
-
#
|
33
|
-
When /^I( successfully)? transform the application model( including migrations)?$/ do |require_success, run_migrations|
|
30
|
+
# the test app database (massive test suite speedup). If a scenario relies on
|
31
|
+
# the database being set up (e.g. running Cucumber), be sure to use this step
|
32
|
+
# with trailing "including migrations".
|
33
|
+
When /^I( successfully)? transform the application model( including migrations)?(, ignoring conflicts)?$/ do |require_success, run_migrations, ignore_conflicts|
|
34
34
|
next if @no_clobber
|
35
35
|
|
36
36
|
ENV['SKIP_MIGRATIONS'] = 'true' unless run_migrations # Speedup
|
37
|
+
command = 'rails generate katapult:transform lib/katapult/application_model.rb'
|
38
|
+
command << ' --force' if ignore_conflicts
|
37
39
|
|
38
40
|
with_aruba_timeout 60 do
|
39
41
|
# The second argument of #run_simple defaults to `true`
|
40
|
-
run_simple
|
42
|
+
run_simple command, !!require_success
|
41
43
|
end
|
42
44
|
end
|
43
45
|
After { ENV.delete 'SKIP_MIGRATIONS' }
|
44
46
|
|
45
47
|
Then 'Capistrano should be configured' do
|
48
|
+
steps %(
|
49
|
+
And the file "Gemfile" should contain "capistrano-rails"
|
50
|
+
And the file "Gemfile" should contain "capistrano-bundler"
|
51
|
+
And the file "Gemfile" should contain "capistrano-maintenance"
|
52
|
+
And the file "Gemfile" should contain "capistrano-opscomplete"
|
53
|
+
And the file "Gemfile" should contain "capistrano-passenger"
|
54
|
+
)
|
55
|
+
|
46
56
|
step 'the file "Capfile" should contain:', <<-CONTENT
|
47
57
|
# Load DSL and set up stages
|
48
58
|
require 'capistrano/setup'
|
@@ -50,6 +60,10 @@ require 'capistrano/setup'
|
|
50
60
|
# Include default deployment tasks
|
51
61
|
require 'capistrano/deploy'
|
52
62
|
|
63
|
+
# Configure Opscomplete deployment
|
64
|
+
require 'capistrano/opscomplete'
|
65
|
+
require 'capistrano/passenger'
|
66
|
+
|
53
67
|
# Use Git
|
54
68
|
require 'capistrano/scm/git'
|
55
69
|
install_plugin Capistrano::SCM::Git
|
@@ -69,13 +83,14 @@ Dir.glob('lib/capistrano/tasks/*.rake').sort.each do |r|
|
|
69
83
|
end
|
70
84
|
|
71
85
|
before 'deploy:updating', 'db:dump'
|
86
|
+
after 'deploy:updating', 'opscomplete:ruby:ensure'
|
72
87
|
after 'deploy:published', 'deploy:restart'
|
73
88
|
after 'deploy:published', 'db:warn_if_pending_migrations'
|
74
89
|
after 'deploy:published', 'db:show_dump_usage'
|
75
90
|
after 'deploy:finished', 'deploy:cleanup' # https://makandracards.com/makandra/1432
|
76
91
|
CONTENT
|
77
92
|
|
78
|
-
step 'the file "config/deploy.rb" should contain:', <<-CONTENT
|
93
|
+
step 'the file "config/deploy.rb" should contain:', <<-'CONTENT'
|
79
94
|
# Default value for :format is :pretty
|
80
95
|
# set :format, :pretty
|
81
96
|
|
@@ -90,7 +105,7 @@ set :linked_files, %w(config/database.yml config/secrets.yml)
|
|
90
105
|
|
91
106
|
# Default value for linked_dirs is []
|
92
107
|
# set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system')
|
93
|
-
set :linked_dirs, %w(log public/system tmp/pids)
|
108
|
+
set :linked_dirs, %w(log public/system tmp/pids node_modules public/packs)
|
94
109
|
|
95
110
|
# Default value for default_env is {}
|
96
111
|
# set :default_env, { path: "/opt/ruby/bin:$PATH" }
|
@@ -103,8 +118,7 @@ set :ssh_options, {
|
|
103
118
|
set :repo_url, 'git@code.makandra.de:makandra/katapult_test_app.git'
|
104
119
|
|
105
120
|
# set :whenever_roles, :cron
|
106
|
-
# set :
|
107
|
-
# set :whenever_command, 'bundle exec whenever'
|
121
|
+
# set :whenever_identifier, ->{ "#{fetch(:application)}_#{fetch(:stage)}" }
|
108
122
|
|
109
123
|
set :maintenance_template_path, 'public/maintenance.html.erb'
|
110
124
|
CONTENT
|
@@ -116,7 +130,7 @@ set :deploy_to, '/var/www/katapult_test_app-staging'
|
|
116
130
|
set :rails_env, 'staging'
|
117
131
|
set :branch, ENV['DEPLOY_BRANCH'] || 'master'
|
118
132
|
|
119
|
-
# server 'example.com', user: 'deploy-user', roles: %w
|
133
|
+
# server 'example.com', user: 'deploy-user', roles: %w[app web cron db]
|
120
134
|
CONTENT
|
121
135
|
|
122
136
|
step 'the file "config/deploy/production.rb" should contain exactly:', <<-CONTENT
|
@@ -126,13 +140,12 @@ set :deploy_to, '/var/www/katapult_test_app'
|
|
126
140
|
set :rails_env, 'production'
|
127
141
|
set :branch, 'production'
|
128
142
|
|
129
|
-
# server 'one.example.com', user: 'deploy-user', roles: %w
|
130
|
-
# server 'two.example.com', user: 'deploy-user', roles: %w
|
143
|
+
# server 'one.example.com', user: 'deploy-user', roles: %w[app web cron db]
|
144
|
+
# server 'two.example.com', user: 'deploy-user', roles: %w[app web]
|
131
145
|
CONTENT
|
132
146
|
|
133
147
|
step 'the file "lib/capistrano/tasks/db.rake" should contain ":warn_if_pending_migrations"'
|
134
148
|
step 'the file "lib/capistrano/tasks/deploy.rake" should contain "Show deployed revision"'
|
135
|
-
step 'the file "lib/capistrano/tasks/passenger.rake" should contain "Restart Application"'
|
136
149
|
|
137
150
|
end
|
138
151
|
|
@@ -154,7 +167,7 @@ Then 'Webpacker should be employed' do
|
|
154
167
|
|
155
168
|
step 'the file "config/webpacker.yml" should contain "source_path: app/webpack"'
|
156
169
|
step 'the file "config/webpack/environment.js" should contain:', <<-CONTENT
|
157
|
-
environment.plugins.
|
170
|
+
environment.plugins.prepend('Provide', new webpack.ProvidePlugin({
|
158
171
|
$: 'jquery',
|
159
172
|
CONTENT
|
160
173
|
|
@@ -213,8 +226,15 @@ Then 'styles should be prepared' do
|
|
213
226
|
step 'a directory named "app/webpack/assets/stylesheets/blocks" should exist'
|
214
227
|
step 'a directory named "app/webpack/assets/stylesheets/ext" should exist'
|
215
228
|
|
216
|
-
# JS support for Bootstrap dropdowns
|
217
|
-
step
|
229
|
+
# JS support for Bootstrap dropdowns and mobile navbar
|
230
|
+
step 'the file "app/webpack/assets/javascripts/bootstrap.js" should contain:', <<-CONTENT
|
231
|
+
import 'bootstrap-sass/assets/javascripts/bootstrap/transition'
|
232
|
+
// import 'bootstrap-sass/assets/javascripts/bootstrap/alert'
|
233
|
+
// import 'bootstrap-sass/assets/javascripts/bootstrap/button'
|
234
|
+
// import 'bootstrap-sass/assets/javascripts/bootstrap/carousel'
|
235
|
+
import 'bootstrap-sass/assets/javascripts/bootstrap/collapse'
|
236
|
+
import 'bootstrap-sass/assets/javascripts/bootstrap/dropdown'
|
237
|
+
CONTENT
|
218
238
|
end
|
219
239
|
|
220
240
|
Then 'binstubs should be set up' do
|
@@ -323,3 +343,15 @@ Then 'the errors controller should be installed' do
|
|
323
343
|
step 'a file named "app/controllers/errors_controller.rb" should exist'
|
324
344
|
step 'the file "config/routes.rb" should contain "resources :errors, only: :new"'
|
325
345
|
end
|
346
|
+
|
347
|
+
Then 'Katapult templates should have been copied to the application' do
|
348
|
+
steps %(
|
349
|
+
And a file "lib/templates/katapult/views/index.html.haml" should exist
|
350
|
+
And a file "lib/templates/katapult/views/show.html.haml" should exist
|
351
|
+
And a file "lib/templates/katapult/views/new.html.haml" should exist
|
352
|
+
And a file "lib/templates/katapult/views/edit.html.haml" should exist
|
353
|
+
And a file "lib/templates/katapult/views/_form.html.haml" should exist
|
354
|
+
|
355
|
+
And a file "lib/templates/katapult/web_ui/controller.rb" should exist
|
356
|
+
)
|
357
|
+
end
|
@@ -1,9 +1,11 @@
|
|
1
1
|
When /^I run rspec/ do
|
2
2
|
run_simple 'rspec', exit_timeout: 10
|
3
|
+
run_simple 'bundle exec parallel_test -t rspec -- spec', exit_timeout: 10
|
3
4
|
end
|
4
5
|
|
5
6
|
When /^I run cucumber/ do
|
6
7
|
run_simple 'bundle exec cucumber', exit_timeout: 15
|
8
|
+
run_simple 'bundle exec parallel_test -t cucumber -- features', exit_timeout: 15
|
7
9
|
end
|
8
10
|
|
9
11
|
When 'debugger' do
|
@@ -0,0 +1,74 @@
|
|
1
|
+
#@announce-output
|
2
|
+
#@announce-stderr
|
3
|
+
Feature: Customizing the templates Katapult uses for code generation
|
4
|
+
|
5
|
+
Background:
|
6
|
+
Given a new Rails application with Katapult basics installed
|
7
|
+
|
8
|
+
|
9
|
+
Scenario: Custom controller template
|
10
|
+
When I write to "lib/katapult/application_model.rb" with:
|
11
|
+
"""
|
12
|
+
crud 'Car' do |car|
|
13
|
+
car.attr 'name'
|
14
|
+
end
|
15
|
+
"""
|
16
|
+
And I write to "lib/templates/katapult/web_ui/controller.rb" with:
|
17
|
+
"""
|
18
|
+
# Custom <%= model_name(:classes) %>Controller template
|
19
|
+
|
20
|
+
"""
|
21
|
+
And I successfully transform the application model
|
22
|
+
Then the file "app/controllers/cars_controller.rb" should contain exactly:
|
23
|
+
"""
|
24
|
+
# Custom CarsController template
|
25
|
+
|
26
|
+
"""
|
27
|
+
|
28
|
+
|
29
|
+
Scenario: Custom view templates
|
30
|
+
When I write to "lib/katapult/application_model.rb" with:
|
31
|
+
"""
|
32
|
+
crud 'Car' do |car|
|
33
|
+
car.attr 'name'
|
34
|
+
end
|
35
|
+
"""
|
36
|
+
And I write to "lib/templates/katapult/views/index.html.haml" with:
|
37
|
+
"""
|
38
|
+
# Custom <%= model_name(:humans) %> list template
|
39
|
+
|
40
|
+
"""
|
41
|
+
And I write to "lib/templates/katapult/views/_form.html.haml" with:
|
42
|
+
"""
|
43
|
+
# Custom <%= model_name(:human) %> form template
|
44
|
+
|
45
|
+
"""
|
46
|
+
And I successfully transform the application model
|
47
|
+
Then the file "app/views/cars/index.html.haml" should contain exactly:
|
48
|
+
"""
|
49
|
+
# Custom cars list template
|
50
|
+
|
51
|
+
"""
|
52
|
+
And the file "app/views/cars/_form.html.haml" should contain exactly:
|
53
|
+
"""
|
54
|
+
# Custom car form template
|
55
|
+
|
56
|
+
"""
|
57
|
+
|
58
|
+
|
59
|
+
Scenario: Custom model template
|
60
|
+
When I write to "lib/katapult/application_model.rb" with:
|
61
|
+
"""
|
62
|
+
model 'Car'
|
63
|
+
"""
|
64
|
+
And a file named "lib/templates/katapult/model/model.rb" with:
|
65
|
+
"""
|
66
|
+
# Custom model template for <%= class_name %>
|
67
|
+
|
68
|
+
"""
|
69
|
+
And I successfully transform the application model
|
70
|
+
Then the file "app/models/car.rb" should contain exactly:
|
71
|
+
"""
|
72
|
+
# Custom model template for Car
|
73
|
+
|
74
|
+
"""
|
@@ -2,8 +2,8 @@
|
|
2
2
|
# by the full-fledged example below (which you can generate right away).
|
3
3
|
|
4
4
|
# Define a model + generate views with CRUD actions
|
5
|
-
#
|
6
|
-
#
|
5
|
+
# The products list will become the home page of the generated app, because it
|
6
|
+
# (implicitly) defines the first index action.
|
7
7
|
crud 'product' do |product|
|
8
8
|
# The first attribute of each model is taken as a human identifier/label
|
9
9
|
product.attr :title # Default type "string"
|
@@ -40,6 +40,7 @@ module Katapult
|
|
40
40
|
# installed with a custom :path option
|
41
41
|
@katapult = File.readlines('Gemfile').find{ |line| line =~ /^gem 'katapult'/ }
|
42
42
|
template 'Gemfile', force: true
|
43
|
+
template 'Gemfile.lock', force: true
|
43
44
|
end
|
44
45
|
|
45
46
|
def bundle_install
|
@@ -163,6 +164,10 @@ config.time_zone = 'Berlin'
|
|
163
164
|
directory 'app/helpers'
|
164
165
|
end
|
165
166
|
|
167
|
+
def prepare_application_record
|
168
|
+
template 'app/models/application_record.rb', force: true
|
169
|
+
end
|
170
|
+
|
166
171
|
def install_errors_controller
|
167
172
|
template 'app/controllers/errors_controller.rb'
|
168
173
|
route 'resources :errors, only: :new'
|
@@ -176,6 +181,9 @@ config.time_zone = 'Berlin'
|
|
176
181
|
directory 'lib/ext'
|
177
182
|
end
|
178
183
|
|
184
|
+
def copy_templates
|
185
|
+
invoke 'katapult:templates'
|
186
|
+
end
|
179
187
|
|
180
188
|
# Configure 3rd party ####################################################
|
181
189
|
|
@@ -269,6 +277,9 @@ config.autoload_paths << "#{Rails.root}/app/controllers/shared"
|
|
269
277
|
|
270
278
|
directory 'lib/capistrano/tasks'
|
271
279
|
template 'lib/tasks/pending_migrations.rake'
|
280
|
+
|
281
|
+
# Whenever needs this file for deployment
|
282
|
+
create_file 'config/schedule.rb'
|
272
283
|
end
|
273
284
|
|
274
285
|
def setup_webpacker
|
@@ -280,7 +291,7 @@ config.autoload_paths << "#{Rails.root}/app/controllers/shared"
|
|
280
291
|
inject_into_file 'config/webpack/environment.js', <<~JQUERY, after: /\A.*\n/ # 1st line
|
281
292
|
const webpack = require('webpack')
|
282
293
|
|
283
|
-
environment.plugins.
|
294
|
+
environment.plugins.prepend('Provide', new webpack.ProvidePlugin({
|
284
295
|
$: 'jquery',
|
285
296
|
jQuery: 'jquery'
|
286
297
|
})
|
@@ -4,6 +4,10 @@ require 'capistrano/setup'
|
|
4
4
|
# Include default deployment tasks
|
5
5
|
require 'capistrano/deploy'
|
6
6
|
|
7
|
+
# Configure Opscomplete deployment
|
8
|
+
require 'capistrano/opscomplete'
|
9
|
+
require 'capistrano/passenger'
|
10
|
+
|
7
11
|
# Use Git
|
8
12
|
require 'capistrano/scm/git'
|
9
13
|
install_plugin Capistrano::SCM::Git
|
@@ -23,6 +27,7 @@ Dir.glob('lib/capistrano/tasks/*.rake').sort.each do |r|
|
|
23
27
|
end
|
24
28
|
|
25
29
|
before 'deploy:updating', 'db:dump'
|
30
|
+
after 'deploy:updating', 'opscomplete:ruby:ensure'
|
26
31
|
after 'deploy:published', 'deploy:restart'
|
27
32
|
after 'deploy:published', 'db:warn_if_pending_migrations'
|
28
33
|
after 'deploy:published', 'db:show_dump_usage'
|
@@ -33,7 +33,7 @@ group :development do
|
|
33
33
|
|
34
34
|
gem 'thin'
|
35
35
|
|
36
|
-
gem 'parallel_tests'
|
36
|
+
gem 'parallel_tests', '< 2.19' # Breaks compatibility with Cucumber 2
|
37
37
|
|
38
38
|
gem 'guard-livereload', require: false
|
39
39
|
gem 'rack-livereload'
|
@@ -71,4 +71,6 @@ group :deploy do
|
|
71
71
|
gem 'capistrano-rails', require: false
|
72
72
|
gem 'capistrano-bundler', require: false
|
73
73
|
gem 'capistrano-maintenance'
|
74
|
+
gem 'capistrano-opscomplete'
|
75
|
+
gem 'capistrano-passenger'
|
74
76
|
end
|
@@ -0,0 +1,376 @@
|
|
1
|
+
GEM
|
2
|
+
remote: https://rubygems.org/
|
3
|
+
specs:
|
4
|
+
actioncable (5.1.4)
|
5
|
+
actionpack (= 5.1.4)
|
6
|
+
nio4r (~> 2.0)
|
7
|
+
websocket-driver (~> 0.6.1)
|
8
|
+
actionmailer (5.1.4)
|
9
|
+
actionpack (= 5.1.4)
|
10
|
+
actionview (= 5.1.4)
|
11
|
+
activejob (= 5.1.4)
|
12
|
+
mail (~> 2.5, >= 2.5.4)
|
13
|
+
rails-dom-testing (~> 2.0)
|
14
|
+
actionpack (5.1.4)
|
15
|
+
actionview (= 5.1.4)
|
16
|
+
activesupport (= 5.1.4)
|
17
|
+
rack (~> 2.0)
|
18
|
+
rack-test (>= 0.6.3)
|
19
|
+
rails-dom-testing (~> 2.0)
|
20
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
21
|
+
actionview (5.1.4)
|
22
|
+
activesupport (= 5.1.4)
|
23
|
+
builder (~> 3.1)
|
24
|
+
erubi (~> 1.4)
|
25
|
+
rails-dom-testing (~> 2.0)
|
26
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
27
|
+
active_type (0.7.5)
|
28
|
+
activerecord (>= 3.2)
|
29
|
+
activejob (5.1.4)
|
30
|
+
activesupport (= 5.1.4)
|
31
|
+
globalid (>= 0.3.6)
|
32
|
+
activemodel (5.1.4)
|
33
|
+
activesupport (= 5.1.4)
|
34
|
+
activerecord (5.1.4)
|
35
|
+
activemodel (= 5.1.4)
|
36
|
+
activesupport (= 5.1.4)
|
37
|
+
arel (~> 8.0)
|
38
|
+
activesupport (5.1.4)
|
39
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
40
|
+
i18n (~> 0.7)
|
41
|
+
minitest (~> 5.1)
|
42
|
+
tzinfo (~> 1.1)
|
43
|
+
addressable (2.5.2)
|
44
|
+
public_suffix (>= 2.0.2, < 4.0)
|
45
|
+
airbrussh (1.3.0)
|
46
|
+
sshkit (>= 1.6.1, != 1.7.0)
|
47
|
+
arel (8.0.0)
|
48
|
+
assignable_values (0.13.2)
|
49
|
+
activerecord (>= 2.3)
|
50
|
+
better_errors (2.4.0)
|
51
|
+
coderay (>= 1.0.0)
|
52
|
+
erubi (>= 1.0.0)
|
53
|
+
rack (>= 0.9.0)
|
54
|
+
bindex (0.5.0)
|
55
|
+
binding_of_caller (0.8.0)
|
56
|
+
debug_inspector (>= 0.0.1)
|
57
|
+
builder (3.2.3)
|
58
|
+
byebug (10.0.0)
|
59
|
+
capistrano (3.10.1)
|
60
|
+
airbrussh (>= 1.0.0)
|
61
|
+
i18n
|
62
|
+
rake (>= 10.0.0)
|
63
|
+
sshkit (>= 1.9.0)
|
64
|
+
capistrano-bundler (1.3.0)
|
65
|
+
capistrano (~> 3.1)
|
66
|
+
sshkit (~> 1.2)
|
67
|
+
capistrano-maintenance (1.2.0)
|
68
|
+
capistrano (>= 3.0)
|
69
|
+
capistrano-opscomplete (0.2.0)
|
70
|
+
capistrano (>= 3.0, < 4.0.0)
|
71
|
+
capistrano-passenger (0.2.0)
|
72
|
+
capistrano (~> 3.0)
|
73
|
+
capistrano-rails (1.3.1)
|
74
|
+
capistrano (~> 3.1)
|
75
|
+
capistrano-bundler (~> 1.1)
|
76
|
+
capybara (2.18.0)
|
77
|
+
addressable
|
78
|
+
mini_mime (>= 0.1.3)
|
79
|
+
nokogiri (>= 1.3.3)
|
80
|
+
rack (>= 1.0.0)
|
81
|
+
rack-test (>= 0.5.4)
|
82
|
+
xpath (>= 2.0, < 4.0)
|
83
|
+
capybara-screenshot (1.0.18)
|
84
|
+
capybara (>= 1.0, < 3)
|
85
|
+
launchy
|
86
|
+
childprocess (0.9.0)
|
87
|
+
ffi (~> 1.0, >= 1.0.11)
|
88
|
+
chronic (0.10.2)
|
89
|
+
coderay (1.1.2)
|
90
|
+
concurrent-ruby (1.0.5)
|
91
|
+
crass (1.0.3)
|
92
|
+
cucumber (2.1.0)
|
93
|
+
builder (>= 2.1.2)
|
94
|
+
cucumber-core (~> 1.3.0)
|
95
|
+
diff-lcs (>= 1.1.3)
|
96
|
+
gherkin3 (~> 3.1.0)
|
97
|
+
multi_json (>= 1.7.5, < 2.0)
|
98
|
+
multi_test (>= 0.1.2)
|
99
|
+
cucumber-core (1.3.1)
|
100
|
+
gherkin3 (~> 3.1.0)
|
101
|
+
cucumber-rails (1.5.0)
|
102
|
+
capybara (>= 1.1.2, < 3)
|
103
|
+
cucumber (>= 1.3.8, < 4)
|
104
|
+
mime-types (>= 1.17, < 4)
|
105
|
+
nokogiri (~> 1.5)
|
106
|
+
railties (>= 4, < 5.2)
|
107
|
+
cucumber_factory (1.12.0)
|
108
|
+
activerecord
|
109
|
+
activesupport
|
110
|
+
cucumber
|
111
|
+
cucumber_priority (>= 0.2.0)
|
112
|
+
cucumber_priority (0.3.1)
|
113
|
+
cucumber
|
114
|
+
daemons (1.2.6)
|
115
|
+
database_cleaner (1.6.2)
|
116
|
+
debug_inspector (0.0.3)
|
117
|
+
diff-lcs (1.3)
|
118
|
+
edge_rider (0.3.2)
|
119
|
+
activerecord
|
120
|
+
em-websocket (0.5.1)
|
121
|
+
eventmachine (>= 0.12.9)
|
122
|
+
http_parser.rb (~> 0.6.0)
|
123
|
+
erubi (1.7.1)
|
124
|
+
erubis (2.7.0)
|
125
|
+
eventmachine (1.2.5)
|
126
|
+
exception_notification (4.2.2)
|
127
|
+
actionmailer (>= 4.0, < 6)
|
128
|
+
activesupport (>= 4.0, < 6)
|
129
|
+
factory_bot (4.8.2)
|
130
|
+
activesupport (>= 3.0.0)
|
131
|
+
factory_bot_rails (4.8.2)
|
132
|
+
factory_bot (~> 4.8.2)
|
133
|
+
railties (>= 3.0.0)
|
134
|
+
ffi (1.9.23)
|
135
|
+
formatador (0.2.5)
|
136
|
+
gherkin3 (3.1.2)
|
137
|
+
globalid (0.4.1)
|
138
|
+
activesupport (>= 4.2.0)
|
139
|
+
guard (2.14.2)
|
140
|
+
formatador (>= 0.2.4)
|
141
|
+
listen (>= 2.7, < 4.0)
|
142
|
+
lumberjack (>= 1.0.12, < 2.0)
|
143
|
+
nenv (~> 0.1)
|
144
|
+
notiffany (~> 0.0)
|
145
|
+
pry (>= 0.9.12)
|
146
|
+
shellany (~> 0.0)
|
147
|
+
thor (>= 0.18.1)
|
148
|
+
guard-compat (1.2.1)
|
149
|
+
guard-livereload (2.5.2)
|
150
|
+
em-websocket (~> 0.5)
|
151
|
+
guard (~> 2.8)
|
152
|
+
guard-compat (~> 1.0)
|
153
|
+
multi_json (~> 1.8)
|
154
|
+
haml (5.0.4)
|
155
|
+
temple (>= 0.8.0)
|
156
|
+
tilt
|
157
|
+
haml-rails (1.0.0)
|
158
|
+
actionpack (>= 4.0.1)
|
159
|
+
activesupport (>= 4.0.1)
|
160
|
+
haml (>= 4.0.6, < 6.0)
|
161
|
+
html2haml (>= 1.0.1)
|
162
|
+
railties (>= 4.0.1)
|
163
|
+
has_defaults (0.4.4)
|
164
|
+
activerecord
|
165
|
+
html2haml (2.2.0)
|
166
|
+
erubis (~> 2.7.0)
|
167
|
+
haml (>= 4.0, < 6)
|
168
|
+
nokogiri (>= 1.6.0)
|
169
|
+
ruby_parser (~> 3.5)
|
170
|
+
http_parser.rb (0.6.0)
|
171
|
+
i18n (0.9.5)
|
172
|
+
concurrent-ruby (~> 1.0)
|
173
|
+
launchy (2.4.3)
|
174
|
+
addressable (~> 2.3)
|
175
|
+
listen (3.1.5)
|
176
|
+
rb-fsevent (~> 0.9, >= 0.9.4)
|
177
|
+
rb-inotify (~> 0.9, >= 0.9.7)
|
178
|
+
ruby_dep (~> 1.2)
|
179
|
+
loofah (2.2.0)
|
180
|
+
crass (~> 1.0.2)
|
181
|
+
nokogiri (>= 1.5.9)
|
182
|
+
lumberjack (1.0.12)
|
183
|
+
mail (2.7.0)
|
184
|
+
mini_mime (>= 0.1.1)
|
185
|
+
method_source (0.9.0)
|
186
|
+
mime-types (3.1)
|
187
|
+
mime-types-data (~> 3.2015)
|
188
|
+
mime-types-data (3.2016.0521)
|
189
|
+
mini_mime (1.0.0)
|
190
|
+
mini_portile2 (2.3.0)
|
191
|
+
minitest (5.11.3)
|
192
|
+
modularity (2.0.1)
|
193
|
+
multi_json (1.13.1)
|
194
|
+
multi_test (0.1.2)
|
195
|
+
nenv (0.3.0)
|
196
|
+
net-scp (1.2.1)
|
197
|
+
net-ssh (>= 2.6.5)
|
198
|
+
net-ssh (4.2.0)
|
199
|
+
nio4r (2.3.0)
|
200
|
+
nokogiri (1.8.2)
|
201
|
+
mini_portile2 (~> 2.3.0)
|
202
|
+
notiffany (0.1.1)
|
203
|
+
nenv (~> 0.1)
|
204
|
+
shellany (~> 0.0)
|
205
|
+
parallel (1.12.1)
|
206
|
+
parallel_tests (2.21.2)
|
207
|
+
parallel
|
208
|
+
pg (0.21.0)
|
209
|
+
pry (0.11.3)
|
210
|
+
coderay (~> 1.1.0)
|
211
|
+
method_source (~> 0.9.0)
|
212
|
+
public_suffix (3.0.2)
|
213
|
+
query_diet (0.6.2)
|
214
|
+
rack (2.0.4)
|
215
|
+
rack-livereload (0.3.16)
|
216
|
+
rack
|
217
|
+
rack-proxy (0.6.4)
|
218
|
+
rack
|
219
|
+
rack-test (0.8.3)
|
220
|
+
rack (>= 1.0, < 3)
|
221
|
+
rails (5.1.4)
|
222
|
+
actioncable (= 5.1.4)
|
223
|
+
actionmailer (= 5.1.4)
|
224
|
+
actionpack (= 5.1.4)
|
225
|
+
actionview (= 5.1.4)
|
226
|
+
activejob (= 5.1.4)
|
227
|
+
activemodel (= 5.1.4)
|
228
|
+
activerecord (= 5.1.4)
|
229
|
+
activesupport (= 5.1.4)
|
230
|
+
bundler (>= 1.3.0)
|
231
|
+
railties (= 5.1.4)
|
232
|
+
sprockets-rails (>= 2.0.0)
|
233
|
+
rails-dom-testing (2.0.3)
|
234
|
+
activesupport (>= 4.2.0)
|
235
|
+
nokogiri (>= 1.6)
|
236
|
+
rails-html-sanitizer (1.0.3)
|
237
|
+
loofah (~> 2.0)
|
238
|
+
railties (5.1.4)
|
239
|
+
actionpack (= 5.1.4)
|
240
|
+
activesupport (= 5.1.4)
|
241
|
+
method_source
|
242
|
+
rake (>= 0.8.7)
|
243
|
+
thor (>= 0.18.1, < 2.0)
|
244
|
+
rake (12.3.0)
|
245
|
+
rb-fsevent (0.10.3)
|
246
|
+
rb-inotify (0.9.10)
|
247
|
+
ffi (>= 0.5.0, < 2)
|
248
|
+
rspec (3.7.0)
|
249
|
+
rspec-core (~> 3.7.0)
|
250
|
+
rspec-expectations (~> 3.7.0)
|
251
|
+
rspec-mocks (~> 3.7.0)
|
252
|
+
rspec-core (3.7.1)
|
253
|
+
rspec-support (~> 3.7.0)
|
254
|
+
rspec-expectations (3.7.0)
|
255
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
256
|
+
rspec-support (~> 3.7.0)
|
257
|
+
rspec-mocks (3.7.0)
|
258
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
259
|
+
rspec-support (~> 3.7.0)
|
260
|
+
rspec-rails (3.7.2)
|
261
|
+
actionpack (>= 3.0)
|
262
|
+
activesupport (>= 3.0)
|
263
|
+
railties (>= 3.0)
|
264
|
+
rspec-core (~> 3.7.0)
|
265
|
+
rspec-expectations (~> 3.7.0)
|
266
|
+
rspec-mocks (~> 3.7.0)
|
267
|
+
rspec-support (~> 3.7.0)
|
268
|
+
rspec-support (3.7.1)
|
269
|
+
ruby_dep (1.5.0)
|
270
|
+
ruby_parser (3.11.0)
|
271
|
+
sexp_processor (~> 4.9)
|
272
|
+
rubyzip (1.2.1)
|
273
|
+
selenium-webdriver (3.11.0)
|
274
|
+
childprocess (~> 0.5)
|
275
|
+
rubyzip (~> 1.2)
|
276
|
+
sexp_processor (4.10.1)
|
277
|
+
shellany (0.0.1)
|
278
|
+
shoulda-matchers (3.1.2)
|
279
|
+
activesupport (>= 4.0.0)
|
280
|
+
spreewald (1.11.3)
|
281
|
+
cucumber
|
282
|
+
cucumber_priority (>= 0.3.0)
|
283
|
+
spring (2.0.2)
|
284
|
+
activesupport (>= 4.2)
|
285
|
+
spring-commands-cucumber (1.0.1)
|
286
|
+
spring (>= 0.9.1)
|
287
|
+
spring-commands-rspec (1.0.4)
|
288
|
+
spring (>= 0.9.1)
|
289
|
+
sprockets (3.7.1)
|
290
|
+
concurrent-ruby (~> 1.0)
|
291
|
+
rack (> 1, < 3)
|
292
|
+
sprockets-rails (3.2.1)
|
293
|
+
actionpack (>= 4.0)
|
294
|
+
activesupport (>= 4.0)
|
295
|
+
sprockets (>= 3.0.0)
|
296
|
+
sshkit (1.16.0)
|
297
|
+
net-scp (>= 1.1.2)
|
298
|
+
net-ssh (>= 2.8.0)
|
299
|
+
temple (0.8.0)
|
300
|
+
thin (1.7.2)
|
301
|
+
daemons (~> 1.0, >= 1.0.9)
|
302
|
+
eventmachine (~> 1.0, >= 1.0.4)
|
303
|
+
rack (>= 1, < 3)
|
304
|
+
thor (0.20.0)
|
305
|
+
thread_safe (0.3.6)
|
306
|
+
tilt (2.0.8)
|
307
|
+
timecop (0.9.1)
|
308
|
+
tzinfo (1.2.5)
|
309
|
+
thread_safe (~> 0.1)
|
310
|
+
web-console (3.5.1)
|
311
|
+
actionview (>= 5.0)
|
312
|
+
activemodel (>= 5.0)
|
313
|
+
bindex (>= 0.4.0)
|
314
|
+
railties (>= 5.0)
|
315
|
+
webpacker (3.3.1)
|
316
|
+
activesupport (>= 4.2)
|
317
|
+
rack-proxy (>= 0.6.1)
|
318
|
+
railties (>= 4.2)
|
319
|
+
websocket-driver (0.6.5)
|
320
|
+
websocket-extensions (>= 0.1.0)
|
321
|
+
websocket-extensions (0.1.3)
|
322
|
+
whenever (0.10.0)
|
323
|
+
chronic (>= 0.6.3)
|
324
|
+
will_paginate (3.1.6)
|
325
|
+
xpath (3.0.0)
|
326
|
+
nokogiri (~> 1.8)
|
327
|
+
|
328
|
+
PLATFORMS
|
329
|
+
ruby
|
330
|
+
|
331
|
+
DEPENDENCIES
|
332
|
+
active_type
|
333
|
+
assignable_values
|
334
|
+
better_errors
|
335
|
+
binding_of_caller (>= 0.8.0)
|
336
|
+
byebug
|
337
|
+
capistrano-bundler
|
338
|
+
capistrano-maintenance
|
339
|
+
capistrano-opscomplete
|
340
|
+
capistrano-passenger
|
341
|
+
capistrano-rails
|
342
|
+
capybara
|
343
|
+
capybara-screenshot
|
344
|
+
cucumber (< 2.2)
|
345
|
+
cucumber-rails
|
346
|
+
cucumber_factory
|
347
|
+
database_cleaner
|
348
|
+
edge_rider
|
349
|
+
exception_notification
|
350
|
+
factory_bot_rails
|
351
|
+
guard-livereload
|
352
|
+
haml-rails
|
353
|
+
has_defaults
|
354
|
+
katapult
|
355
|
+
launchy
|
356
|
+
listen (< 3.2)
|
357
|
+
modularity
|
358
|
+
parallel_tests
|
359
|
+
pg
|
360
|
+
query_diet
|
361
|
+
rack-livereload
|
362
|
+
rails
|
363
|
+
rspec
|
364
|
+
rspec-rails
|
365
|
+
selenium-webdriver
|
366
|
+
shoulda-matchers
|
367
|
+
spreewald
|
368
|
+
spring
|
369
|
+
spring-commands-cucumber
|
370
|
+
spring-commands-rspec
|
371
|
+
thin
|
372
|
+
timecop
|
373
|
+
web-console
|
374
|
+
webpacker
|
375
|
+
whenever
|
376
|
+
will_paginate
|