Ruby: Slapčių (aplinkos kintamųjų) tvarkymas

Ši dokumentacija yra Išplėstiniai naudojimo būdai vadovo dalis. Visą vadovą rasite čia: Toliau su jūsų Ruby diegimais.

👋 Sveiki atvykę į Stackhero dokumentaciją!

Stackhero siūlo paruoštą naudoti Ruby cloud sprendimą, kuris suteikia daugybę privalumų, įskaitant:

  • Įdiekite savo programą per kelias sekundes su paprastu git push.
  • Naudokite savo domeno vardą ir pasinaudokite automatiniu HTTPS sertifikatų konfigūravimu, kad padidintumėte saugumą.
  • Mėgaukitės ramybe su automatinėmis atsarginėmis kopijomis, vieno paspaudimo atnaujinimais ir paprasta, skaidria bei prognozuojama kainodara.
  • Gaukite optimalią veikimo ir tvirtą saugumą dėka privačios ir dedikuotos VM.

Taupykite laiką ir supaprastinkite savo gyvenimą: išbandyti Stackhero Ruby cloud hosting sprendimą užtrunka tik 5 minutes!

Tam tikru momentu jums reikės tvarkyti slapčius, tokius kaip tokenai ar slaptažodžiai duomenų bazėms ir trečiųjų šalių paslaugoms. Labai svarbu saugiai saugoti šiuos slapčius. Venkite tiesiogiai įterpti slapčius į savo saugyklą ar kodą, nes tai kelia rimtą saugumo riziką.

Aplinkos kintamieji siūlo du reikšmingus privalumus:

  1. Jūsų slapčiai nebus saugomi jūsų Git saugykloje, sumažinant riziką, jei kas nors gautų prieigą prie jūsų šaltinio kodo.
  2. Galite naudoti skirtingus prisijungimo duomenis skirtingoms aplinkoms. Pavyzdžiui, prisijungti prie savo gamybos duomenų bazės gamyboje, o vystymo duomenų bazės vystymo metu.

Vystymui sukurkite .env failą savo projekto šaknyje. Šis failas bus išskirtas iš Git, kad jis niekada nebūtų įsipareigotas. Naudokite dotenv gem'ą, kad automatiškai įkeltumėte .env failą.

Pirmiausia pridėkite dotenv-rails gem'ą į savo Gemfile:

# Gemfile
gem 'dotenv-rails', groups: [:development, :test]

Tada įdiekite gem'ą:

bundle install

Tada sukurkite .env failą savo projekto šaknyje ir pridėkite savo kintamuosius:

RAILS_ENV="development"
DATABASE_PASSWORD="secretPassword"
THIRD_API_PRIVATE_KEY="secretKey"
# ...

Galiausiai, įsitikinkite, kad .env failas yra ignoruojamas Git:

echo '.env*' >> .gitignore

Staging ir gamybai .env failas nėra saugus ar praktiškas, nes jis negali būti saugomas Git saugykloje. Vietoj to, Stackhero suteikia saugų sprendimą tvarkyti aplinkos kintamuosius tiesiogiai jūsų Ruby paslaugos konfigūracijoje.

Galite nustatyti šiuos kintamuosius per Stackhero prietaisų skydelį, pasirinkdami savo Ruby paslaugą ir spustelėdami "Configure" mygtuką.

Ruby kalboje galite lengvai pasiekti aplinkos kintamuosius naudodami ENV. Pavyzdžiui, norėdami gauti DATABASE_PASSWORD, naudokite:

ENV['DATABASE_PASSWORD'] # => 'secretPassword'

Štai pavyzdys, kaip prisijungti prie RabbitMQ serverio naudojant aplinkos kintamuosius:

require 'bunny'

class RabbitMQClient
  def initialize
    @connection = Bunny.new(hostname: ENV['RABBITMQ_HOST'],
                            username: ENV['RABBITMQ_USERNAME'],
                            password: ENV['RABBITMQ_PASSWORD'])
    @connection.start
  end

  def publish(queue_name, message)
    channel = @connection.create_channel
    queue = channel.queue(queue_name)
    channel.default_exchange.publish(message, routing_key: queue.name)
  end

  def close
    @connection.close
  end
end

Vystymo platformoje jūsų .env failas gali apimti:

RABBITMQ_HOST='127.0.0.1'
RABBITMQ_USERNAME='developmentUser'
RABBITMQ_PASSWORD='developmentPassword'

Gamybai ir staging, nustatykite savo aplinkos kintamuosius Stackhero prietaisų skydelyje pagal Ruby paslaugos konfigūraciją, kaip parodyta žemiau:

RABBITMQ_HOST='<XXXXXX>.stackhero-network.com'
RABBITMQ_USERNAME='production'
RABBITMQ_PASSWORD='secretProductionPassword'