disco_app 0.15.2 → 0.18.1
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/Rakefile +1 -5
- data/app/clients/disco_app/api_client.rb +25 -19
- data/app/clients/disco_app/graphql_client.rb +85 -0
- data/app/controllers/disco_app/admin/app_settings_controller.rb +2 -0
- data/app/controllers/disco_app/admin/application_controller.rb +1 -0
- data/app/controllers/disco_app/admin/concerns/app_settings_controller.rb +2 -1
- data/app/controllers/disco_app/admin/concerns/authenticated_controller.rb +5 -3
- data/app/controllers/disco_app/admin/concerns/plans_controller.rb +3 -2
- data/app/controllers/disco_app/admin/concerns/shops_controller.rb +1 -0
- data/app/controllers/disco_app/admin/concerns/sources_controller.rb +2 -1
- data/app/controllers/disco_app/admin/concerns/subscriptions_controller.rb +3 -2
- data/app/controllers/disco_app/admin/plans_controller.rb +2 -0
- data/app/controllers/disco_app/admin/resources/shops_controller.rb +2 -0
- data/app/controllers/disco_app/admin/shops_controller.rb +2 -0
- data/app/controllers/disco_app/admin/sources_controller.rb +2 -0
- data/app/controllers/disco_app/admin/subscriptions_controller.rb +2 -0
- data/app/controllers/disco_app/charges_controller.rb +6 -7
- data/app/controllers/disco_app/concerns/app_proxy_controller.rb +6 -6
- data/app/controllers/disco_app/concerns/authenticated_controller.rb +26 -27
- data/app/controllers/disco_app/concerns/carrier_request_controller.rb +22 -11
- data/app/controllers/disco_app/concerns/user_authenticated_controller.rb +1 -0
- data/app/controllers/disco_app/concerns/webhooks_controller.rb +13 -12
- data/app/controllers/disco_app/flow/actions_controller.rb +9 -0
- data/app/controllers/disco_app/flow/concerns/actions_controller.rb +23 -0
- data/app/controllers/disco_app/flow/concerns/trigger_usage_controller.rb +29 -0
- data/app/controllers/disco_app/flow/concerns/verifies_flow_payload.rb +39 -0
- data/app/controllers/disco_app/flow/trigger_usage_controller.rb +9 -0
- data/app/controllers/disco_app/frame_controller.rb +0 -1
- data/app/controllers/disco_app/install_controller.rb +3 -6
- data/app/controllers/disco_app/subscriptions_controller.rb +12 -4
- data/app/controllers/disco_app/user_sessions_controller.rb +1 -0
- data/app/controllers/disco_app/webhooks_controller.rb +2 -0
- data/app/controllers/sessions_controller.rb +5 -6
- data/app/helpers/disco_app/application_helper.rb +7 -7
- data/app/jobs/disco_app/app_installed_job.rb +2 -0
- data/app/jobs/disco_app/app_uninstalled_job.rb +2 -0
- data/app/jobs/disco_app/concerns/app_installed_job.rb +2 -3
- data/app/jobs/disco_app/concerns/app_uninstalled_job.rb +2 -1
- data/app/jobs/disco_app/concerns/customers_data_request_job.rb +13 -0
- data/app/jobs/disco_app/concerns/customers_redact_job.rb +13 -0
- data/app/jobs/disco_app/concerns/render_asset_group_job.rb +1 -0
- data/app/jobs/disco_app/concerns/shop_redact_job.rb +13 -0
- data/app/jobs/disco_app/concerns/shop_update_job.rb +9 -2
- data/app/jobs/disco_app/concerns/subscription_changed_job.rb +2 -1
- data/app/jobs/disco_app/concerns/synchronise_carrier_service_job.rb +8 -7
- data/app/jobs/disco_app/concerns/synchronise_resources_job.rb +1 -0
- data/app/jobs/disco_app/concerns/synchronise_users_job.rb +6 -3
- data/app/jobs/disco_app/concerns/synchronise_webhooks_job.rb +24 -11
- data/app/jobs/disco_app/customers_data_request_job.rb +5 -0
- data/app/jobs/disco_app/customers_redact_job.rb +5 -0
- data/app/jobs/disco_app/flow/process_action_job.rb +11 -0
- data/app/jobs/disco_app/flow/process_trigger_job.rb +11 -0
- data/app/jobs/disco_app/render_asset_group_job.rb +2 -0
- data/app/jobs/disco_app/shop_job.rb +10 -10
- data/app/jobs/disco_app/shop_redact_job.rb +5 -0
- data/app/jobs/disco_app/shop_update_job.rb +2 -0
- data/app/jobs/disco_app/subscription_changed_job.rb +2 -0
- data/app/jobs/disco_app/synchronise_carrier_service_job.rb +2 -0
- data/app/jobs/disco_app/synchronise_resources_job.rb +2 -0
- data/app/jobs/disco_app/synchronise_users_job.rb +2 -0
- data/app/jobs/disco_app/synchronise_webhooks_job.rb +2 -0
- data/app/models/application_record.rb +2 -0
- data/app/models/disco_app/app_settings.rb +2 -0
- data/app/models/disco_app/application_charge.rb +1 -1
- data/app/models/disco_app/concerns/app_settings.rb +2 -0
- data/app/models/disco_app/concerns/can_be_liquified.rb +29 -14
- data/app/models/disco_app/concerns/has_metafields.rb +1 -2
- data/app/models/disco_app/concerns/plan.rb +3 -4
- data/app/models/disco_app/concerns/plan_code.rb +1 -2
- data/app/models/disco_app/concerns/renders_assets.rb +15 -21
- data/app/models/disco_app/concerns/shop.rb +20 -14
- data/app/models/disco_app/concerns/source.rb +2 -3
- data/app/models/disco_app/concerns/subscription.rb +3 -3
- data/app/models/disco_app/concerns/synchronises.rb +10 -15
- data/app/models/disco_app/concerns/taggable.rb +1 -0
- data/app/models/disco_app/concerns/user.rb +3 -2
- data/app/models/disco_app/flow/action.rb +9 -0
- data/app/models/disco_app/flow/concerns/action.rb +27 -0
- data/app/models/disco_app/flow/concerns/trigger.rb +28 -0
- data/app/models/disco_app/flow/concerns/trigger_usage.rb +17 -0
- data/app/models/disco_app/flow/trigger.rb +9 -0
- data/app/models/disco_app/flow/trigger_usage.rb +9 -0
- data/app/models/disco_app/plan.rb +2 -0
- data/app/models/disco_app/plan_code.rb +2 -0
- data/app/models/disco_app/session_storage.rb +5 -2
- data/app/models/disco_app/shop.rb +2 -0
- data/app/models/disco_app/source.rb +2 -0
- data/app/models/disco_app/subscription.rb +2 -0
- data/app/models/disco_app/user.rb +2 -0
- data/app/resources/disco_app/admin/resources/concerns/shop_resource.rb +12 -15
- data/app/resources/disco_app/admin/resources/shop_resource.rb +1 -0
- data/app/services/disco_app/carrier_request_service.rb +3 -3
- data/app/services/disco_app/charges_service.rb +26 -34
- data/app/services/disco_app/flow/create_action.rb +35 -0
- data/app/services/disco_app/flow/create_trigger.rb +34 -0
- data/app/services/disco_app/flow/process_action.rb +50 -0
- data/app/services/disco_app/flow/process_trigger.rb +72 -0
- data/app/services/disco_app/flow/update_trigger_usage.rb +42 -0
- data/app/services/disco_app/partner_app_service.rb +1 -1
- data/app/services/disco_app/proxy_service.rb +2 -2
- data/app/services/disco_app/request_validation_service.rb +2 -2
- data/app/services/disco_app/subscription_service.rb +60 -32
- data/app/services/disco_app/webhook_service.rb +9 -11
- data/app/views/layouts/admin.html.erb +1 -2
- data/app/views/layouts/application.html.erb +1 -2
- data/app/views/layouts/embedded_app.html.erb +2 -4
- data/app/views/layouts/embedded_app_modal.html.erb +2 -3
- data/app/views/shopify_app/sessions/new.html.erb +2 -4
- data/config/routes.rb +11 -3
- data/db/migrate/20150525000000_create_shops_if_not_existent.rb +80 -80
- data/db/migrate/20170315062548_create_disco_app_sources.rb +2 -0
- data/db/migrate/20170315062629_add_sources_to_shop_subscriptions.rb +3 -1
- data/db/migrate/20170327214540_create_disco_app_users.rb +2 -1
- data/db/migrate/20170606160751_fix_disco_app_users_index.rb +2 -0
- data/db/migrate/20181229100327_create_flow_actions_and_triggers.rb +32 -0
- data/db/migrate/20200405000000_create_flow_trigger_usages.rb +16 -0
- data/lib/disco_app/configuration.rb +12 -5
- data/lib/disco_app/constants.rb +4 -2
- data/lib/disco_app/engine.rb +1 -1
- data/lib/disco_app/session.rb +1 -0
- data/lib/disco_app/support/file_fixtures.rb +2 -1
- data/lib/disco_app/version.rb +3 -1
- data/lib/generators/disco_app/install/USAGE +5 -0
- data/lib/generators/disco_app/install/install_generator.rb +297 -0
- data/lib/generators/disco_app/{templates → install/templates}/assets/javascripts/application.js +0 -0
- data/lib/generators/disco_app/{templates → install/templates}/assets/javascripts/components.js +0 -0
- data/lib/generators/disco_app/{templates → install/templates}/assets/stylesheets/application.scss +0 -0
- data/lib/generators/disco_app/install/templates/config/appsignal.yml +12 -0
- data/lib/generators/disco_app/install/templates/config/cable.yml.tt +11 -0
- data/lib/generators/disco_app/{templates → install/templates}/config/database.yml.tt +6 -3
- data/lib/generators/disco_app/install/templates/config/environments/staging.rb +108 -0
- data/lib/generators/disco_app/{templates → install/templates}/config/puma.rb +0 -0
- data/lib/generators/disco_app/{templates → install/templates}/controllers/home_controller.rb +1 -0
- data/lib/generators/disco_app/{templates → install/templates}/initializers/disco_app.rb +5 -0
- data/lib/generators/disco_app/install/templates/initializers/session_store.rb +2 -0
- data/lib/generators/disco_app/install/templates/initializers/shopify_app.rb +11 -0
- data/lib/generators/disco_app/{templates → install/templates}/initializers/shopify_session_repository.rb +0 -0
- data/lib/generators/disco_app/install/templates/initializers/timber.rb +4 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/.editorconfig +0 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/.env +7 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/.env.local +4 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/.gitignore +6 -0
- data/lib/generators/disco_app/install/templates/root/.rspec +1 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/.rubocop.yml +315 -217
- data/lib/generators/disco_app/install/templates/root/.tool-versions +2 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/CHECKS +0 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/Procfile +0 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/README.md +0 -0
- data/lib/generators/disco_app/install/templates/root/package.json.tt +17 -0
- data/lib/generators/disco_app/install/templates/spec/rails_helper.rb +40 -0
- data/lib/generators/disco_app/install/templates/spec/spec_helper.rb +24 -0
- data/lib/generators/disco_app/install/templates/spec/support/active_job.rb +13 -0
- data/lib/generators/disco_app/install/templates/spec/support/coveralls.rb +3 -0
- data/lib/generators/disco_app/install/templates/spec/support/database_cleaner.rb +17 -0
- data/lib/generators/disco_app/install/templates/spec/support/factory_bot.rb +3 -0
- data/lib/generators/disco_app/install/templates/spec/support/helpers/json_helper.rb +13 -0
- data/lib/generators/disco_app/install/templates/spec/support/shared_examples/a_synchronise_job.rb +12 -0
- data/lib/generators/disco_app/install/templates/spec/support/shoulda.rb +6 -0
- data/lib/generators/disco_app/install/templates/spec/support/vcr.rb +14 -0
- data/lib/generators/disco_app/install/templates/spec/support/webmock.rb +8 -0
- data/lib/generators/disco_app/{templates → install/templates}/views/home/index.html.erb +0 -0
- data/lib/generators/disco_app/react/USAGE +5 -0
- data/lib/generators/disco_app/react/react_generator.rb +108 -0
- data/lib/generators/disco_app/react/templates/app/controllers/embedded/api/base_controller.rb +18 -0
- data/lib/generators/disco_app/react/templates/app/controllers/embedded/api/home_controller.rb +10 -0
- data/lib/generators/disco_app/react/templates/app/controllers/embedded/api/shops_controller.rb +11 -0
- data/lib/generators/disco_app/react/templates/app/controllers/embedded/api/users_controller.rb +11 -0
- data/lib/generators/disco_app/react/templates/app/controllers/embedded/home_controller.rb +13 -0
- data/lib/generators/disco_app/react/templates/app/models/api_response.rb +107 -0
- data/lib/generators/disco_app/react/templates/app/serializers/disco_app/shop_serializer.rb +13 -0
- data/lib/generators/disco_app/react/templates/app/serializers/disco_app/user_serializer.rb +13 -0
- data/lib/generators/disco_app/react/templates/app/serializers/empty_serializer.rb +5 -0
- data/lib/generators/disco_app/react/templates/app/serializers/error_serializer.rb +76 -0
- data/lib/generators/disco_app/react/templates/app/views/embedded/home/index.html.erb +12 -0
- data/lib/generators/disco_app/react/templates/app/views/layouts/embedded.html.erb +10 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/components/App.jsx +77 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/components/HomePage.jsx +34 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/components/Shared/EmbeddedPage.jsx +70 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/components/Shared/ErrorBanner.jsx +58 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/components/Shared/PaginationWrapper.jsx +10 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/components/Shared/ScrollToTop.jsx +23 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/components/withApi.jsx +125 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/index.jsx +39 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/utils.js +19 -0
- data/lib/generators/disco_app/react/templates/app/webpack/packs/embedded.js +2 -0
- data/lib/generators/disco_app/react/templates/app/webpack/stylesheets/embedded/shared/banners.scss +7 -0
- data/lib/generators/disco_app/react/templates/app/webpack/stylesheets/embedded/shared/busy.scss +3 -0
- data/lib/generators/disco_app/react/templates/app/webpack/stylesheets/embedded/shared/index.scss +3 -0
- data/lib/generators/disco_app/react/templates/app/webpack/stylesheets/embedded/shared/pagination.scss +5 -0
- data/lib/generators/disco_app/react/templates/app/webpack/stylesheets/embedded.scss +2 -0
- data/lib/generators/disco_app/react/templates/config/initializers/mime_types.rb +13 -0
- data/lib/generators/disco_app/react/templates/config/initializers/omniauth.rb +27 -0
- data/lib/generators/disco_app/react/templates/config/initializers/version.rb.tt +7 -0
- data/lib/generators/disco_app/react/templates/config/webpack/staging.js +5 -0
- data/lib/generators/disco_app/react/templates/config/webpack/test.js +5 -0
- data/lib/generators/disco_app/react/templates/config/webpacker.yml +96 -0
- data/lib/generators/disco_app/react/templates/root/.eslintignore +5 -0
- data/lib/generators/disco_app/react/templates/root/.eslintrc +69 -0
- data/lib/generators/disco_app/react/templates/root/.prettierrc +3 -0
- data/lib/generators/disco_app/react/templates/root/VERSION +1 -0
- data/lib/generators/disco_app/react/templates/root/babel.config.js +72 -0
- data/lib/generators/disco_app/react/templates/root/package.json.tt +84 -0
- data/lib/generators/disco_app/react/templates/root/postcss.config.js +14 -0
- data/lib/tasks/api.rake +0 -2
- data/lib/tasks/carrier_service.rake +0 -2
- data/lib/tasks/database.rake +1 -1
- data/lib/tasks/sessions.rake +0 -2
- data/lib/tasks/shops.rake +0 -2
- data/lib/tasks/users.rake +0 -2
- data/lib/tasks/webhooks.rake +0 -2
- data/test/clients/disco_app/api_client_test.rb +3 -3
- data/test/controllers/disco_app/admin/shops_controller_test.rb +1 -0
- data/test/controllers/disco_app/charges_controller_test.rb +8 -9
- data/test/controllers/disco_app/flow/trigger_usage_controller_test.rb +41 -0
- data/test/controllers/disco_app/install_controller_test.rb +2 -1
- data/test/controllers/disco_app/subscriptions_controller_test.rb +2 -1
- data/test/controllers/disco_app/webhooks_controller_test.rb +1 -0
- data/test/controllers/home_controller_test.rb +1 -1
- data/test/disco_app_test.rb +3 -1
- data/test/dummy/Rakefile +1 -1
- data/test/dummy/app/assets/config/manifest.js +2 -0
- data/test/dummy/app/controllers/application_controller.rb +2 -0
- data/test/dummy/app/controllers/carrier_request_controller.rb +1 -0
- data/test/dummy/app/controllers/disco_app/admin/shops_controller.rb +1 -0
- data/test/dummy/app/controllers/home_controller.rb +1 -0
- data/test/dummy/app/controllers/proxy_controller.rb +1 -0
- data/test/dummy/app/javascript/packs/application.js +18 -0
- data/test/dummy/app/jobs/disco_app/app_installed_job.rb +2 -3
- data/test/dummy/app/jobs/disco_app/app_uninstalled_job.rb +1 -0
- data/test/dummy/app/models/application_record.rb +2 -0
- data/test/dummy/app/models/cart.rb +4 -3
- data/test/dummy/app/models/disco_app/shop.rb +4 -5
- data/test/dummy/app/models/js_configuration.rb +1 -0
- data/test/dummy/app/models/product.rb +3 -2
- data/test/dummy/app/models/widget_configuration.rb +1 -0
- data/test/dummy/babel.config.js +72 -0
- data/test/dummy/bin/bundle +1 -1
- data/test/dummy/bin/rails +1 -1
- data/test/dummy/bin/setup +8 -8
- data/test/dummy/bin/webpack +19 -0
- data/test/dummy/bin/webpack-dev-server +19 -0
- data/test/dummy/config/application.rb +4 -3
- data/test/dummy/config/boot.rb +2 -2
- data/test/dummy/config/database.yml +3 -0
- data/test/dummy/config/environment.rb +1 -1
- data/test/dummy/config/environments/staging.rb +85 -0
- data/test/dummy/config/initializers/disco_app.rb +8 -1
- data/test/dummy/config/initializers/omniauth.rb +3 -4
- data/test/dummy/config/initializers/session_store.rb +1 -1
- data/test/dummy/config/initializers/shopify_app.rb +1 -0
- data/test/dummy/config/routes.rb +0 -2
- data/test/dummy/config/secrets.yml +3 -0
- data/test/dummy/config/webpack/development.js +5 -0
- data/test/dummy/config/webpack/environment.js +3 -0
- data/test/dummy/config/webpack/production.js +5 -0
- data/test/dummy/config/webpack/test.js +5 -0
- data/test/dummy/config/webpacker.yml +95 -0
- data/test/dummy/db/migrate/20160307182229_create_products.rb +3 -1
- data/test/dummy/db/migrate/20160530160739_create_asset_models.rb +3 -1
- data/test/dummy/db/migrate/20161105054746_create_carts.rb +2 -1
- data/test/dummy/db/schema.rb +45 -6
- data/test/dummy/package.json +8 -0
- data/test/dummy/postcss.config.js +12 -0
- data/test/dummy/yarn.lock +7244 -0
- data/test/fixtures/api/subscriptions/valid_request.json +1 -1
- data/test/fixtures/api/widget_store/empty_webhooks.json +3 -0
- data/test/fixtures/api/widget_store/existing_webhooks.json +43 -0
- data/test/fixtures/disco_app/shops.yml +3 -0
- data/test/fixtures/webhooks/flow/trigger_usage.json +7 -0
- data/test/integration/synchronises_test.rb +2 -1
- data/test/jobs/disco_app/app_installed_job_test.rb +28 -9
- data/test/jobs/disco_app/app_uninstalled_job_test.rb +5 -2
- data/test/jobs/disco_app/send_subscription_job_test.rb +3 -2
- data/test/jobs/disco_app/synchronise_carrier_service_job_test.rb +1 -0
- data/test/jobs/disco_app/synchronise_users_job_test.rb +1 -0
- data/test/jobs/disco_app/synchronise_webhooks_job_test.rb +70 -13
- data/test/models/disco_app/can_be_liquified_test.rb +3 -1
- data/test/models/disco_app/has_metafields_test.rb +37 -18
- data/test/models/disco_app/renders_assets_test.rb +2 -1
- data/test/models/disco_app/session_test.rb +2 -2
- data/test/models/disco_app/shop_test.rb +1 -1
- data/test/services/disco_app/charges_service_test.rb +7 -8
- data/test/services/disco_app/flow/create_action_test.rb +51 -0
- data/test/services/disco_app/flow/create_trigger_test.rb +56 -0
- data/test/services/disco_app/flow/process_action_test.rb +68 -0
- data/test/services/disco_app/flow/process_trigger_test.rb +94 -0
- data/test/services/disco_app/flow/update_trigger_usage_test.rb +87 -0
- data/test/services/disco_app/subscription_service_test.rb +3 -2
- data/test/support/test_file_fixtures.rb +2 -2
- data/test/support/test_shopify_api.rb +1 -1
- data/test/test_helper.rb +10 -7
- data/test/vcr/flow_trigger_invalid_title.yml +35 -0
- data/test/vcr/flow_trigger_valid.yml +38 -0
- data/test/vcr/webhook_failure.yml +13 -13
- metadata +282 -148
- data/app/clients/disco_app/disco_api_error.rb +0 -2
- data/app/clients/disco_app/rollbar_client.rb +0 -53
- data/app/clients/disco_app/rollbar_client_error.rb +0 -2
- data/lib/generators/disco_app/USAGE +0 -5
- data/lib/generators/disco_app/disco_app_generator.rb +0 -236
- data/lib/generators/disco_app/templates/config/newrelic.yml +0 -26
- data/lib/generators/disco_app/templates/initializers/rollbar.rb +0 -23
- data/lib/generators/disco_app/templates/initializers/session_store.rb +0 -2
- data/lib/generators/disco_app/templates/initializers/shopify_app.rb +0 -6
- data/lib/generators/disco_app/templates/root/.codeclimate.yml +0 -7
- data/lib/generators/disco_app/templates/root/.ruby-version +0 -1
- data/lib/tasks/rollbar.rake +0 -24
- data/test/fixtures/api/widget_store/webhooks.json +0 -1
@@ -0,0 +1,297 @@
|
|
1
|
+
module DiscoApp
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < Rails::Generators::Base
|
4
|
+
|
5
|
+
source_root File.expand_path('templates', __dir__)
|
6
|
+
|
7
|
+
# Copy a number of template files to the top-level directory of our application:
|
8
|
+
#
|
9
|
+
# - .env and .env.local for settings environment variables in development with dotenv-rails;
|
10
|
+
# - Slightly customised version of the default Rails .gitignore;
|
11
|
+
# - Default simple Procfile for Heroku;
|
12
|
+
# - .editorconfig to help enforce 2-space tabs, newlines and truncated whitespace for editors that support it.
|
13
|
+
# - README/PULL REQUEST template
|
14
|
+
#
|
15
|
+
def copy_root_files
|
16
|
+
%w[.editorconfig .env .env.local .gitignore .rubocop.yml Procfile CHECKS README.md].each do |file|
|
17
|
+
copy_file "root/#{file}", file
|
18
|
+
end
|
19
|
+
directory 'root/.github'
|
20
|
+
end
|
21
|
+
|
22
|
+
# Remove a number of root files.
|
23
|
+
def remove_root_files
|
24
|
+
%w[README.rdoc].each do |file|
|
25
|
+
remove_file file
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# Configure the application's Gemfile.
|
30
|
+
def configure_gemfile
|
31
|
+
# Remove sqlite.
|
32
|
+
gsub_file 'Gemfile', /^# Use sqlite3 as the database for Active Record\ngem 'sqlite3', '~> 1.4'/m, ''
|
33
|
+
|
34
|
+
# Add gem requirements.
|
35
|
+
gem 'active_link_to'
|
36
|
+
gem 'activeresource'
|
37
|
+
gem 'acts_as_singleton'
|
38
|
+
gem 'appsignal'
|
39
|
+
gem 'classnames-rails'
|
40
|
+
gem 'nokogiri'
|
41
|
+
gem 'oj'
|
42
|
+
gem 'pg'
|
43
|
+
gem 'premailer-rails'
|
44
|
+
gem 'react-rails'
|
45
|
+
gem 'render_anywhere'
|
46
|
+
gem 'shopify_app'
|
47
|
+
gem 'sidekiq'
|
48
|
+
gem 'timber', '~> 3.0'
|
49
|
+
|
50
|
+
# Indicate which gems should only be used in production.
|
51
|
+
gem_group :staging, :production do
|
52
|
+
gem 'mailgun_rails'
|
53
|
+
gem 'rails_12factor'
|
54
|
+
end
|
55
|
+
|
56
|
+
# Indicate which gems should only be used in development.
|
57
|
+
gem_group :development do
|
58
|
+
gem 'rb-readline'
|
59
|
+
gem 'rubocop'
|
60
|
+
gem 'rubocop-performance'
|
61
|
+
gem 'rubocop-rails'
|
62
|
+
end
|
63
|
+
|
64
|
+
# Indicate which gems should only be used in development and test.
|
65
|
+
gem_group :development, :test do
|
66
|
+
gem 'coveralls'
|
67
|
+
gem 'dotenv-rails'
|
68
|
+
gem 'factory_bot_rails'
|
69
|
+
gem 'faker'
|
70
|
+
gem 'mechanize'
|
71
|
+
gem 'rspec-rails'
|
72
|
+
gem 'vcr'
|
73
|
+
gem 'webmock'
|
74
|
+
end
|
75
|
+
|
76
|
+
gem_group :test do
|
77
|
+
gem 'database_cleaner'
|
78
|
+
gem 'shoulda-matchers'
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
# copy template for pg configuration
|
83
|
+
def update_database_config
|
84
|
+
template 'config/database.yml.tt'
|
85
|
+
end
|
86
|
+
|
87
|
+
# Run bundle install to add our new gems before running tasks.
|
88
|
+
def bundle_install
|
89
|
+
Bundler.with_clean_env do
|
90
|
+
run 'bundle install'
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
def support_staging_environment
|
95
|
+
copy_file 'config/environments/staging.rb', 'config/environments/staging.rb'
|
96
|
+
end
|
97
|
+
|
98
|
+
# Make any required adjustments to the application configuration.
|
99
|
+
def configure_application
|
100
|
+
# The force_ssl flag is commented by default for production.
|
101
|
+
# Uncomment to ensure config.force_ssl = true in production.
|
102
|
+
uncomment_lines 'config/environments/production.rb', /force_ssl/
|
103
|
+
|
104
|
+
# Set time zone to UTC
|
105
|
+
application "config.time_zone = 'UTC'"
|
106
|
+
application '# Ensure UTC is the default timezone'
|
107
|
+
|
108
|
+
# Set server side rendereing for components.js
|
109
|
+
application <<~CONFIG
|
110
|
+
# Enable server side react rendering
|
111
|
+
config.react.server_renderer_options = {
|
112
|
+
# files to load for prerendering
|
113
|
+
files: ['components.js']
|
114
|
+
}
|
115
|
+
CONFIG
|
116
|
+
|
117
|
+
# Set defaults for various charge attributes.
|
118
|
+
application "config.x.shopify_charges_default_trial_days = 14\n"
|
119
|
+
application 'config.x.shopify_charges_default_price = 10.00'
|
120
|
+
application 'config.x.shopify_charges_default_type = :recurring'
|
121
|
+
application '# Set defaults for charges created by the application'
|
122
|
+
|
123
|
+
# Set the "real charges" config variable to false explicitly by default.
|
124
|
+
# Only in production do we read from the environment variable and
|
125
|
+
# potentially have it become true.
|
126
|
+
application "config.x.shopify_charges_real = false\n"
|
127
|
+
application '# Explicitly prevent real charges being created by default'
|
128
|
+
application "config.x.shopify_charges_real = ENV['SHOPIFY_CHARGES_REAL'] == 'true'\n", env: :production
|
129
|
+
application '# Allow real charges in production with an ENV variable', env: :production
|
130
|
+
|
131
|
+
# Configure session storage.
|
132
|
+
application "ActiveRecord::SessionStore::Session.table_name = 'disco_app_sessions'"
|
133
|
+
application 'ActionDispatch::Session::ActiveRecordStore.session_class = DiscoApp::Session'
|
134
|
+
application '# Configure custom session storage'
|
135
|
+
|
136
|
+
# Set Sidekiq as the queue adapter in production.
|
137
|
+
application "config.active_job.queue_adapter = :sidekiq\n", env: :production
|
138
|
+
application '# Use Sidekiq as the active job backend', env: :production
|
139
|
+
|
140
|
+
# Configure to delete X-Frame-Options so that embedded app works in iframe.
|
141
|
+
application "config.action_dispatch.default_headers.delete('X-Frame-Options')"
|
142
|
+
application '# Allow iframe requests'
|
143
|
+
|
144
|
+
# Set Sidekiq as the queue adapter in staging.
|
145
|
+
application "config.active_job.queue_adapter = :sidekiq\n", env: :staging
|
146
|
+
application '# Use Sidekiq as the active job backend', env: :staging
|
147
|
+
|
148
|
+
# Ensure the application configuration uses the DEFAULT_HOST environment
|
149
|
+
# variable to set up support for reverse routing absolute URLS (needed when
|
150
|
+
# generating Webhook URLs for example).
|
151
|
+
application "routes.default_url_options[:host] = ENV['DEFAULT_HOST']\n"
|
152
|
+
application '# Set the default host for absolute URL routing purposes'
|
153
|
+
|
154
|
+
# Configure React in development, staging and production.
|
155
|
+
application 'config.react.variant = :development', env: :development
|
156
|
+
application '# Use development variant of React in development.', env: :development
|
157
|
+
application 'config.react.variant = :production', env: :staging
|
158
|
+
application '# Use production variant of React in staging.', env: :staging
|
159
|
+
application 'config.react.variant = :production', env: :production
|
160
|
+
application '# Use production variant of React in production.', env: :production
|
161
|
+
|
162
|
+
# Configure ActionDispatch::HostAuthorization to be disabled
|
163
|
+
application 'config.hosts.clear', env: :development
|
164
|
+
application '# Disable Host Authorization middleware', env: :development
|
165
|
+
|
166
|
+
# Configure Factory Bot as the Rails testing fixture replacement
|
167
|
+
application <<~CONFIG
|
168
|
+
config.generators do |g|
|
169
|
+
g.test_framework :rspec, fixtures: true, view_specs: false, helper_specs: false, routing_specs: false
|
170
|
+
g.fixture_replacement :factory_bot, dir: 'spec/factories'
|
171
|
+
end
|
172
|
+
CONFIG
|
173
|
+
|
174
|
+
# Copy over the default puma configuration.
|
175
|
+
copy_file 'config/puma.rb', 'config/puma.rb'
|
176
|
+
|
177
|
+
# Mail configuration
|
178
|
+
configuration = <<-CONFIG.strip_heredoc
|
179
|
+
|
180
|
+
# Configure ActionMailer to use MailGun
|
181
|
+
if ENV['MAILGUN_API_KEY']
|
182
|
+
config.action_mailer.delivery_method = :mailgun
|
183
|
+
config.action_mailer.mailgun_settings = {
|
184
|
+
api_key: ENV['MAILGUN_API_KEY'],
|
185
|
+
domain: ENV['MAILGUN_API_DOMAIN']
|
186
|
+
}
|
187
|
+
end
|
188
|
+
CONFIG
|
189
|
+
application configuration, env: :production
|
190
|
+
application configuration, env: :staging
|
191
|
+
|
192
|
+
# Monitoring configuration
|
193
|
+
copy_file 'config/appsignal.yml', 'config/appsignal.yml'
|
194
|
+
end
|
195
|
+
|
196
|
+
# Add entries to .env and .env.local
|
197
|
+
def add_env_variables
|
198
|
+
configuration = <<-CONFIG.strip_heredoc
|
199
|
+
|
200
|
+
MAILGUN_API_KEY=
|
201
|
+
MAILGUN_API_DOMAIN=
|
202
|
+
CONFIG
|
203
|
+
append_to_file '.env', configuration
|
204
|
+
append_to_file '.env.local', configuration
|
205
|
+
end
|
206
|
+
|
207
|
+
# Set up routes.
|
208
|
+
def setup_routes
|
209
|
+
route "mount DiscoApp::Engine, at: '/'"
|
210
|
+
end
|
211
|
+
|
212
|
+
# Run generators.
|
213
|
+
def run_generators
|
214
|
+
generate 'shopify_app:install'
|
215
|
+
generate 'shopify_app:home_controller'
|
216
|
+
rails_command 'webpacker:install'
|
217
|
+
generate 'react:install'
|
218
|
+
end
|
219
|
+
|
220
|
+
def configure_rspec
|
221
|
+
directory 'spec'
|
222
|
+
copy_file 'root/.rspec', '.rspec'
|
223
|
+
end
|
224
|
+
|
225
|
+
# Copy template files to the appropriate location. In some cases, we'll be
|
226
|
+
# overwriting or removing existing files or those created by ShopifyApp.
|
227
|
+
def copy_and_remove_files
|
228
|
+
# Copy initializers
|
229
|
+
copy_file 'initializers/shopify_app.rb', 'config/initializers/shopify_app.rb'
|
230
|
+
copy_file 'initializers/disco_app.rb', 'config/initializers/disco_app.rb'
|
231
|
+
copy_file 'initializers/shopify_session_repository.rb', 'config/initializers/shopify_session_repository.rb'
|
232
|
+
copy_file 'initializers/session_store.rb', 'config/initializers/session_store.rb'
|
233
|
+
copy_file 'initializers/timber.rb', 'config/initializers/timber.rb'
|
234
|
+
|
235
|
+
# Copy default home controller and view
|
236
|
+
copy_file 'controllers/home_controller.rb', 'app/controllers/home_controller.rb'
|
237
|
+
copy_file 'views/home/index.html.erb', 'app/views/home/index.html.erb'
|
238
|
+
|
239
|
+
# Copy assets
|
240
|
+
copy_file 'assets/stylesheets/application.scss', 'app/assets/stylesheets/application.scss'
|
241
|
+
|
242
|
+
# Remove application.css
|
243
|
+
remove_file 'app/assets/stylesheets/application.css'
|
244
|
+
|
245
|
+
# Remove the layout files created by ShopifyApp
|
246
|
+
remove_file 'app/views/layouts/application.html.erb'
|
247
|
+
remove_file 'app/views/layouts/embedded_app.html.erb'
|
248
|
+
|
249
|
+
# Remove the test directory generated by rails new
|
250
|
+
remove_dir 'test'
|
251
|
+
end
|
252
|
+
|
253
|
+
# Copy engine migrations over.
|
254
|
+
def install_migrations
|
255
|
+
rake 'disco_app:install:migrations'
|
256
|
+
end
|
257
|
+
|
258
|
+
# Create PG database
|
259
|
+
def create_database
|
260
|
+
rake 'db:create'
|
261
|
+
end
|
262
|
+
|
263
|
+
# Run migrations.
|
264
|
+
def migrate
|
265
|
+
rake 'db:migrate'
|
266
|
+
end
|
267
|
+
|
268
|
+
# Copy package.json.
|
269
|
+
def configure_package
|
270
|
+
template 'root/package.json.tt', 'package.json'
|
271
|
+
end
|
272
|
+
|
273
|
+
def yarn_install
|
274
|
+
run 'yarn install'
|
275
|
+
end
|
276
|
+
|
277
|
+
# Lock down the application to a specific Ruby version:
|
278
|
+
#
|
279
|
+
# - Via .tool-versions file for asdf in development;
|
280
|
+
#
|
281
|
+
# This should be the last operation, to allow all other operations to run in the initial Ruby version.
|
282
|
+
def set_ruby_version
|
283
|
+
copy_file 'root/.tool-versions', '.tool-versions'
|
284
|
+
end
|
285
|
+
|
286
|
+
private
|
287
|
+
|
288
|
+
# This method of finding the component.js manifest taken from the
|
289
|
+
# install generator in react-rails.
|
290
|
+
# See https://github.com/reactjs/react-rails/blob/3f0af13fa755d6e95969c17728d0354c234f3a37/lib/generators/react/install_generator.rb#L53-L55
|
291
|
+
def components
|
292
|
+
Pathname.new(destination_root).join('app/assets/javascripts', 'components.js')
|
293
|
+
end
|
294
|
+
|
295
|
+
end
|
296
|
+
end
|
297
|
+
end
|
data/lib/generators/disco_app/{templates → install/templates}/assets/javascripts/application.js
RENAMED
File without changes
|
data/lib/generators/disco_app/{templates → install/templates}/assets/javascripts/components.js
RENAMED
File without changes
|
data/lib/generators/disco_app/{templates → install/templates}/assets/stylesheets/application.scss
RENAMED
File without changes
|
@@ -0,0 +1,12 @@
|
|
1
|
+
default: &defaults
|
2
|
+
name: <%= ENV['SHOPIFY_APP_NAME'] || 'Unknown App' %>
|
3
|
+
push_api_key: <%= ENV['APPSIGNAL_PUSH_API_KEY'] %>
|
4
|
+
development:
|
5
|
+
<<: *defaults
|
6
|
+
active: false
|
7
|
+
staging:
|
8
|
+
<<: *defaults
|
9
|
+
active: true
|
10
|
+
production:
|
11
|
+
<<: *defaults
|
12
|
+
active: true
|
@@ -4,18 +4,21 @@ default: &default
|
|
4
4
|
pool: 5
|
5
5
|
timeout: 5000
|
6
6
|
prepared_statements: false
|
7
|
-
|
7
|
+
|
8
8
|
development:
|
9
9
|
<<: *default
|
10
10
|
host: localhost
|
11
11
|
port: 5432
|
12
12
|
database: <%= Rails.application.class.parent_name.downcase %>
|
13
|
-
|
13
|
+
|
14
14
|
test:
|
15
15
|
<<: *default
|
16
16
|
host: localhost
|
17
17
|
port: 5432
|
18
18
|
database: <%= Rails.application.class.parent_name.downcase %>_test
|
19
|
-
|
19
|
+
|
20
|
+
staging:
|
21
|
+
<<: *default
|
22
|
+
|
20
23
|
production:
|
21
24
|
<<: *default
|
@@ -0,0 +1,108 @@
|
|
1
|
+
Rails.application.configure do
|
2
|
+
# Configure ActionMailer to use MailGun
|
3
|
+
if ENV['MAILGUN_API_KEY']
|
4
|
+
config.action_mailer.delivery_method = :mailgun
|
5
|
+
config.action_mailer.mailgun_settings = {
|
6
|
+
api_key: ENV['MAILGUN_API_KEY'],
|
7
|
+
domain: ENV['MAILGUN_API_DOMAIN']
|
8
|
+
}
|
9
|
+
end
|
10
|
+
|
11
|
+
# Use production variant of React in staging.
|
12
|
+
config.react.variant = :production
|
13
|
+
# Use Sidekiq as the active job backend
|
14
|
+
config.active_job.queue_adapter = :sidekiq
|
15
|
+
|
16
|
+
# Allow real charges in production with an ENV variable
|
17
|
+
config.x.shopify_charges_real = false
|
18
|
+
|
19
|
+
# Settings specified here will take precedence over those in config/application.rb.
|
20
|
+
|
21
|
+
# Code is not reloaded between requests.
|
22
|
+
config.cache_classes = true
|
23
|
+
|
24
|
+
# Eager load code on boot. This eager loads most of Rails and
|
25
|
+
# your application in memory, allowing both threaded web servers
|
26
|
+
# and those relying on copy on write to perform better.
|
27
|
+
# Rake tasks automatically ignore this option for performance.
|
28
|
+
config.eager_load = true
|
29
|
+
|
30
|
+
# Full error reports are disabled and caching is turned on.
|
31
|
+
config.consider_all_requests_local = false
|
32
|
+
config.action_controller.perform_caching = true
|
33
|
+
|
34
|
+
# Attempt to read encrypted secrets from `config/secrets.yml.enc`.
|
35
|
+
# Requires an encryption key in `ENV["RAILS_MASTER_KEY"]` or
|
36
|
+
# `config/secrets.yml.key`.
|
37
|
+
config.read_encrypted_secrets = true
|
38
|
+
|
39
|
+
# Disable serving static files from the `/public` folder by default since
|
40
|
+
# Apache or NGINX already handles this.
|
41
|
+
config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
|
42
|
+
|
43
|
+
# Compress JavaScripts and CSS.
|
44
|
+
config.assets.js_compressor = :uglifier
|
45
|
+
# config.assets.css_compressor = :sass
|
46
|
+
|
47
|
+
# Do not fallback to assets pipeline if a precompiled asset is missed.
|
48
|
+
config.assets.compile = false
|
49
|
+
|
50
|
+
# `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb
|
51
|
+
|
52
|
+
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
|
53
|
+
# config.action_controller.asset_host = 'http://assets.example.com'
|
54
|
+
|
55
|
+
# Specifies the header that your server uses for sending files.
|
56
|
+
# config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
|
57
|
+
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
|
58
|
+
|
59
|
+
# Mount Action Cable outside main process or domain
|
60
|
+
# config.action_cable.mount_path = nil
|
61
|
+
# config.action_cable.url = 'wss://example.com/cable'
|
62
|
+
# config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ]
|
63
|
+
|
64
|
+
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
|
65
|
+
config.force_ssl = true
|
66
|
+
|
67
|
+
# Use the lowest log level to ensure availability of diagnostic information
|
68
|
+
# when problems arise.
|
69
|
+
config.log_level = :debug
|
70
|
+
|
71
|
+
# Prepend all log lines with the following tags.
|
72
|
+
config.log_tags = [:request_id]
|
73
|
+
|
74
|
+
# Use a different cache store in staging.
|
75
|
+
# config.cache_store = :mem_cache_store
|
76
|
+
|
77
|
+
# Use a real queuing backend for Active Job (and separate queues per environment)
|
78
|
+
# config.active_job.queue_adapter = :resque
|
79
|
+
# config.active_job.queue_name_prefix = "example_app_#{Rails.env}"
|
80
|
+
config.action_mailer.perform_caching = false
|
81
|
+
|
82
|
+
# Ignore bad email addresses and do not raise email delivery errors.
|
83
|
+
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
|
84
|
+
# config.action_mailer.raise_delivery_errors = false
|
85
|
+
|
86
|
+
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
|
87
|
+
# the I18n.default_locale when a translation cannot be found).
|
88
|
+
config.i18n.fallbacks = true
|
89
|
+
|
90
|
+
# Send deprecation notices to registered listeners.
|
91
|
+
config.active_support.deprecation = :notify
|
92
|
+
|
93
|
+
# Use default logging formatter so that PID and timestamp are not suppressed.
|
94
|
+
config.log_formatter = ::Logger::Formatter.new
|
95
|
+
|
96
|
+
# Use a different logger for distributed setups.
|
97
|
+
# require 'syslog/logger'
|
98
|
+
# config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name')
|
99
|
+
|
100
|
+
if ENV['RAILS_LOG_TO_STDOUT'].present?
|
101
|
+
logger = ActiveSupport::Logger.new(STDOUT)
|
102
|
+
logger.formatter = config.log_formatter
|
103
|
+
config.logger = ActiveSupport::TaggedLogging.new(logger)
|
104
|
+
end
|
105
|
+
|
106
|
+
# Do not dump schema after migrations.
|
107
|
+
config.active_record.dump_schema_after_migration = false
|
108
|
+
end
|
File without changes
|
@@ -8,6 +8,11 @@ DiscoApp.configure do |config|
|
|
8
8
|
# See https://help.shopify.com/api/reference/webhook.
|
9
9
|
config.webhook_topics = []
|
10
10
|
|
11
|
+
# By default, webhooks request all fields to be provided in the payload.
|
12
|
+
# You can override this behaviour by providing an entry in this hash with the
|
13
|
+
# key set to a webhook topic and the value set to an array of fields.
|
14
|
+
# config.webhook_fields = {}
|
15
|
+
|
11
16
|
# Set the below if using an application proxy.
|
12
17
|
config.app_proxy_prefix = ENV['SHOPIFY_APP_PROXY_PREFIX']
|
13
18
|
|
@@ -0,0 +1,11 @@
|
|
1
|
+
ShopifyApp.configure do |config|
|
2
|
+
config.application_name = ENV['SHOPIFY_APP_NAME']
|
3
|
+
config.api_key = ENV['SHOPIFY_APP_API_KEY']
|
4
|
+
config.secret = ENV['SHOPIFY_APP_SECRET']
|
5
|
+
config.old_secret = ''
|
6
|
+
config.scope = ENV['SHOPIFY_APP_SCOPE']
|
7
|
+
config.embedded_app = true
|
8
|
+
config.after_authenticate_job = false
|
9
|
+
config.api_version = ENV.fetch('SHOPIFY_APP_API_VERSION', '2019-10')
|
10
|
+
config.session_repository = ShopifyApp::InMemorySessionStore
|
11
|
+
end
|
File without changes
|
File without changes
|
@@ -5,6 +5,7 @@ SHOPIFY_APP_API_KEY=00000000000000000000000000000000
|
|
5
5
|
SHOPIFY_APP_SECRET=00000000000000000000000000000000
|
6
6
|
SHOPIFY_APP_SCOPE=
|
7
7
|
SHOPIFY_APP_PROXY_PREFIX=
|
8
|
+
SHOPIFY_APP_API_VERSION=
|
8
9
|
|
9
10
|
ADMIN_APP_USERNAME=
|
10
11
|
ADMIN_APP_PASSWORD=
|
@@ -18,3 +19,9 @@ REDIS_PROVIDER=
|
|
18
19
|
DISCO_API_URL=
|
19
20
|
|
20
21
|
WHITELISTED_DOMAINS=
|
22
|
+
|
23
|
+
# You can find this listed in 1Password
|
24
|
+
APPSIGNAL_PUSH_API_KEY=
|
25
|
+
|
26
|
+
TIMBER_API_KEY=
|
27
|
+
TIMBER_SOURCE_ID=
|
@@ -5,6 +5,7 @@ SHOPIFY_APP_API_KEY=
|
|
5
5
|
SHOPIFY_APP_SECRET=
|
6
6
|
SHOPIFY_APP_SCOPE=
|
7
7
|
SHOPIFY_APP_PROXY_PREFIX=
|
8
|
+
SHOPIFY_APP_API_VERSION=
|
8
9
|
|
9
10
|
ADMIN_APP_USERNAME=
|
10
11
|
ADMIN_APP_PASSWORD=
|
@@ -23,3 +24,6 @@ REDIS_PROVIDER=
|
|
23
24
|
DISCO_API_URL=
|
24
25
|
|
25
26
|
WHITELISTED_DOMAINS=
|
27
|
+
|
28
|
+
# You can find this listed in 1Password
|
29
|
+
APPSIGNAL_PUSH_API_KEY=
|
data/lib/generators/disco_app/{templates → install/templates}/root/.github/PULL_REQUEST_TEMPLATE.md
RENAMED
File without changes
|
@@ -15,6 +15,11 @@ pickle-email-*.html
|
|
15
15
|
.byebug_history
|
16
16
|
.DS_Store
|
17
17
|
.disco_app
|
18
|
+
/public/packs
|
19
|
+
/public/packs-test
|
20
|
+
/node_modules
|
21
|
+
yarn-debug.log*
|
22
|
+
.yarn-integrity
|
18
23
|
|
19
24
|
## Environment normalisation:
|
20
25
|
/.bundle
|
@@ -22,6 +27,7 @@ pickle-email-*.html
|
|
22
27
|
/vendor/ruby
|
23
28
|
/.env.local
|
24
29
|
.envrc
|
30
|
+
.pryrc
|
25
31
|
|
26
32
|
# these should all be checked in to normalise the environment:
|
27
33
|
# Gemfile.lock, .ruby-version, .ruby-gemset
|
@@ -0,0 +1 @@
|
|
1
|
+
--require spec_helper
|