LoginSignup
0
0

More than 1 year has passed since last update.

Ruby のプロジェクトから環境変数(ENV)っぽい値を取り出す

Last updated at Posted at 2021-06-10

何がしたいか

git リポジトリの Ruby のプロジェクトから環境変数(ENV)っぽい値を取り出したくなった。

やり方

これでできる。
割とバグってるので使用は自己責任で。

これでできる.sh
git grep -h -o -E "ENV(\[|\.fetch).*" |
  ruby -ane 'puts $_.match(%r|['\''"](.+?)["'\'']|)[1] rescue nil' |
  sort |
  uniq

解説

  • git grep -h -o -E "ENV(\[|\.fetch).*"
    • ENV['HOGE'] とか ENV.fetch("HOGE") { 'fuga' } とかを抽出する
    • -h ファイル名なし
    • -o マッチした部分だけ
    • -E 正規表現
  • ruby -ane 'puts $_.match(%r|['\''"](.+?)["'\'']|)[1] rescue nil'
    • ENV.fetch("HOGE") { 'fuga' } から ' " で囲まれた部分を最小で取り出す
    • ENV が同じ行に二つ以上あるとバグります。
    • sed でも perl でも grep でもできそう。
  • sort|uniq
    • ソートして重複を排除します

mastdon で実行してみるとこんな感じ。

ALLOWED_PRIVATE_ADDRESSES
ALLOW_ACCESS_TO_HIDDEN_SERVICE
ALTERNATE_DOMAINS
AUTHORIZED_FETCH
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
BACKTRACE
BIND
BRANCH
BUNDLE_GEMFILE
CACHE_BUSTER_ENABLED
CACHE_BUSTER_SECRET
CACHE_BUSTER_SECRET_HEADER
CACHE_REDIS_URL
CAS_CALLBACK_URL
CAS_CA_PATH
CAS_DISABLE_SSL_VERIFICATION
CAS_EMAIL_KEY
CAS_ENABLED
CAS_FIRST_NAME_KEY
CAS_HOST
CAS_IMAGE_KEY
CAS_LAST_NAME_KEY
CAS_LOCATION_KEY
CAS_LOGIN_URL
CAS_LOGOUT_URL
CAS_NAME_KEY
CAS_NICKNAME_KEY
CAS_PHONE_KEY
CAS_PORT
CAS_SSL
CAS_UID_FIELD
CAS_UID_KEY
CAS_URL
CAS_VALIDATE_URL
CDN_HOST
DATABASE_URL
DB_HOST
DB_NAME
DB_PASS
DB_POOL
DB_PORT
DB_SSLMODE
DB_USER
DEFAULT_LOCALE
DISABLE_FOLLOWERS_SYNCHRONIZATION
DISABLE_SIMPLECOV
EMAIL_DOMAIN_ALLOWLIST
EMAIL_DOMAIN_DENYLIST
ES_ENABLED
ES_HOST
ES_PORT
ES_PREFIX
FFMPEG_BINARY
GITHUB_API_TOKEN
GITHUB_REPOSITORY
HEROKU
KEYBASE_BASE_URL
KEYBASE_DOMAIN
LDAP_BASE
LDAP_BIND_DN
LDAP_ENABLED
LDAP_HOST
LDAP_MAIL
LDAP_METHOD
LDAP_PASSWORD
LDAP_PORT
LDAP_SEARCH_FILTER
LDAP_TLS_NO_VERIFY
LDAP_UID
LDAP_UID_CONVERSION_ENABLED
LDAP_UID_CONVERSION_REPLACE
LDAP_UID_CONVERSION_SEARCH
LIMITED_FEDERATION_MODE
LOCAL_DOMAIN
LOCAL_HTTPS
MAX_FOLLOWS_RATIO
MAX_FOLLOWS_THRESHOLD
MAX_REQUEST_POOL_SIZE
MAX_SESSION_ACTIVATIONS
MAX_THREADS
NODE_ENV
OAUTH_REDIRECT_AT_SIGN_IN
OTHER_DATABASE_URL
OTP_SECRET
PAM_CONTROLLED_SERVICE
PAM_DEFAULT_SERVICE
PAM_EMAIL_DOMAIN
PAM_ENABLED
PAPERCLIP_ROOT_PATH
PAPERCLIP_ROOT_URL
PATH
PERSISTENT_TIMEOUT
PGHERO_STATS_DATABASE_URL
PORT
PREPARED_STATEMENTS
QUERY_TRACE_ENABLED
RAILS_ENV
RAILS_LOG_LEVEL
RAILS_MASTER_KEY
RAILS_SERVE_STATIC_FILES
REDIS_DB
REDIS_HOST
REDIS_NAMESPACE
REDIS_PASSWORD
REDIS_PORT
REDIS_URL
REMOTE_DEV
REPO
S3_ALIAS_HOST
S3_BUCKET
S3_CLOUDFRONT_HOST
S3_ENABLED
S3_ENDPOINT
S3_HOSTNAME
S3_MULTIPART_THRESHOLD
S3_OPEN_TIMEOUT
S3_OVERRIDE_PATH_STYLE
S3_PERMISSION
S3_PROTOCOL
S3_READ_TIMEOUT
S3_REGION
S3_SIGNATURE_VERSION
SAML_ACS_URL
SAML_ALLOWED_CLOCK_DRIFT
SAML_ATTRIBUTES_STATEMENTS_EMAIL
SAML_ATTRIBUTES_STATEMENTS_FIRST_NAME
SAML_ATTRIBUTES_STATEMENTS_FULL_NAME
SAML_ATTRIBUTES_STATEMENTS_LAST_NAME
SAML_ATTRIBUTES_STATEMENTS_UID
SAML_ATTRIBUTES_STATEMENTS_VERIFIED
SAML_ATTRIBUTES_STATEMENTS_VERIFIED_EMAIL
SAML_CERT
SAML_ENABLED
SAML_IDP_CERT
SAML_IDP_CERT_FINGERPRINT
SAML_IDP_CERT_FINGERPRINT_VALIDATOR
SAML_IDP_SSO_TARGET_PARAMS
SAML_IDP_SSO_TARGET_URL
SAML_ISSUER
SAML_NAME_IDENTIFIER_FORMAT
SAML_PRIVATE_KEY
SAML_SECURITY_ASSUME_EMAIL_IS_VERIFIED
SAML_SECURITY_WANT_ASSERTION_ENCRYPTED
SAML_SECURITY_WANT_ASSERTION_SIGNED
SAML_UID_ATTRIBUTE
SECRET_KEY_BASE
SIDEKIQ_REDIS_URL
SINGLE_USER_MODE
SKIP_POST_DEPLOYMENT_MIGRATIONS
SMTP_AUTH_METHOD
SMTP_CA_FILE
SMTP_DELIVERY_METHOD
SMTP_DOMAIN
SMTP_ENABLE_STARTTLS_AUTO
SMTP_FROM_ADDRESS
SMTP_LOGIN
SMTP_OPENSSL_VERIFY_MODE
SMTP_PASSWORD
SMTP_PORT
SMTP_REPLY_TO
SMTP_SERVER
SMTP_SSL
SMTP_TLS
SOCKET
SOURCE_BASE_URL
SOURCE_TAG
STATSD_ADDR
STATSD_NAMESPACE
STREAMING_API_BASE_URL
SWIFT_AUTH_URL
SWIFT_CACHE_TTL
SWIFT_CONTAINER
SWIFT_DOMAIN_NAME
SWIFT_ENABLED
SWIFT_OBJECT_URL
SWIFT_PASSWORD
SWIFT_PROJECT_ID
SWIFT_REGION
SWIFT_TENANT
SWIFT_USERNAME
TEST_ENV_NUMBER
TRUSTED_PROXY_IP
USER
USER_ACTIVE_DAYS
VAPID_PRIVATE_KEY
VAPID_PUBLIC_KEY
WEB_CONCURRENCY
WEB_DOMAIN
http_proxy
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0