diff --git a/lib/pry.rb b/lib/pry.rb index 1be39d92..e2f06c45 100644 --- a/lib/pry.rb +++ b/lib/pry.rb @@ -28,6 +28,7 @@ require 'pry/system_command_handler' require 'pry/control_d_handler' require 'pry/command_state' require 'pry/warning' +require 'pry/env' Pry::Commands = Pry::CommandSet.new unless defined?(Pry::Commands) diff --git a/lib/pry/env.rb b/lib/pry/env.rb new file mode 100644 index 00000000..e7451d7e --- /dev/null +++ b/lib/pry/env.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class Pry + # Env is a helper module to work with environment variables. + # + # @since ?.?.? + # @api private + module Env + def self.[](key) + return unless ENV.key?(key) + + value = ENV[key] + return if value == '' + + value + end + end +end diff --git a/spec/env_spec.rb b/spec/env_spec.rb new file mode 100644 index 00000000..8e42059f --- /dev/null +++ b/spec/env_spec.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +RSpec.describe Pry::Env do + describe "#[]" do + let(:key) { 'PRYTESTKEY' } + + after { ENV.delete(key) } + + context "when ENV contains the passed key" do + before { ENV[key] = 'val' } + after { ENV.delete(key) } + + specify { expect(described_class[key]).to eq('val') } + end + + context "when ENV doesn't contain the passed key" do + specify { expect(described_class[key]).to be_nil } + end + + context "when ENV contains the passed key but its value is nil" do + before { ENV[key] = '' } + + specify { expect(described_class[key]).to be_nil } + end + end +end