From 2bc1496bc41aef6b7f61391cfbb17c303e0b6486 Mon Sep 17 00:00:00 2001 From: Molly Struve Date: Wed, 9 Sep 2020 02:24:32 -0500 Subject: [PATCH] Refactor: Remove Unused Figaro Gem and Temp Rake Task (#10255) --- Gemfile | 1 - Gemfile.lock | 3 - bin/setup | 7 -- config/sample_application.yml | 148 ------------------------- lib/tasks/temporary/env_variables.rake | 28 ----- vendor/cache/figaro-1.2.0.gem | Bin 18944 -> 0 bytes 6 files changed, 187 deletions(-) delete mode 100644 config/sample_application.yml delete mode 100644 lib/tasks/temporary/env_variables.rake delete mode 100644 vendor/cache/figaro-1.2.0.gem diff --git a/Gemfile b/Gemfile index 88255f221..5f2005e37 100644 --- a/Gemfile +++ b/Gemfile @@ -38,7 +38,6 @@ gem "faraday-http-cache", "~> 2.2" # Middleware to handle HTTP caching gem "fastly", "~> 2.5" # Client library for the Fastly acceleration system gem "feedjira", "~> 3.1" # A feed fetching and parsing library gem "field_test", "~> 0.4" # A/B testing -gem "figaro", "~> 1.2" # Simple, Heroku-friendly Rails app configuration using ENV and a single YAML file gem "flipper", "~> 0.18.0" # Feature flipping / flags for Ruby gem "flipper-active_record", "~> 0.18.0" # Store Flipper flags in ActiveRecord gem "flipper-ui", "~> 0.18.0" diff --git a/Gemfile.lock b/Gemfile.lock index f99138a98..fa6f81a06 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -307,8 +307,6 @@ GEM browser (>= 2.0) distribution railties (>= 5) - figaro (1.2.0) - thor (>= 0.14.0, < 2) fix-db-schema-conflicts (3.0.3) rubocop (>= 0.38.0) flipper (0.18.0) @@ -895,7 +893,6 @@ DEPENDENCIES fastly (~> 2.5) feedjira (~> 3.1) field_test (~> 0.4) - figaro (~> 1.2) fix-db-schema-conflicts (~> 3.0) flipper (~> 0.18.0) flipper-active_record (~> 0.18.0) diff --git a/bin/setup b/bin/setup index 51ff1dbbf..384ca0121 100755 --- a/bin/setup +++ b/bin/setup @@ -25,13 +25,6 @@ chdir APP_ROOT do # Install JavaScript dependencies if using Yarn system("bin/yarn") - # TEMPORARY @sre will remove before Sept 1, 2020 - puts "\n== Create .env File from application.yml ==" - system!("bin/rails create_dot_env_file") - if File.exist?("config/application.yml") - system!("mv config/application.yml config/application_unused.yml") - end - puts "\n== Copying sample files ==" unless File.exist?("config/database.yml") cp "config/database.yml.sample", "config/database.yml" diff --git a/config/sample_application.yml b/config/sample_application.yml deleted file mode 100644 index 28e0c6762..000000000 --- a/config/sample_application.yml +++ /dev/null @@ -1,148 +0,0 @@ -# App domain + Protocol setting for development -APP_DOMAIN: "localhost:3000" -APP_PROTOCOL: "http://" - -# Community Related Variables -COMMUNITY_NAME: "DEV(local)" - -# Email related variables -DEFAULT_EMAIL: "yo@dev.to" - -# Service timeout length -RACK_TIMEOUT_WAIT_TIMEOUT: 100_000 -RACK_TIMEOUT_SERVICE_TIMEOUT: 100_000 - -# Redis caching storage -REDIS_URL: "redis://localhost:6379" - -# Redis sessions storage -REDIS_SESSIONS_URL: "redis://localhost:6379" -SESSION_KEY: "_Dev_Community_Session" -SESSION_EXPIRY_SECONDS: 1209600 # two weeks in seconds - -# Redis Sidekiq storage -REDIS_SIDEKIQ_URL: "redis://localhost:6379" - -# Elasticsearch -ELASTICSEARCH_URL: "http://localhost:9200" - -# SSL config -FORCE_SSL_IN_RAILS: "not applicable in dev" - -################################################ -############## 3rd Party Services ############## -################################################ - -# It's best if you have the following configured -# for more development experience - -# GitHub -# (https://developer.github.com/v3/guides/basics-of-authentication/) -GITHUB_KEY: "" -GITHUB_SECRET: "" - -# Twitter -# (https://developer.twitter.com/en/docs/basics/authentication/oauth-2-0/application-only) -TWITTER_KEY: "" -TWITTER_SECRET: "" - -################################################ -######### Optional 3rd Party Services ########## -################################################ - -# Honeybadger for error tracking -# (https://docs.honeybadger.io/lib/ruby/getting-started/introduction.html) -HONEYBADGER_API_KEY: "Optional" -HONEYBADGER_JS_API_KEY: "Optional" - -# AWS for images storages -AWS_ID: "Optional" -AWS_SECRET: "Optional" -AWS_BUCKET_NAME: "Optional" -AWS_UPLOAD_REGION: "" - -# AWS SDK -# (https://docs.aws.amazon.com/sdk-for-ruby/v3/developer-guide/setup-config.html) -AWS_DEFAULT_REGION: "us-east-1" -AWS_SDK_KEY: "Optional" -AWS_SDK_SECRET: "Optional" - -# AWS for video storage -AWS_S3_INPUT_BUCKET: "Optional" -AWS_S3_VIDEO_ID: "Optional" -AWS_S3_VIDEO_KEY: "Optional" - -# Buffer for sending to buffer -# (https://buffer.com/developers/api) -BUFFER_ACCESS_TOKEN: "Optional" -BUFFER_FACEBOOK_ID: "Optional" -BUFFER_LINKEDIN_ID: "Optional" -BUFFER_PROFILE_ID: 0 -BUFFER_TWITTER_ID: "Optional" -BUFFER_LISTINGS_PROFILE: "Optional" - -# Cloudinary for image resizing and cache?? -# (https://cloudinary.com/documentation/rails_integration) -CLOUDINARY_API_KEY: "Optional" -CLOUDINARY_API_SECRET: "Optional" -CLOUDINARY_CLOUD_NAME: "Optional" -CLOUDINARY_SECURE: "Optional" - -# HTML/CSS to Image for generating social preview images -# (https://docs.htmlcsstoimage.com/example-code/ruby) -HCTI_API_USER_ID: "Optional" -HCTI_API_KEY: "Optional" - -# Fastly for edge caching -# (https://docs.fastly.com/api/) -FASTLY_API_KEY: "" -FASTLY_SERVICE_ID: "" - -# Honeycomb for monitoring and observability -# (https://www.honeycomb.io/) -HONEYCOMB_API_KEY: "" - -# Mailchimp for mails -# (https://mailchimp.com/developer/) -MAILCHIMP_API_KEY: "Optional-valid" - -# Pusher for DEV Connect/notfications -# (https://pusher.com/docs) -PUSHER_APP_ID: "Optional" -PUSHER_CLUSTER: "Optional" -PUSHER_KEY: "Optional" -PUSHER_SECRET: "Optional" -PUSHER_BEAMS_ID: "Optional" -PUSHER_BEAMS_KEY: "Optional" - -# Google recaptcha -# (https://developers.google.com/recaptcha/intro) -RECAPTCHA_SECRET: "Optional" -RECAPTCHA_SITE: "Optional" - -# Slack for customer alerts -# (https://api.slack.com/) -SLACK_CHANNEL: "" -SLACK_DEPLOY_CHANNEL: "" -SLACK_WEBHOOK_URL: "" - -# Stripe for payment system -# (https://stripe.com/docs/api) -STRIPE_PUBLISHABLE_KEY: "Optional" -STRIPE_SECRET_KEY: "Optional" - -# For video calling in DEV Connect -# (https://www.twilio.com/docs/video) -TWILIO_ACCOUNT_SID: "Optional" -TWILIO_VIDEO_API_KEY: "Optional" -TWILIO_VIDEO_API_SECRET: "Optional" - -# For Twitch live stream integration -# (https://dev.twitch.tv/docs) -TWITCH_CLIENT_ID: "Optional" -TWITCH_CLIENT_SECRET: "Optional" -TWITCH_WEBHOOK_SECRET: "Optional" - -# For calling the Stack Exchange API -# (https://api.stackexchange.com/docs) -STACK_EXCHANGE_APP_KEY: "" diff --git a/lib/tasks/temporary/env_variables.rake b/lib/tasks/temporary/env_variables.rake deleted file mode 100644 index 45fe6aa93..000000000 --- a/lib/tasks/temporary/env_variables.rake +++ /dev/null @@ -1,28 +0,0 @@ -# Create a .env file from your application.yml file -task create_dot_env_file: :environment do - exit if File.file?(".env") - - # Used to set all defaults we have if not set already in application.yml - sample_app_yml = YAML.load_file("config/sample_application.yml") - - # read existing lines - application_yml = File.open("config/application.yml", "r").read - - File.open(".env", "w") do |env_file| - # add default values only if they are not already present in the - # application.yml file which would result in a duplicate key - sample_app_yml.each_pair do |variable, value| - env_file.write("export #{variable}=#{value}\n") unless application_yml.include?(variable.to_s) - end - - File.open("config/application.yml", "r") do |file| - file.each_line do |line| - new_line = line.gsub(": ", "=") - unless new_line.blank? || new_line.starts_with?("#") - new_line.prepend("export ") - end - env_file.write(new_line) - end - end - end -end diff --git a/vendor/cache/figaro-1.2.0.gem b/vendor/cache/figaro-1.2.0.gem deleted file mode 100644 index 76c5f48b255a717467852e9a173533db6810684b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18944 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