Nach 2,5 Jahren möchte ich teile, was ich für die beste Lösung gefunden habe.
erstellen .env
-Datei im Stammverzeichnis der Anwendung, und fügen Sie eine Flagge, um die Anwendungsumgebung spezifiziert:
ENVIRONMENT=development
Dann dotenv
gem Brandon Keeper verwenden, um alle Umgebungsvariablen aus dieser laden Datei. Jetzt können Sie alle in .env
angegebenen Umgebungsvariablen in Rake-Tasks verwenden.
Rake wird auf dem expliziten Wert in .env
gesetzt verlassen, so müssen Sie für jede Umgebung, die Sie planen getrennte .env
Dateien erstellen, die auf (z.B. dev, Test, Inszenierung, Produktion, etc).
Probe Rakefile
:
require 'dotenv/tasks'
task :default => :help
desc 'Show this help menu'
task :help do
puts "Available rake tasks:"
system('rake --tasks')
end
# Will run in any environment
desc 'Demo task'
task :demo_task => :dotenv do
puts "Running demo task in '#{ENV['ENVIRONMENT']}' mode"
end
# Will only run if ENVIRONMENT value in .env file is set to 'production'
desc 'Production-only task'
task :production_task => :dotenv do
if ENV['ENVIRONMENT'] == 'production'
puts "Running 'Production-only' task"
else
puts "Won't run, because the environment is not set to PRODUCTION!"
end
end
# Will only run if ENVIRONMENT value in .env file is set to 'development'
desc 'Development-only task'
task :dev_task => :dotenv do
if ENV['ENVIRONMENT'] == 'development'
puts "Running 'Development-only' task"
else
puts "Won't run, because the environment is not set to DEVELOPMENT!"
end
end
Wenn Sie die Umgebungsvariablen in Ihrem Rack oder in Sinatra app (die Sie wahrscheinlich tun) verwenden möchten, fügen Sie den folgenden auf die Config-Anwendung oder Bootstrap-Block:
require 'dotenv'
Dotenv.load
http://stackoverflow.com/questions/2715035/rails-env-vs-rails-env – ted
@ted, dieser Link bezieht sich auf die Verwendung der Rack-Umgebung in Rails und erwähnt nichts über Rake. Wie gilt es? –
Bitte zeigen Sie diese verschiedenen Rake-Aufgaben an. Vielleicht können wir helfen, wenn wir Code sehen. – robkuz