summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyrylo Silin <silin@kyrylo.org>2019-06-09 16:38:07 +0300
committerKyrylo Silin <silin@kyrylo.org>2019-06-09 17:11:24 +0300
commit7ce5ca70bb4a1ff447269bdde4cb5d07b8932c8a (patch)
tree0b25a4fa21dd82fedc07413fceab680b7155c528
parent17bdfd7082e66c3d2ea0d97b26d122f6e80e0050 (diff)
downloadpry-7ce5ca70bb4a1ff447269bdde4cb5d07b8932c8a.tar.gz
Add Pry::Env
Env is a helper module to work with environment variables.
-rw-r--r--lib/pry.rb1
-rw-r--r--lib/pry/env.rb18
-rw-r--r--spec/env_spec.rb26
3 files changed, 45 insertions, 0 deletions
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