Domanda

Sto cercando di capire ciò che il modo migliore per garantire il mio ambiente di staging sarebbe. Attualmente sto correndo sia messa in scena e la produzione sullo stesso server.

Le due opzioni che posso pensare sarebbe quello di:

Utilizza rotaie digerire autenticazione

ho potuto mettere qualcosa di simile nel application_controller.rb

# Password protection for staging environment
if RAILS_ENV == 'staging'
  before_filter :authenticate_for_staging
end

def authenticate_for_staging
  success = authenticate_or_request_with_http_digest("Staging") do |username|
    if username == "staging"
      "staging_password"
    end
  end
  unless success
    request_http_digest_authentication("Admin", "Authentication failed")
  end
end

Questo è stato strappato dal blog di Ryan Daigle. Sto correndo sugli ultimi Rails 2.3 quindi dovrei essere libero dal problema di sicurezza che avevano con questo.

Utilizza l'autenticazione del server web

Potrei anche farlo con .htaccess o Apache i permessi, ma rende il mio server provisioning leggermente più complesso (sto usando Chef, e richiederebbe diverse configurazioni di Apache per la stadiazione / produzione).


Per ora ho il primo implementata e funzionante, vedete ay problemi con esso? Ho perso qualcosa di ovvio? Grazie in anticipo!

È stato utile?

Soluzione

urtare questo per aiutare gli altri, come me, come ho letto questo prima di optare per una soluzione simile, ma più pulito.

# config/environments/staging.rb

MyApp::Application.configure do
  config.middleware.insert_after(::Rack::Lock, "::Rack::Auth::Basic", "Staging") do |u, p|
    [u, p] == ['username', 'password']
  end

 #... other config
end

ho scritto un breve post del blog su di esso.

Altri suggerimenti

Se si sta distribuendo con ambienti multi-sosta e in modo da avere ambiente di produzione e ambiente di staging, avete solo bisogno di aggiungere queste righe al config / ambienti / staging.rb

MyApp::Application.configure do
  # RESTRICTING ACCESS TO THE STAGE ENVIRONMENT
  config.middleware.insert_before(::Rack::Runtime, "::Rack::Auth::Basic", "Staging") do |u, p|
    u == 'tester' && p == 'secret'
  end

  ...

end

In questo modo, non è necessario configurare Apache.

Sto usando Ruby 2 con Rails 4 e funziona come un fascino!

Vorrei andare con l'autenticazione di base http, non vedo problemi inerenti con esso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top