Skip to content

Commit 17eab3d

Browse files
committed
Fix Readline check on Ruby 1.8.7
`Kernel.const_defined?` will return true for root-level constants in Ruby 1.9+, but false in Ruby 1.8. `Object.const_defined?` works consistently in all versions.
1 parent 382ac67 commit 17eab3d

File tree

2 files changed

+3
-3
lines changed

2 files changed

+3
-3
lines changed

lib/thor/line_editor/readline.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ class Thor
77
module LineEditor
88
class Readline < Basic
99
def self.available?
10-
Kernel.const_defined?(:Readline)
10+
Object.const_defined?(:Readline)
1111
end
1212

1313
def readline

spec/line_editor/readline_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010

1111
describe '.available?' do
1212
it 'returns true when ::Readline exists' do
13-
allow(Kernel).to receive(:const_defined?).with(:Readline).and_return(true)
13+
allow(Object).to receive(:const_defined?).with(:Readline).and_return(true)
1414
expect(described_class).to be_available
1515
end
1616

1717
it 'returns false when ::Readline does not exist' do
18-
allow(Kernel).to receive(:const_defined?).with(:Readline).and_return(false)
18+
allow(Object).to receive(:const_defined?).with(:Readline).and_return(false)
1919
expect(described_class).not_to be_available
2020
end
2121
end

0 commit comments

Comments
 (0)