roro 0.3.0 → 0.3.6
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/.gitignore +5 -8
- data/Guardfile +11 -4
- data/lib/roro.rb +1 -1
- data/lib/roro/cli.rb +6 -4
- data/lib/roro/cli/base/base.rb +8 -0
- data/lib/roro/cli/base/base_files.rb +24 -0
- data/lib/roro/cli/base/check_dependencies.rb +98 -0
- data/lib/roro/cli/base/continuous_integration.rb +13 -0
- data/lib/roro/cli/base/insert_gems.rb +31 -0
- data/lib/roro/cli/base/insertions.rb +19 -0
- data/lib/roro/cli/base/utilities.rb +39 -0
- data/lib/roro/cli/configuration.rb +68 -0
- data/lib/roro/cli/generate/config.rb +13 -0
- data/lib/roro/cli/generate/config/rails.rb +17 -0
- data/lib/roro/cli/generate/generate.rb +1 -0
- data/lib/roro/cli/generate/generate_keys.rb +79 -0
- data/lib/roro/cli/generate_keys.rb +1 -1
- data/lib/roro/cli/greenfield.rb +20 -75
- data/lib/roro/cli/rollon.rb +74 -11
- data/lib/roro/cli/rollon/database/database.rb +31 -0
- data/lib/roro/cli/rollon/database/with_mysql.rb +22 -0
- data/lib/roro/cli/rollon/database/with_postgres.rb +21 -0
- data/lib/roro/cli/rollon/stories.rb +3 -0
- data/lib/roro/cli/roro_configurator.yml +157 -0
- data/lib/roro/cli/ruby_gem.rb +6 -0
- data/lib/roro/cli/templates/base/.dockerignore +51 -0
- data/{docker/env_files → lib/roro/cli/templates/base/.env}/.keep +0 -0
- data/lib/roro/cli/templates/base/.env/database.mysql.env.tt +4 -0
- data/lib/roro/cli/templates/base/.env/database.pg.env.tt +5 -0
- data/{test_apps/dummy_roro/docker/containers/app/staging.env → lib/roro/cli/templates/base/.env/web.env.tt} +0 -1
- data/{docker/keys → lib/roro/cli/templates/base}/.keep +0 -0
- data/lib/roro/cli/templates/base/.roro_config.yml +15 -0
- data/lib/roro/cli/templates/base/Dockerfile.tt +44 -0
- data/lib/roro/cli/templates/base/config/database.mysql.yml +19 -0
- data/lib/roro/cli/templates/{config/database.yml → base/config/database.pg.yml} +0 -0
- data/{test_apps/dummy_roro/.circleci/config.yml → lib/roro/cli/templates/circleci/config.yml.tt} +7 -6
- data/lib/roro/cli/templates/{docker/containers/database → dockerize/.env}/.keep +0 -0
- data/lib/roro/cli/templates/{docker/env_files → dockerize/.env/development}/.keep +0 -0
- data/lib/roro/cli/templates/dockerize/.env/development/database +3 -0
- data/lib/roro/cli/templates/dockerize/.env/development/web +1 -0
- data/lib/roro/cli/templates/{docker/keys → dockerize}/.keep +0 -0
- data/lib/roro/cli/templates/dockerize/Dockerfile.tt +23 -0
- data/lib/roro/cli/templates/dockerize/docker-compose.yml.tt +60 -0
- data/lib/roro/cli/templates/dockerize/docker-entrypoint.sh +9 -0
- data/lib/roro/cli/templates/greenfield/Dockerfile.tt +43 -0
- data/{test_apps/dummy/app/assets/images → lib/roro/cli/templates/jumpstart/.env}/.keep +0 -0
- data/{test_apps/dummy/app/assets/javascripts/channels → lib/roro/cli/templates/jumpstart/.env/development}/.keep +0 -0
- data/lib/roro/cli/templates/jumpstart/.env/development/database +3 -0
- data/lib/roro/cli/templates/jumpstart/.env/development/web +1 -0
- data/{test_apps/dummy/app/controllers/concerns → lib/roro/cli/templates/jumpstart}/.keep +0 -0
- data/lib/roro/cli/templates/jumpstart/Dockerfile.tt +30 -0
- data/lib/roro/cli/templates/jumpstart/docker-compose.yml +59 -0
- data/lib/roro/cli/templates/jumpstart/docker-entrypoint.sh +16 -0
- data/lib/roro/cli/templates/livereload/hosts.example +7 -0
- data/lib/roro/cli/templates/quickstart/Dockerfile.tt +20 -0
- data/{test_apps/dummy/config → lib/roro/cli/templates/quickstart}/database.yml +12 -12
- data/lib/roro/cli/templates/{greenfield → quickstart}/docker-compose.yml +4 -2
- data/lib/roro/cli/templates/quickstart/entrypoint.sh +8 -0
- data/{test_apps/dummy/app/models/concerns → lib/roro/cli/templates/roro}/.keep +0 -0
- data/lib/roro/cli/templates/roro/docker-compose.yml.tt +60 -0
- data/{test_apps/dummy/lib/assets → lib/roro/cli/templates/roro/roro}/.keep +0 -0
- data/{test_apps/dummy/lib/tasks → lib/roro/cli/templates/roro/roro/containers}/.keep +0 -0
- data/{test_apps/dummy/log → lib/roro/cli/templates/roro/roro/containers/app}/.keep +0 -0
- data/{test_apps/dummy/storage → lib/roro/cli/templates/roro/roro/containers/frontend}/.keep +0 -0
- data/lib/roro/cli/templates/roro/roro/docker-entrypoint.sh.tt +8 -0
- data/lib/roro/cli/templates/ruby_gem/.gitignore +8 -0
- data/{test_apps/dummy/test/controllers → lib/roro/cli/templates/stories}/.keep +0 -0
- data/lib/roro/cli/templates/stories/with_mysql/_service.yml +10 -0
- data/{test_apps/dummy/test/fixtures → lib/roro/cli/templates/stories/with_postgresql}/.keep +0 -0
- data/lib/roro/cli/templates/stories/with_postgresql/_service.yml +7 -0
- data/lib/roro/version.rb +1 -1
- data/roro.gemspec +6 -3
- data/vendor/cache/actionpack-6.0.3.2.gem +0 -0
- data/vendor/cache/actionview-6.0.3.2.gem +0 -0
- data/vendor/cache/activesupport-6.0.3.2.gem +0 -0
- data/vendor/cache/addressable-2.7.0.gem +0 -0
- data/vendor/cache/builder-3.2.4.gem +0 -0
- data/vendor/cache/byebug-11.1.3.gem +0 -0
- data/vendor/cache/coderay-1.1.3.gem +0 -0
- data/vendor/cache/concurrent-ruby-1.1.6.gem +0 -0
- data/vendor/cache/crass-1.0.6.gem +0 -0
- data/vendor/cache/erubi-1.9.0.gem +0 -0
- data/vendor/cache/ffi-1.13.1.gem +0 -0
- data/vendor/cache/guard-2.16.2.gem +0 -0
- data/vendor/cache/i18n-1.8.5.gem +0 -0
- data/vendor/cache/launchy-2.5.0.gem +0 -0
- data/vendor/cache/listen-3.2.1.gem +0 -0
- data/vendor/cache/loofah-2.6.0.gem +0 -0
- data/vendor/cache/lumberjack-1.2.7.gem +0 -0
- data/vendor/cache/method_source-1.0.0.gem +0 -0
- data/vendor/cache/minitest-5.14.1.gem +0 -0
- data/vendor/cache/minitest-rails-6.0.1.gem +0 -0
- data/vendor/cache/mocha-1.11.2.gem +0 -0
- data/vendor/cache/multi_json-1.15.0.gem +0 -0
- data/vendor/cache/net-scp-3.0.0.gem +0 -0
- data/vendor/cache/net-ssh-6.1.0.gem +0 -0
- data/vendor/cache/{nokogiri-1.9.1.gem → nokogiri-1.10.10.gem} +0 -0
- data/vendor/cache/notiffany-0.1.3.gem +0 -0
- data/vendor/cache/pry-0.13.1.gem +0 -0
- data/vendor/cache/public_suffix-4.0.5.gem +0 -0
- data/vendor/cache/rack-2.2.3.gem +0 -0
- data/vendor/cache/rails-html-sanitizer-1.3.0.gem +0 -0
- data/vendor/cache/railties-6.0.3.2.gem +0 -0
- data/vendor/cache/rake-13.0.1.gem +0 -0
- data/vendor/cache/rb-fsevent-0.10.4.gem +0 -0
- data/vendor/cache/rb-inotify-0.10.1.gem +0 -0
- data/vendor/cache/shoulda-4.0.0.gem +0 -0
- data/vendor/cache/shoulda-context-2.0.0.gem +0 -0
- data/vendor/cache/shoulda-matchers-4.3.0.gem +0 -0
- data/vendor/cache/sorcerer-2.0.1.gem +0 -0
- data/vendor/cache/thor-1.0.1.gem +0 -0
- data/vendor/cache/tzinfo-1.2.7.gem +0 -0
- data/vendor/cache/zeitwerk-2.4.0.gem +0 -0
- metadata +142 -276
- data/.circleci/config.yml +0 -177
- data/.circleci/setup-gem-credentials.sh +0 -3
- data/.ruby-version +0 -1
- data/Gemfile.lock +0 -165
- data/_config.yml +0 -1
- data/docker-compose.yml +0 -21
- data/docker/containers/2_5_3/Dockerfile +0 -10
- data/docker/containers/2_6_0/Dockerfile +0 -10
- data/docker/containers/app/Dockerfile +0 -10
- data/docker/env_files/circleci.env.enc +0 -5
- data/lib/roro/cli/base.rb +0 -137
- data/lib/roro/cli/templates/Gemfile.lock +0 -0
- data/lib/roro/cli/templates/Guardfile +0 -81
- data/lib/roro/cli/templates/circleci/Rakefile +0 -4
- data/lib/roro/cli/templates/circleci/config.job-example.yml +0 -33
- data/lib/roro/cli/templates/circleci/config.yml +0 -69
- data/lib/roro/cli/templates/circleci/config.yml.workflow-example +0 -62
- data/lib/roro/cli/templates/circleci/deploy.rake +0 -127
- data/lib/roro/cli/templates/config.yml +0 -71
- data/lib/roro/cli/templates/docker-compose.yml +0 -53
- data/lib/roro/cli/templates/docker/containers/app/Dockerfile.tt +0 -12
- data/lib/roro/cli/templates/docker/containers/web/Dockerfile.tt +0 -18
- data/lib/roro/cli/templates/docker/containers/web/app.conf.tt +0 -23
- data/lib/roro/cli/templates/docker/overrides/circleci.yml.tt +0 -19
- data/lib/roro/cli/templates/docker/overrides/production.yml.tt +0 -26
- data/lib/roro/cli/templates/docker/web/Dockerfile +0 -20
- data/lib/roro/cli/templates/docker/web/app.conf +0 -23
- data/lib/roro/cli/templates/gitignore +0 -27
- data/lib/roro/cli/templates/greenfield/Dockerfile +0 -8
- data/lib/roro/cli/templates/greenfield/Gemfile +0 -2
- data/lib/roro/cli/templates/greenfield/Gemfile.lock +0 -0
- data/lib/roro/cli/templates/greenfield/config/database.yml.example +0 -16
- data/lib/roro/cli/templates/lib/tasks/deploy.rake +0 -126
- data/test_apps/dummy/.gitignore +0 -27
- data/test_apps/dummy/Gemfile +0 -61
- data/test_apps/dummy/README.md +0 -24
- data/test_apps/dummy/Rakefile +0 -6
- data/test_apps/dummy/app/assets/config/manifest.js +0 -3
- data/test_apps/dummy/app/assets/javascripts/application.js +0 -16
- data/test_apps/dummy/app/assets/javascripts/cable.js +0 -13
- data/test_apps/dummy/app/assets/stylesheets/application.css +0 -15
- data/test_apps/dummy/app/channels/application_cable/channel.rb +0 -4
- data/test_apps/dummy/app/channels/application_cable/connection.rb +0 -4
- data/test_apps/dummy/app/controllers/application_controller.rb +0 -2
- data/test_apps/dummy/app/helpers/application_helper.rb +0 -2
- data/test_apps/dummy/app/jobs/application_job.rb +0 -2
- data/test_apps/dummy/app/mailers/application_mailer.rb +0 -4
- data/test_apps/dummy/app/models/application_record.rb +0 -3
- data/test_apps/dummy/app/views/layouts/application.html.erb +0 -15
- data/test_apps/dummy/app/views/layouts/mailer.html.erb +0 -13
- data/test_apps/dummy/app/views/layouts/mailer.text.erb +0 -1
- data/test_apps/dummy/bin/bundle +0 -3
- data/test_apps/dummy/bin/rails +0 -4
- data/test_apps/dummy/bin/rake +0 -4
- data/test_apps/dummy/bin/setup +0 -36
- data/test_apps/dummy/bin/update +0 -31
- data/test_apps/dummy/bin/yarn +0 -11
- data/test_apps/dummy/config.ru +0 -5
- data/test_apps/dummy/config/application.rb +0 -19
- data/test_apps/dummy/config/boot.rb +0 -4
- data/test_apps/dummy/config/cable.yml +0 -10
- data/test_apps/dummy/config/credentials.yml.enc +0 -1
- data/test_apps/dummy/config/environment.rb +0 -5
- data/test_apps/dummy/config/environments/development.rb +0 -61
- data/test_apps/dummy/config/environments/production.rb +0 -94
- data/test_apps/dummy/config/environments/test.rb +0 -46
- data/test_apps/dummy/config/initializers/application_controller_renderer.rb +0 -8
- data/test_apps/dummy/config/initializers/assets.rb +0 -14
- data/test_apps/dummy/config/initializers/backtrace_silencers.rb +0 -7
- data/test_apps/dummy/config/initializers/content_security_policy.rb +0 -25
- data/test_apps/dummy/config/initializers/cookies_serializer.rb +0 -5
- data/test_apps/dummy/config/initializers/filter_parameter_logging.rb +0 -4
- data/test_apps/dummy/config/initializers/inflections.rb +0 -16
- data/test_apps/dummy/config/initializers/mime_types.rb +0 -4
- data/test_apps/dummy/config/initializers/wrap_parameters.rb +0 -14
- data/test_apps/dummy/config/locales/en.yml +0 -33
- data/test_apps/dummy/config/puma.rb +0 -34
- data/test_apps/dummy/config/routes.rb +0 -3
- data/test_apps/dummy/config/spring.rb +0 -6
- data/test_apps/dummy/config/storage.yml +0 -34
- data/test_apps/dummy/db/seeds.rb +0 -7
- data/test_apps/dummy/package.json +0 -5
- data/test_apps/dummy/public/404.html +0 -67
- data/test_apps/dummy/public/422.html +0 -67
- data/test_apps/dummy/public/500.html +0 -66
- data/test_apps/dummy/public/apple-touch-icon-precomposed.png +0 -0
- data/test_apps/dummy/public/apple-touch-icon.png +0 -0
- data/test_apps/dummy/public/favicon.ico +0 -0
- data/test_apps/dummy/public/robots.txt +0 -1
- data/test_apps/dummy/test/application_system_test_case.rb +0 -5
- data/test_apps/dummy/test/fixtures/files/.keep +0 -0
- data/test_apps/dummy/test/helpers/.keep +0 -0
- data/test_apps/dummy/test/integration/.keep +0 -0
- data/test_apps/dummy/test/mailers/.keep +0 -0
- data/test_apps/dummy/test/models/.keep +0 -0
- data/test_apps/dummy/test/system/.keep +0 -0
- data/test_apps/dummy/test/test_helper.rb +0 -10
- data/test_apps/dummy/tmp/.keep +0 -0
- data/test_apps/dummy/vendor/.keep +0 -0
- data/test_apps/dummy_gem/.keep +0 -0
- data/test_apps/dummy_roro/.circleci/Rakefile +0 -4
- data/test_apps/dummy_roro/.circleci/config.job-example.yml +0 -33
- data/test_apps/dummy_roro/.circleci/config.yml.workflow-example +0 -62
- data/test_apps/dummy_roro/.circleci/deploy.rake +0 -127
- data/test_apps/dummy_roro/.gitignore +0 -27
- data/test_apps/dummy_roro/Gemfile +0 -64
- data/test_apps/dummy_roro/README.md +0 -24
- data/test_apps/dummy_roro/Rakefile +0 -6
- data/test_apps/dummy_roro/app/assets/config/manifest.js +0 -3
- data/test_apps/dummy_roro/app/assets/images/.keep +0 -0
- data/test_apps/dummy_roro/app/assets/javascripts/application.js +0 -16
- data/test_apps/dummy_roro/app/assets/javascripts/cable.js +0 -13
- data/test_apps/dummy_roro/app/assets/javascripts/channels/.keep +0 -0
- data/test_apps/dummy_roro/app/assets/stylesheets/application.css +0 -15
- data/test_apps/dummy_roro/app/channels/application_cable/channel.rb +0 -4
- data/test_apps/dummy_roro/app/channels/application_cable/connection.rb +0 -4
- data/test_apps/dummy_roro/app/controllers/application_controller.rb +0 -2
- data/test_apps/dummy_roro/app/controllers/concerns/.keep +0 -0
- data/test_apps/dummy_roro/app/helpers/application_helper.rb +0 -2
- data/test_apps/dummy_roro/app/jobs/application_job.rb +0 -2
- data/test_apps/dummy_roro/app/mailers/application_mailer.rb +0 -4
- data/test_apps/dummy_roro/app/models/application_record.rb +0 -3
- data/test_apps/dummy_roro/app/models/concerns/.keep +0 -0
- data/test_apps/dummy_roro/app/views/layouts/application.html.erb +0 -15
- data/test_apps/dummy_roro/app/views/layouts/mailer.html.erb +0 -13
- data/test_apps/dummy_roro/app/views/layouts/mailer.text.erb +0 -1
- data/test_apps/dummy_roro/bin/bundle +0 -3
- data/test_apps/dummy_roro/bin/rails +0 -4
- data/test_apps/dummy_roro/bin/rake +0 -4
- data/test_apps/dummy_roro/bin/setup +0 -36
- data/test_apps/dummy_roro/bin/update +0 -31
- data/test_apps/dummy_roro/bin/yarn +0 -11
- data/test_apps/dummy_roro/config.ru +0 -5
- data/test_apps/dummy_roro/config/application.rb +0 -19
- data/test_apps/dummy_roro/config/boot.rb +0 -4
- data/test_apps/dummy_roro/config/cable.yml +0 -10
- data/test_apps/dummy_roro/config/credentials.yml.enc +0 -1
- data/test_apps/dummy_roro/config/database.yml +0 -20
- data/test_apps/dummy_roro/config/environment.rb +0 -5
- data/test_apps/dummy_roro/config/environments/development.rb +0 -61
- data/test_apps/dummy_roro/config/environments/production.rb +0 -94
- data/test_apps/dummy_roro/config/environments/test.rb +0 -46
- data/test_apps/dummy_roro/config/initializers/application_controller_renderer.rb +0 -8
- data/test_apps/dummy_roro/config/initializers/assets.rb +0 -14
- data/test_apps/dummy_roro/config/initializers/backtrace_silencers.rb +0 -7
- data/test_apps/dummy_roro/config/initializers/content_security_policy.rb +0 -25
- data/test_apps/dummy_roro/config/initializers/cookies_serializer.rb +0 -5
- data/test_apps/dummy_roro/config/initializers/filter_parameter_logging.rb +0 -4
- data/test_apps/dummy_roro/config/initializers/inflections.rb +0 -16
- data/test_apps/dummy_roro/config/initializers/mime_types.rb +0 -4
- data/test_apps/dummy_roro/config/initializers/wrap_parameters.rb +0 -14
- data/test_apps/dummy_roro/config/locales/en.yml +0 -33
- data/test_apps/dummy_roro/config/puma.rb +0 -34
- data/test_apps/dummy_roro/config/routes.rb +0 -3
- data/test_apps/dummy_roro/config/spring.rb +0 -6
- data/test_apps/dummy_roro/config/storage.yml +0 -34
- data/test_apps/dummy_roro/db/seeds.rb +0 -7
- data/test_apps/dummy_roro/docker-compose.yml +0 -51
- data/test_apps/dummy_roro/docker/containers/app/Dockerfile +0 -12
- data/test_apps/dummy_roro/docker/containers/app/circleci.env +0 -2
- data/test_apps/dummy_roro/docker/containers/app/development.env +0 -2
- data/test_apps/dummy_roro/docker/containers/app/production.env +0 -2
- data/test_apps/dummy_roro/docker/containers/database/.keep +0 -0
- data/test_apps/dummy_roro/docker/containers/database/circleci.env +0 -3
- data/test_apps/dummy_roro/docker/containers/database/development.env +0 -3
- data/test_apps/dummy_roro/docker/containers/database/production.env +0 -3
- data/test_apps/dummy_roro/docker/containers/database/staging.env +0 -3
- data/test_apps/dummy_roro/docker/containers/web/Dockerfile +0 -18
- data/test_apps/dummy_roro/docker/containers/web/app.conf +0 -23
- data/test_apps/dummy_roro/docker/containers/web/circleci.env +0 -1
- data/test_apps/dummy_roro/docker/containers/web/development.env +0 -1
- data/test_apps/dummy_roro/docker/containers/web/production.env +0 -1
- data/test_apps/dummy_roro/docker/containers/web/staging.env +0 -1
- data/test_apps/dummy_roro/docker/env_files/circleci.env +0 -12
- data/test_apps/dummy_roro/docker/env_files/circleci.env.enc +0 -14
- data/test_apps/dummy_roro/docker/env_files/production.env +0 -2
- data/test_apps/dummy_roro/docker/env_files/production.env.enc +0 -2
- data/test_apps/dummy_roro/docker/keys/.keep +0 -0
- data/test_apps/dummy_roro/docker/overrides/circleci.yml +0 -19
- data/test_apps/dummy_roro/docker/overrides/production.yml +0 -26
- data/test_apps/dummy_roro/lib/assets/.keep +0 -0
- data/test_apps/dummy_roro/lib/tasks/.keep +0 -0
- data/test_apps/dummy_roro/lib/tasks/deploy.rake +0 -126
- data/test_apps/dummy_roro/log/.keep +0 -0
- data/test_apps/dummy_roro/package.json +0 -5
- data/test_apps/dummy_roro/public/404.html +0 -67
- data/test_apps/dummy_roro/public/422.html +0 -67
- data/test_apps/dummy_roro/public/500.html +0 -66
- data/test_apps/dummy_roro/public/apple-touch-icon-precomposed.png +0 -0
- data/test_apps/dummy_roro/public/apple-touch-icon.png +0 -0
- data/test_apps/dummy_roro/public/favicon.ico +0 -0
- data/test_apps/dummy_roro/public/robots.txt +0 -1
- data/test_apps/dummy_roro/storage/.keep +0 -0
- data/test_apps/dummy_roro/test/application_system_test_case.rb +0 -5
- data/test_apps/dummy_roro/test/controllers/.keep +0 -0
- data/test_apps/dummy_roro/test/fixtures/.keep +0 -0
- data/test_apps/dummy_roro/test/fixtures/files/.keep +0 -0
- data/test_apps/dummy_roro/test/helpers/.keep +0 -0
- data/test_apps/dummy_roro/test/integration/.keep +0 -0
- data/test_apps/dummy_roro/test/mailers/.keep +0 -0
- data/test_apps/dummy_roro/test/models/.keep +0 -0
- data/test_apps/dummy_roro/test/system/.keep +0 -0
- data/test_apps/dummy_roro/test/test_helper.rb +0 -10
- data/test_apps/dummy_roro/tmp/.keep +0 -0
- data/test_apps/dummy_roro/vendor/.keep +0 -0
- data/test_apps/greenfield/.keep +0 -0
- data/vendor/cache/actionpack-5.2.2.gem +0 -0
- data/vendor/cache/actionview-5.2.2.gem +0 -0
- data/vendor/cache/activesupport-5.2.2.gem +0 -0
- data/vendor/cache/addressable-2.5.2.gem +0 -0
- data/vendor/cache/builder-3.2.3.gem +0 -0
- data/vendor/cache/coderay-1.1.2.gem +0 -0
- data/vendor/cache/concurrent-ruby-1.1.4.gem +0 -0
- data/vendor/cache/crass-1.0.4.gem +0 -0
- data/vendor/cache/erubi-1.8.0.gem +0 -0
- data/vendor/cache/ffi-1.9.25.gem +0 -0
- data/vendor/cache/guard-2.15.0.gem +0 -0
- data/vendor/cache/i18n-1.3.0.gem +0 -0
- data/vendor/cache/launchy-2.4.3.gem +0 -0
- data/vendor/cache/listen-3.1.5.gem +0 -0
- data/vendor/cache/loofah-2.2.3.gem +0 -0
- data/vendor/cache/lumberjack-1.0.13.gem +0 -0
- data/vendor/cache/method_source-0.9.2.gem +0 -0
- data/vendor/cache/minitest-5.11.3.gem +0 -0
- data/vendor/cache/minitest-rails-3.0.0.gem +0 -0
- data/vendor/cache/multi_json-1.13.1.gem +0 -0
- data/vendor/cache/net-scp-2.0.0.gem +0 -0
- data/vendor/cache/net-ssh-5.2.0.gem +0 -0
- data/vendor/cache/notiffany-0.1.1.gem +0 -0
- data/vendor/cache/pry-0.12.2.gem +0 -0
- data/vendor/cache/public_suffix-3.0.3.gem +0 -0
- data/vendor/cache/rack-2.0.6.gem +0 -0
- data/vendor/cache/rails-html-sanitizer-1.0.4.gem +0 -0
- data/vendor/cache/railties-5.2.2.gem +0 -0
- data/vendor/cache/rake-10.5.0.gem +0 -0
- data/vendor/cache/rb-fsevent-0.10.3.gem +0 -0
- data/vendor/cache/rb-inotify-0.10.0.gem +0 -0
- data/vendor/cache/ruby_dep-1.5.0.gem +0 -0
- data/vendor/cache/shoulda-3.6.0.gem +0 -0
- data/vendor/cache/shoulda-context-1.2.2.gem +0 -0
- data/vendor/cache/shoulda-matchers-3.1.2.gem +0 -0
- data/vendor/cache/sorcerer-1.0.2.gem +0 -0
- data/vendor/cache/thor-0.20.3.gem +0 -0
- data/vendor/cache/tzinfo-1.2.5.gem +0 -0
@@ -0,0 +1,79 @@
|
|
1
|
+
# require 'openssl'
|
2
|
+
# require 'base64'
|
3
|
+
# require 'handsome_fencer/crypto'
|
4
|
+
|
5
|
+
# module Roro
|
6
|
+
|
7
|
+
# class CLI < Thor
|
8
|
+
|
9
|
+
# include Thor::Actions
|
10
|
+
# include HandsomeFencer::Crypto
|
11
|
+
|
12
|
+
# desc "generate_keys", "Generates keys for all environments. If you have .env files like './**/production.env' and './**/staging.env' this command assumes you need keys for the production and staging environments, and will generate them for you."
|
13
|
+
|
14
|
+
# def generate_keys
|
15
|
+
# generate_key
|
16
|
+
# end
|
17
|
+
|
18
|
+
# desc "generate_key", "Generate a key for each environment"
|
19
|
+
# method_option :environment, type: :hash, default: {}, desc: "Pass a list of environment variables like so: env:var", banner: "development, staging"
|
20
|
+
|
21
|
+
# def generate_key(*args)
|
22
|
+
# environments = args.first ? [args.first] : gather_environments
|
23
|
+
# environments.each do |environment|
|
24
|
+
# confirm_files_decrypted?(environment)
|
25
|
+
# create_file "docker/keys/#{environment}.key", encoded_key
|
26
|
+
# end
|
27
|
+
# end
|
28
|
+
|
29
|
+
# no_commands do
|
30
|
+
|
31
|
+
# def encoded_key
|
32
|
+
# @cipher = OpenSSL::Cipher.new 'AES-128-CBC'
|
33
|
+
# @salt = '8 octets'
|
34
|
+
# @new_key = @cipher.random_key
|
35
|
+
# Base64.encode64(@new_key)
|
36
|
+
# end
|
37
|
+
|
38
|
+
# def gather_environments
|
39
|
+
# environments = []
|
40
|
+
# ['.env', '.env.enc'].each do |extension|
|
41
|
+
|
42
|
+
# HandsomeFencer::Crypto.source_files('.', extension).each do |env_file|
|
43
|
+
# environments << env_file.split('/').last.split(extension).last
|
44
|
+
# end
|
45
|
+
# end
|
46
|
+
# environments.uniq
|
47
|
+
# end
|
48
|
+
|
49
|
+
# def confirm_files_decrypted?(environment)
|
50
|
+
# orphan_encrypted = []
|
51
|
+
# HandsomeFencer::Crypto.source_files('.', '.env.enc').each do |file|
|
52
|
+
# orphan_encrypted << file unless File.exist? file.split('.enc').first
|
53
|
+
# end
|
54
|
+
|
55
|
+
# if !orphan_encrypted.empty?
|
56
|
+
# raise Roro::Error.new("You have an encrypted files (.env.enc) #{orphan_encrypted} that do not have corresponding decrypted files (.env). Please decrypt or remove these encrypted files before generating a new key for #{environment}.")
|
57
|
+
# end
|
58
|
+
# true
|
59
|
+
# end
|
60
|
+
# end
|
61
|
+
# end
|
62
|
+
|
63
|
+
# # desc "generate keys", "Generate keys on a per-environment basis"
|
64
|
+
# #
|
65
|
+
# # method_option :environment, type: :string, default: {}, desc: "Pass a list of environment variables like so: env:var", banner: "development, staging"
|
66
|
+
# #
|
67
|
+
|
68
|
+
# # def generate_keys
|
69
|
+
# # default_environments = %w[circleci development production]
|
70
|
+
# # environments = args.first ? [args.first] : default_environments
|
71
|
+
# # environments.each do |environment|
|
72
|
+
# # @cipher = OpenSSL::Cipher.new 'AES-128-CBC'
|
73
|
+
# # @salt = '8 octets'
|
74
|
+
# # @new_key = @cipher.random_key
|
75
|
+
# #
|
76
|
+
# # create_file "docker/keys/#{environment}.key", Base64.encode64(@new_key)
|
77
|
+
# # end
|
78
|
+
# # end
|
79
|
+
# end
|
@@ -16,7 +16,7 @@ module Roro
|
|
16
16
|
end
|
17
17
|
|
18
18
|
desc "generate_key", "Generate a key for each environment"
|
19
|
-
method_option :environment, type: :
|
19
|
+
method_option :environment, type: :hash, default: {}, desc: "Pass a list of environment variables like so: env:var", banner: "development, staging"
|
20
20
|
|
21
21
|
def generate_key(*args)
|
22
22
|
environments = args.first ? [args.first] : gather_environments
|
data/lib/roro/cli/greenfield.rb
CHANGED
@@ -7,90 +7,35 @@ module Roro
|
|
7
7
|
include Thor::Actions
|
8
8
|
|
9
9
|
desc "greenfield", "Greenfield a brand new rails app using Docker's instructions"
|
10
|
-
|
10
|
+
|
11
11
|
method_option :env_vars, type: :hash, default: {}, desc: "Pass a list of environment variables like so: env:var", banner: "key1:value1 key2:value2"
|
12
12
|
method_option :interactive, desc: "Set up your environment variables as you go."
|
13
13
|
method_option :force, desc: "force over-write of existing files"
|
14
|
-
|
14
|
+
|
15
|
+
|
15
16
|
def greenfield
|
16
|
-
|
17
|
+
confirm_directory_empty
|
17
18
|
confirm_dependencies
|
19
|
+
remove_roro_artifacts
|
20
|
+
configure_for_greenfielding
|
18
21
|
copy_greenfield_files
|
19
|
-
|
20
|
-
chown_if_required
|
21
|
-
as_system('sudo docker-compose build')
|
22
|
-
as_system('mv -f config/database.yml.example config/database.yml')
|
23
|
-
as_system('docker-compose up --build --force-recreate -d ')
|
24
|
-
as_system 'docker-compose run web bin/rails db:create'
|
22
|
+
run_greenfield_commands
|
25
23
|
end
|
26
|
-
|
24
|
+
|
27
25
|
no_commands do
|
28
|
-
|
29
|
-
def
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
action = "system 'sudo chown -R $USER .'"
|
37
|
-
msg = []
|
38
|
-
msg << ""
|
39
|
-
msg << delineator
|
40
|
-
msg << warning
|
41
|
-
msg << ""
|
42
|
-
msg.join("\n\n")
|
43
|
-
puts msg
|
44
|
-
eval(action)
|
45
|
-
end
|
46
|
-
|
47
|
-
def delineator
|
48
|
-
("-" * 80)
|
49
|
-
end
|
50
|
-
|
51
|
-
def confirm_dependency(options)
|
52
|
-
msg = []
|
53
|
-
msg << ""
|
54
|
-
msg << delineator
|
55
|
-
msg << "It looks like #{options[:warning]}. The following bash command returns false:"
|
56
|
-
msg << "\t$ #{options[:system_query]}"
|
57
|
-
msg << "Please try these instructions:"
|
58
|
-
msg << ("\t" + options[:suggestion])
|
59
|
-
msg << delineator
|
60
|
-
conditional = options[:conditional] ? eval(options[:conditional]) : system(options[:system_query])
|
61
|
-
if conditional == false
|
62
|
-
raise(Roro::Error.new(msg.join("\n\n")))
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
def confirm_dependencies
|
67
|
-
dependencies = [
|
68
|
-
{
|
69
|
-
system_query: "ls -A",
|
70
|
-
warning: "this is not an empty directory. Roro will not greenfield a new Rails app unless either a) the current directory is empty or b) you run greenfield with the --force flag",
|
71
|
-
suggestion: "$ roro greenfield --force",
|
72
|
-
conditional: "Dir.glob('*').empty?"
|
73
|
-
}, {
|
74
|
-
|
75
|
-
system_query: "which docker",
|
76
|
-
warning: "Docker isn't installed",
|
77
|
-
suggestion: "https://docs.docker.com/install/"
|
78
|
-
}, {
|
79
|
-
system_query: "which docker-compose",
|
80
|
-
warning: "Docker Compose isn't installed",
|
81
|
-
suggestion: "https://docs.docker.com/compose/install/"
|
82
|
-
|
83
|
-
}, {
|
84
|
-
system_query: "docker info",
|
85
|
-
warning: "the Docker daemon isn't running",
|
86
|
-
suggestion: "https://docs.docker.com/config/daemon/#start-the-daemon-manually"
|
87
|
-
}
|
88
|
-
]
|
89
|
-
|
90
|
-
dependencies.each do |dependency|
|
91
|
-
confirm_dependency(dependency)
|
92
|
-
end
|
26
|
+
|
27
|
+
def configure_for_greenfielding
|
28
|
+
@config ||= Roro::Configuration.new(options)
|
29
|
+
end
|
30
|
+
|
31
|
+
def run_greenfield_commands
|
32
|
+
system "DOCKER_BUILDKIT=1 docker build --file Dockerfile --output . ."
|
33
|
+
rollon
|
93
34
|
end
|
35
|
+
|
36
|
+
def copy_greenfield_files
|
37
|
+
template 'greenfield/Dockerfile.tt', 'Dockerfile', @config.app
|
38
|
+
end
|
94
39
|
end
|
95
40
|
end
|
96
41
|
end
|
data/lib/roro/cli/rollon.rb
CHANGED
@@ -1,21 +1,84 @@
|
|
1
|
+
require_relative 'rollon/stories'
|
2
|
+
|
1
3
|
module Roro
|
2
4
|
|
3
5
|
class CLI < Thor
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
-
method_option :interactive, desc: "Set up your environment variables as
|
7
|
+
desc "rollon", "Generates files for and makes changes to your app
|
8
|
+
so it can run using Docker containers."
|
9
|
+
method_option :interactive, desc: "Set up your environment variables as
|
10
|
+
you go."
|
8
11
|
|
9
12
|
def rollon
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
+
confirm_directory_not_empty
|
14
|
+
confirm_dependencies
|
15
|
+
remove_roro_artifacts
|
16
|
+
|
17
|
+
configure_for_rollon
|
18
|
+
|
19
|
+
copy_roro_files
|
20
|
+
generate_roro_config
|
21
|
+
startup_commands
|
22
|
+
end
|
23
|
+
|
24
|
+
no_commands do
|
25
|
+
|
26
|
+
def configure_for_rollon
|
27
|
+
@config ||= Roro::Configuration.new(options)
|
28
|
+
end
|
29
|
+
|
30
|
+
def yaml_from_template(file)
|
31
|
+
File.read(File.dirname(__FILE__) + "/templates/#{file}")
|
32
|
+
end
|
33
|
+
|
34
|
+
def copy_roro_files
|
35
|
+
configure_database
|
36
|
+
directory 'roro', './', @config.app
|
37
|
+
template 'base/Dockerfile.tt', 'roro/containers/app/Dockerfile', @config.app
|
38
|
+
take_thor_actions
|
39
|
+
end
|
40
|
+
|
41
|
+
def take_thor_actions
|
42
|
+
@config.thor_actions.each {|k, v| eval(k) if v.eql?('y') }
|
43
|
+
end
|
44
|
+
|
45
|
+
def startup_commands
|
46
|
+
system 'docker-compose build'
|
47
|
+
system 'docker-compose run web bundle'
|
48
|
+
system 'docker-compose run web bin/rails webpacker:install'
|
49
|
+
system 'docker-compose run web bin/rails yarn:install'
|
50
|
+
system 'docker-compose run web bin/rails db:create'
|
51
|
+
system 'docker-compose run web bin/rails db:migrate'
|
52
|
+
system 'docker-compose up'
|
53
|
+
end
|
54
|
+
|
55
|
+
def confirm_directory_empty
|
56
|
+
confirm = confirm_dependency({
|
57
|
+
system_query: "ls -A",
|
58
|
+
warning: "this is not an empty directory. Roro will not greenfield a new Rails app unless either a) the current directory is empty or b) you run greenfield with the --force flag",
|
59
|
+
suggestion: "$ roro greenfield --force",
|
60
|
+
conditional: "Dir.glob('*').empty?" })
|
61
|
+
confirm || true
|
13
62
|
end
|
14
|
-
copy_base_files
|
15
|
-
append_to_existing_files
|
16
|
-
insert_into_file 'Gemfile', "gem 'sshkit'\n\n", before: "group :development, :test do"
|
17
|
-
insert_into_file 'Gemfile', "\n\tgem 'handsome_fencer-test'", after: "group :development, :test do"
|
18
63
|
|
64
|
+
|
65
|
+
def confirm_dependency(options)
|
66
|
+
msg = []
|
67
|
+
msg << ""
|
68
|
+
msg << delineator
|
69
|
+
msg << "It looks like #{options[:warning]}. The following bash command returns false:"
|
70
|
+
msg << "\t$ #{options[:system_query]}"
|
71
|
+
msg << "Please try these instructions:"
|
72
|
+
msg << ("\t" + options[:suggestion])
|
73
|
+
msg << delineator
|
74
|
+
conditional = options[:conditional] ? eval(options[:conditional]) : system(options[:system_query])
|
75
|
+
if conditional == false
|
76
|
+
raise(Roro::Error.new(msg.join("\n\n")))
|
77
|
+
else
|
78
|
+
true
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
19
82
|
end
|
20
83
|
end
|
21
|
-
end
|
84
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Roro
|
2
|
+
|
3
|
+
class CLI < Thor
|
4
|
+
|
5
|
+
no_commands do
|
6
|
+
|
7
|
+
def configure_database
|
8
|
+
database = @config.thor_actions['configure_database']
|
9
|
+
vendor = @config.master['services']['database']['vendors']
|
10
|
+
case database
|
11
|
+
when 'p'
|
12
|
+
@config.app['database_vendor'] = 'postgresql'
|
13
|
+
@config.app['postgresql_env_vars'] = vendor['postgresql']['env_vars']
|
14
|
+
configure_for_pg
|
15
|
+
when 'm'
|
16
|
+
@config.app['database_vendor'] = 'mysql'
|
17
|
+
@config.app['mysql_env_vars'] = vendor['mysql']['env_vars']
|
18
|
+
configure_for_mysql
|
19
|
+
end
|
20
|
+
|
21
|
+
%w(development production test staging ci).each do |environment|
|
22
|
+
template(
|
23
|
+
'base/.env/web.env.tt',
|
24
|
+
"roro/containers/app/#{environment}.env", @config.app
|
25
|
+
)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Roro
|
2
|
+
|
3
|
+
class CLI < Thor
|
4
|
+
|
5
|
+
no_commands do
|
6
|
+
|
7
|
+
def configure_for_mysql
|
8
|
+
insert_db_gem('mysql2')
|
9
|
+
copy_file 'base/config/database.mysql.yml', 'config/database.yml', force: true
|
10
|
+
config = @config.app.clone
|
11
|
+
|
12
|
+
%w(development production test staging ci).each do |environment|
|
13
|
+
config['rails_env'] = environment
|
14
|
+
|
15
|
+
source = 'base/.env/database.mysql.env.tt'
|
16
|
+
target = "roro/containers/database/#{environment}.env"
|
17
|
+
template( source, target, config )
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Roro
|
2
|
+
|
3
|
+
class CLI < Thor
|
4
|
+
|
5
|
+
no_commands do
|
6
|
+
|
7
|
+
def configure_for_pg
|
8
|
+
insert_db_gem('pg')
|
9
|
+
copy_file 'base/config/database.pg.yml', 'config/database.yml', force: true
|
10
|
+
config = @config.app.clone
|
11
|
+
%w(development production test staging ci).each do |environment|
|
12
|
+
config['rails_env'] = environment
|
13
|
+
|
14
|
+
source = 'base/.env/database.pg.env.tt'
|
15
|
+
target = "roro/containers/database/#{environment}.env"
|
16
|
+
template( source, target, config )
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,157 @@
|
|
1
|
+
---
|
2
|
+
main_app_name: <%= Dir.pwd.split('/').last %>
|
3
|
+
developer:
|
4
|
+
name: your-name
|
5
|
+
email: your.email@example.com
|
6
|
+
|
7
|
+
services:
|
8
|
+
server_app:
|
9
|
+
name: app
|
10
|
+
vendors:
|
11
|
+
rails:
|
12
|
+
version:
|
13
|
+
image:
|
14
|
+
official_name: ruby
|
15
|
+
variants:
|
16
|
+
- alpine
|
17
|
+
- buster
|
18
|
+
- slim
|
19
|
+
- slim-buster
|
20
|
+
- stretch
|
21
|
+
|
22
|
+
choices:
|
23
|
+
|
24
|
+
config_std_out_true:
|
25
|
+
question: |
|
26
|
+
The team at Heroku, among others, recommend logging to STDOUT
|
27
|
+
and treating your logs as streams. We'll set this to
|
28
|
+
true as an environment variable but it may also be helpful
|
29
|
+
to configure './config/boot.rb' with '$stdout.sync = true'
|
30
|
+
just in case that doesn't work.
|
31
|
+
Would you like to configure this?
|
32
|
+
choices:
|
33
|
+
y: 'Yes'
|
34
|
+
n: 'No'
|
35
|
+
default: y
|
36
|
+
|
37
|
+
insert_roro_gem_into_gemfile:
|
38
|
+
question: |
|
39
|
+
Many developers believe it's good idea to secure sensitive
|
40
|
+
environment files and variables. You can use RoRo to
|
41
|
+
generate secret keys known only to you for use in any
|
42
|
+
environment, and then use them to encrypt and decrypt
|
43
|
+
these files. Would you like to add RoRo to your Gemfile?
|
44
|
+
choices:
|
45
|
+
y: 'Yes'
|
46
|
+
n: 'No'
|
47
|
+
default: y
|
48
|
+
|
49
|
+
gitignore_sensitive_files:
|
50
|
+
question: |
|
51
|
+
If you plan to use the environment files RoRo generates for
|
52
|
+
your own environment variables, it's a good idea to keep
|
53
|
+
these files out of source control. Would you like RoRo to
|
54
|
+
modify your .gitignore file to accomplish this for you ?
|
55
|
+
choices:
|
56
|
+
y: 'Yes'
|
57
|
+
n: 'No'
|
58
|
+
default: y
|
59
|
+
|
60
|
+
insert_hfci_gem_into_gemfile:
|
61
|
+
question: |
|
62
|
+
Jim Weirich passed too soon and remains missed. In addition
|
63
|
+
to Rake, Jim wrote a beautiful gem called 'Given' that makes
|
64
|
+
Rspec and Minitest less ugly and thus your tests more easy to
|
65
|
+
write. Would you like to install a gem called
|
66
|
+
handsome_fencer-test that allows you to try it out?
|
67
|
+
choices:
|
68
|
+
y: 'Yes'
|
69
|
+
n: 'No'
|
70
|
+
default: n
|
71
|
+
|
72
|
+
backup_existing_files:
|
73
|
+
question: |
|
74
|
+
RoRo will be generating a number of files, some of which will
|
75
|
+
replace existing ones. Would you like to back them up?
|
76
|
+
choices:
|
77
|
+
y: 'Yes'
|
78
|
+
n: 'No'
|
79
|
+
default: n
|
80
|
+
|
81
|
+
copy_dockerignore:
|
82
|
+
question: |
|
83
|
+
Would you like to create a .dockerignore file?
|
84
|
+
choices:
|
85
|
+
y: 'Yes'
|
86
|
+
n: 'No'
|
87
|
+
default: y
|
88
|
+
|
89
|
+
configure_database:
|
90
|
+
question: |
|
91
|
+
RoRo can reliably dockerize your Rails app with either
|
92
|
+
MySQL or PostgreSQL stories. Which story would you prefer
|
93
|
+
to roll on?
|
94
|
+
choices:
|
95
|
+
p: PostgreSQL
|
96
|
+
m: MySQL
|
97
|
+
default: p
|
98
|
+
|
99
|
+
env_vars:
|
100
|
+
DATABASE_HOST: database
|
101
|
+
|
102
|
+
database:
|
103
|
+
name: database
|
104
|
+
vendor: postgresql
|
105
|
+
vendors:
|
106
|
+
postgresql:
|
107
|
+
images:
|
108
|
+
official_name:
|
109
|
+
versions:
|
110
|
+
- latest
|
111
|
+
env_vars:
|
112
|
+
POSTGRES_USER: postgres
|
113
|
+
POSTGRES_PASSWORD: your-postgres-password
|
114
|
+
|
115
|
+
mysql:
|
116
|
+
env_vars:
|
117
|
+
MYSQL_ROOT_PASSWORD: root
|
118
|
+
MYSQL_PASSWORD: root
|
119
|
+
MYSQL_USERNAME: root
|
120
|
+
MYSQL_DATABASE_PORT: '3306'
|
121
|
+
|
122
|
+
frontend:
|
123
|
+
name: frontend
|
124
|
+
vendors:
|
125
|
+
|
126
|
+
- frontend
|
127
|
+
- vuejs
|
128
|
+
- react
|
129
|
+
- angular
|
130
|
+
webserver:
|
131
|
+
default: nginx
|
132
|
+
vendors:
|
133
|
+
- nginx
|
134
|
+
application_server:
|
135
|
+
name: appserver
|
136
|
+
vendors:
|
137
|
+
- unicorn:
|
138
|
+
- puma:
|
139
|
+
registries:
|
140
|
+
dockerhub:
|
141
|
+
env_vars:
|
142
|
+
DOCKERHUB_EMAIL: your-docker-hub-email
|
143
|
+
DOCKERHUB_ORG: your-docker-hub-org-name
|
144
|
+
DOCKERHUB_PASSWORD: your-docker-hub-password
|
145
|
+
DOCKERHUB_USER: your-docker-hub-user-name
|
146
|
+
|
147
|
+
ci_cd:
|
148
|
+
semaphore:
|
149
|
+
circleci:
|
150
|
+
env_vars:
|
151
|
+
DEPLOY_TAG: "${CIRCLE_SHA1:0:7}"
|
152
|
+
|
153
|
+
deployment:
|
154
|
+
env_vars:
|
155
|
+
SERVER_HOST: "ip-address-of-your-server"
|
156
|
+
SERVER_PORT: '22'
|
157
|
+
SERVER_USER: root
|