binding.repl 0.8.0 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.binding.repl.rc +6 -3
- data/.gitignore +0 -1
- data/.pryrc +2 -1
- data/.travis.yml +12 -0
- data/ChangeLog.txt +63 -10
- data/Gemfile +15 -1
- data/README.md +45 -120
- data/Rakefile +15 -0
- data/UNLICENSE.txt +24 -0
- data/binding.repl.gemspec +7 -9
- data/doc/disableatruntime.md +20 -0
- data/doc/rcfile.md +20 -0
- data/doc/runtimeoptions.md +42 -0
- data/doc/shellvariables.md +21 -0
- data/lib/binding.repl.rb +44 -33
- data/lib/binding.repl/console/irb.rb +0 -1
- data/lib/binding.repl/core_ext/binding.rb +9 -0
- data/lib/binding.repl/env.rb +18 -0
- data/lib/binding.repl/rcfile.rb +20 -0
- data/lib/binding.repl/version.rb +7 -0
- data/test/binding_repl_auto_test.rb +37 -0
- data/test/binding_repl_env_test.rb +30 -0
- data/test/binding_repl_irb_test.rb +9 -0
- data/test/binding_repl_pry_test.rb +13 -0
- data/test/binding_repl_rcfile_test.rb +32 -0
- data/test/binding_repl_rib_test.rb +13 -0
- data/test/binding_repl_ripl_test.rb +13 -0
- data/test/setup.rb +4 -0
- data/test/support/binding.repl/mock.rb +14 -0
- metadata +70 -33
- data/LICENSE.txt +0 -22
- data/lib/binding.repl/rc.rb +0 -24
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8c8ee86e2adcf420c60b05111ce45b43a00343b9
|
4
|
+
data.tar.gz: 117c6da32749481c1cd5436b5f5c43100904c2c7
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 42a9a9d209908ea84a870c9a655d3227ab98725302f3fa799a37bd193cf980cfdac8f2391220b0f66df47be772a80aebe4802915b35ca7560154b4b3f06023fc
|
7
|
+
data.tar.gz: 993a7b4835312e617d3c9554e3217384fded40b6c048bf63a331d0f55fa20a52ad4cb283000c3081dcdd7badcde57961019a08caa4f3135eb01cac1a95416a20
|
data/.binding.repl.rc
CHANGED
data/.gitignore
CHANGED
data/.pryrc
CHANGED
data/.travis.yml
ADDED
data/ChangeLog.txt
CHANGED
@@ -1,20 +1,73 @@
|
|
1
|
+
== v0.9.0
|
2
|
+
- read $HOME/.binding.repl.rc as TOML instead of JSON
|
3
|
+
TOML is easy to read and write when compared with JSON. I don't think
|
4
|
+
humans like writing JSON too much :) you can get up to speed with TOML
|
5
|
+
at https://github.com/mojombo/toml.
|
6
|
+
closes GH #12.
|
7
|
+
|
8
|
+
- rename Binding.repl.auto_load_order as Binding.repl.auto_order.
|
9
|
+
closes GH #14.
|
10
|
+
|
11
|
+
- rename shell environment variable BINDING_REPL_ORDER as auto_order
|
12
|
+
less keys to press, no SHIFT key needed!
|
13
|
+
a little background on why I decided to try lowercase.
|
14
|
+
http://pubs.opengroup.org/onlinepubs/7908799/xbd/envvar.html
|
15
|
+
closes GH #15.
|
16
|
+
|
17
|
+
- rename shell environment variable BINDING_REPL_RC as disable_rc.
|
18
|
+
ditto.
|
19
|
+
closes GH #15.
|
20
|
+
|
21
|
+
- 1.9.2 support
|
22
|
+
use of `private_constant` broke binding.repl support on 1.9.2
|
23
|
+
decided to not try and workaround it.
|
24
|
+
BindingRepl::LOOKUP is no longer a private constant.
|
25
|
+
|
26
|
+
- define the default lookup order for `binding.repl.auto`.
|
27
|
+
defined by default as ["pry", "ripl", "rib", "irb"].
|
28
|
+
|
29
|
+
- relicense binding.repl under the public domain
|
30
|
+
interesting idea. see http://unlicense.org
|
31
|
+
|
32
|
+
- rewrite all the documentation in doc/
|
33
|
+
the documentation that covers shell environment variables, the rc file, runtime options
|
34
|
+
and how to enable or disable binding.repl at runtime has been rewritten and polished for
|
35
|
+
what I think is much better docs!
|
36
|
+
|
37
|
+
- add BindingRepl::ENV
|
38
|
+
a module on top of shell environment variables binding.repl understands.
|
39
|
+
|
40
|
+
- rename BindingRepl::RC as BindingRepl::RCFile.
|
41
|
+
most of the module was rewritten and cleaned up.
|
42
|
+
|
43
|
+
- raise a LoadError from `binding.repl.auto` when no consoles are available.
|
44
|
+
when BindingRepl.auto_order has been assigned an empty array and then `binding.repl.auto` is
|
45
|
+
called a LoadError will be raised. the old behavior was to return nil.
|
46
|
+
|
47
|
+
- raise a LoadError with a backtrace
|
48
|
+
if a console cannot be loaded a LoadError is raised with a backtrace.
|
49
|
+
before, there was no backtrace (not helpful).
|
50
|
+
|
51
|
+
- with 100% more tests.
|
52
|
+
binding.repl has never had a test suite. at every release I would do a manual test
|
53
|
+
process that is prone to error. I can't repeat my actions as well as a computer. in this release
|
54
|
+
binding.repl has a testcase for every class or module available.
|
55
|
+
|
56
|
+
the test suite is builton FakeFS(when testing the rcfile) and a mocking library(rspec-mocks) when
|
57
|
+
testing the execution of ruby consoles.
|
58
|
+
|
1
59
|
== v0.8.0
|
2
60
|
- add "rib" as a supported console.
|
3
61
|
"rib" is inspired by ripl, the ripl-rc project, and by some of
|
4
62
|
the ideas from the pry project.
|
5
63
|
|
6
|
-
|
64
|
+
if you're curious:
|
7
65
|
* https://github.com/godfat/rib
|
8
66
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
initializer that should be run for the very first time.
|
14
|
-
|
15
|
-
binding.repl takes care of the initializer not being run again,
|
16
|
-
but the initializer is expected to do whatever it needs to make
|
17
|
-
the console available for use.
|
67
|
+
- add auto management of initializers
|
68
|
+
when a console is added to binding.repl it also must define an
|
69
|
+
initializer that is run the very first time a console is invoked.
|
70
|
+
binding.repl takes care of the initializer not being run again.
|
18
71
|
|
19
72
|
see lib/binding.repl/console/*.rb for examples.
|
20
73
|
|
data/Gemfile
CHANGED
@@ -1,8 +1,22 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
gemspec
|
3
3
|
|
4
|
-
group :
|
4
|
+
group :development do
|
5
|
+
gem "rake"
|
6
|
+
end
|
7
|
+
|
8
|
+
group :test do
|
9
|
+
gem "rspec-mocks"
|
10
|
+
end
|
11
|
+
|
12
|
+
group :test, :repls do
|
5
13
|
gem 'ripl'
|
6
14
|
gem 'pry'
|
7
15
|
gem 'rib'
|
16
|
+
gem "fakefs", require: "fakefs/safe"
|
8
17
|
end
|
18
|
+
|
19
|
+
platform :rbx do
|
20
|
+
gem "rubysl"
|
21
|
+
gem "rubysl-test-unit"
|
22
|
+
end
|
data/README.md
CHANGED
@@ -1,31 +1,27 @@
|
|
1
1
|
| Project | binding.repl
|
2
2
|
|:----------------|:--------------------------------------------------
|
3
|
-
|
|
4
|
-
|
|
5
|
-
| Code Metrics | [![Code Climate](https://codeclimate.com/github/robgleeson/binding.repl.png)](https://codeclimate.com/github/robgleeson/binding.repl)
|
6
|
-
| CI | [![Build Status](https://travis-ci.org/robgleeson/ichannel.binding.repl.png)](https://travis-ci.org/robgleeson/binding.repl)
|
7
|
-
| Author | Robert Gleeson
|
3
|
+
| homepage | https://github.com/robgleeson/binding.repl
|
4
|
+
| build | [![Build Status](https://travis-ci.org/robgleeson/binding.repl.png)](https://travis-ci.org/robgleeson/binding.repl)
|
8
5
|
|
9
6
|
__DESCRIPTION__
|
10
7
|
|
11
8
|
__binding.repl__ can start a number of different ruby consoles at runtime.
|
12
9
|
IRB, ripl, rib, and pry(of course!) can be invoked at runtime in any context
|
13
|
-
that an instance of `Binding` closes over.
|
10
|
+
that an instance of `Binding` closes over. I owe credit to John Mair([banisterfiend](https://github.com/banister)),
|
11
|
+
the creator of pry, for seeing the potential in a console that can be started at
|
12
|
+
runtime and bound to the context of a `Binding` easily.
|
14
13
|
|
15
|
-
|
16
|
-
|
17
|
-
started at runtime and bound to the context of a `Binding`. I don't
|
18
|
-
think a single ruby console has put as much emphasize on a console
|
19
|
-
that be invoked at runtime as Pry has.
|
14
|
+
the interface to invoke pry at runtime has become known in a lot of circles and
|
15
|
+
I thought it'd be cool to offer the same feature to other REPLs.
|
20
16
|
|
21
|
-
|
22
|
-
use but if you look at other ruby console implementations you might find
|
23
|
-
the eval() of code is the same. It happens through `Binding#eval` which
|
24
|
-
closes over a context(maybe the context is "Foo", a class, or an
|
25
|
-
instance of "Foo").
|
17
|
+
__FEATURES__
|
26
18
|
|
27
|
-
|
28
|
-
|
19
|
+
- `binding.pry` for all ruby consoles
|
20
|
+
- start the consoles IRB, Pry, Ripl, or Rib at runtime
|
21
|
+
- option to auto discover and start the first available console
|
22
|
+
- enable or disable at runtime(a la Pry)
|
23
|
+
- configurable via shell environment variables and an optional RC file in `$HOME`.
|
24
|
+
- easily extended to support new consoles.
|
29
25
|
|
30
26
|
__EXAMPLES__
|
31
27
|
|
@@ -35,136 +31,64 @@ _Rails_
|
|
35
31
|
class BlogsController < ApplicationController
|
36
32
|
def show
|
37
33
|
@blog = Blog.find(params[:id])
|
38
|
-
binding.repl.{pry,irb,ripl,rib
|
34
|
+
binding.repl.{pry,irb,ripl,rib}
|
39
35
|
end
|
40
36
|
end
|
41
37
|
```
|
42
38
|
|
43
39
|
_Auto discovery_
|
44
40
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
# default order is: ripl, pry, rib, or irb.
|
49
|
-
binding.repl.auto
|
50
|
-
|
51
|
-
# change default load order
|
52
|
-
Binding.repl.auto_load_order = %w(pry ripl irb rib)
|
53
|
-
|
54
|
-
# remove "irb" & "rib" from auto discovery
|
55
|
-
Binding.repl.auto_load_order -= ["irb", "rib"]
|
56
|
-
end
|
57
|
-
```
|
58
|
-
|
59
|
-
_Enable/disable at runtime_
|
60
|
-
|
61
|
-
```ruby
|
62
|
-
class Baz
|
63
|
-
# invoke irb
|
64
|
-
binding.repl.irb
|
65
|
-
Binding.repl.disable!
|
66
|
-
|
67
|
-
# no-op, returns :'binding.repl.disabled' and continues execution.
|
68
|
-
binding.repl.irb
|
69
|
-
binding.repl.ripl
|
70
|
-
|
71
|
-
# invoke pry
|
72
|
-
Binding.repl.enable!
|
73
|
-
binding.repl.pry
|
74
|
-
end
|
75
|
-
```
|
76
|
-
|
77
|
-
__NOTES__
|
78
|
-
|
79
|
-
_CONFIGURATION_
|
80
|
-
|
81
|
-
ripl, rib, and pry can be customized by passing a set of key-value pairs but
|
82
|
-
IRB isn't as straight forward to configure and I haven't implemented
|
83
|
-
any customization options for it yet.
|
84
|
-
|
85
|
-
ripl can be invoked with options that are forwarded to `Ripl.start(…)`:
|
86
|
-
|
87
|
-
```ruby
|
88
|
-
class Foo
|
89
|
-
binding.repl.ripl riplrc: false
|
90
|
-
end
|
91
|
-
```
|
92
|
-
|
93
|
-
pry can be configured in the same way. options are forwarded to `Pry.start(…)`:
|
41
|
+
the first available console can be loaded with `binding.repl.auto`. the default order
|
42
|
+
is defined `["pry", "ripl", "rib", "irb"]` but it can be changed at runtime, through
|
43
|
+
an RC file, and with shell environment variables.
|
94
44
|
|
95
45
|
```ruby
|
96
46
|
class Foo
|
97
|
-
|
98
|
-
|
99
|
-
```
|
100
|
-
|
101
|
-
rib is a little less well known ruby console that binding.repl
|
102
|
-
supports since v0.8.0. I don't know much about the options it accepts,
|
103
|
-
but it does accept some. please check out [its github page](https://github.com/godfat/rib)
|
104
|
-
if you're curious.
|
47
|
+
# auto discover and start the first available console.
|
48
|
+
binding.repl.auto
|
105
49
|
|
106
|
-
|
107
|
-
|
108
|
-
binding.repl.rib({})
|
50
|
+
# change default load order of auto (pry first, etc..)
|
51
|
+
Binding.repl.auto_order = ["pry", "ripl", "irb"]
|
109
52
|
end
|
110
53
|
```
|
111
54
|
|
112
|
-
|
55
|
+
__DOCS__
|
113
56
|
|
114
|
-
|
115
|
-
|
116
|
-
reading a `.binding.repl.rc` file from $HOME or by setting a shell
|
117
|
-
environment variable. `binding.repl.rc` is a simple JSON file.
|
57
|
+
- RCFILE <br>
|
58
|
+
configure the default order of `binding.repl.auto` with an RC file.
|
118
59
|
|
119
|
-
|
120
|
-
ripl, so her `$HOME/.binding.repl.rc` would look like this:
|
121
|
-
```javascript
|
122
|
-
{
|
123
|
-
"auto_load_order": ["ripl", "irb"]
|
124
|
-
}
|
125
|
-
```
|
60
|
+
see [doc/rcfile.md](https://github.com/robgleeson/binding.repl/blob/master/doc/rcfile.md)
|
126
61
|
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
"auto_load_order": ["pry", "irb"]
|
131
|
-
}
|
132
|
-
```
|
62
|
+
- SHELL ENVIRONMENT VARIABLES <br>
|
63
|
+
temporarily disable the RC file or configure the default of order of `binding.repl.auto` with shell
|
64
|
+
envionment variables.
|
133
65
|
|
134
|
-
|
135
|
-
they can use `binding.repl.auto`:
|
66
|
+
see [doc/shellvariables.md](https://github.com/robgleeson/binding.repl/blob/master/doc/shellvariables.md)
|
136
67
|
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
binding.repl.auto
|
142
|
-
end
|
143
|
-
```
|
144
|
-
|
145
|
-
_SHELL ENVIRONMENT VARIABLES_
|
68
|
+
- RUNTIME OPTIONS <br>
|
69
|
+
ripl, rib, and pry can be configured at runtime by passing a set of
|
70
|
+
key-value pairs but IRB isn't as straight forward to configure and I
|
71
|
+
haven't implemented any customization options for it yet.
|
146
72
|
|
147
|
-
binding.repl
|
73
|
+
see [doc/runtimeoptions.md](https://github.com/robgleeson/binding.repl/blob/master/doc/runtimeoptions.md)
|
148
74
|
|
149
|
-
|
150
|
-
|
151
|
-
export BINDING_REPL_RC=0
|
75
|
+
- ENABLE/DISABLE AT RUNTIME <br>
|
76
|
+
binding.repl can be enabled or disabled at runtime.
|
152
77
|
|
153
|
-
|
154
|
-
# takes precendence over $HOME/.binding.repl.rc when set
|
155
|
-
export BINDING_REPL_ORDER=pry,irb
|
156
|
-
```
|
78
|
+
see [doc/disableatruntime.md](https://github.com/robgleeson/binding.repl/blob/master/doc/disableatruntime.md)
|
157
79
|
|
158
|
-
|
80
|
+
__DEPENDENCIES__
|
159
81
|
|
160
82
|
binding.repl doesn't depend on anything. it's up to you to meet the
|
161
83
|
dependencies(pry, irb, rib, and/or ripl). `binding.repl.{ripl,pry,rib,irb}`
|
162
84
|
will try to load the appropiate console for you if it looks like it
|
163
85
|
hasn't been loaded yet.
|
164
86
|
|
165
|
-
|
87
|
+
__PLATFORM SUPPORT__
|
166
88
|
|
167
|
-
|
89
|
+
should work on all 1.9+ ruby implementations. please open an issue if you find a bug!
|
90
|
+
|
91
|
+
__INSTALL__
|
168
92
|
|
169
93
|
```
|
170
94
|
gem install binding.repl
|
@@ -186,7 +110,8 @@ Rest of the Pry team(!!):
|
|
186
110
|
|
187
111
|
__LICENSE__
|
188
112
|
|
189
|
-
|
113
|
+
Public Domain. see UNLICENSE.txt.
|
114
|
+
|
190
115
|
|
191
116
|
__CONTRIBUTING__
|
192
117
|
|
data/Rakefile
CHANGED
@@ -1 +1,16 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
+
require "rake/testtask"
|
3
|
+
|
4
|
+
Rake::TestTask.new do |t|
|
5
|
+
t.test_files = FileList["test/*_test.rb"]
|
6
|
+
t.verbose = true
|
7
|
+
end
|
8
|
+
task :default => :test
|
9
|
+
|
10
|
+
desc "run the examples in examples/*.rb"
|
11
|
+
task :examples do
|
12
|
+
Dir["examples/*.rb"].each do |example|
|
13
|
+
sh "ruby %s" % [example]
|
14
|
+
puts
|
15
|
+
end
|
16
|
+
end
|
data/UNLICENSE.txt
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
This is free and unencumbered software released into the public domain.
|
2
|
+
|
3
|
+
Anyone is free to copy, modify, publish, use, compile, sell, or
|
4
|
+
distribute this software, either in source code form or as a compiled
|
5
|
+
binary, for any purpose, commercial or non-commercial, and by any
|
6
|
+
means.
|
7
|
+
|
8
|
+
In jurisdictions that recognize copyright laws, the author or authors
|
9
|
+
of this software dedicate any and all copyright interest in the
|
10
|
+
software to the public domain. We make this dedication for the benefit
|
11
|
+
of the public at large and to the detriment of our heirs and
|
12
|
+
successors. We intend this dedication to be an overt act of
|
13
|
+
relinquishment in perpetuity of all present and future rights to this
|
14
|
+
software under copyright law.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
19
|
+
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
20
|
+
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
21
|
+
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
22
|
+
OTHER DEALINGS IN THE SOFTWARE.
|
23
|
+
|
24
|
+
For more information, please refer to <http://unlicense.org/>
|
data/binding.repl.gemspec
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
require "./lib/binding.repl"
|
2
|
+
require "./lib/binding.repl/version"
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = "binding.repl"
|
5
|
-
spec.version =
|
5
|
+
spec.version = BindingRepl.version
|
6
6
|
spec.authors = ["Robert Gleeson"]
|
7
7
|
spec.email = ["rob@flowof.info"]
|
8
8
|
spec.description = "binding.repl: binding.pry for all ruby consoles"
|
9
9
|
spec.summary = spec.description
|
10
10
|
spec.homepage = "https://github.com/robgleeson/binding.repl"
|
11
|
-
spec.license = "
|
11
|
+
spec.license = "Public Domain"
|
12
12
|
|
13
13
|
spec.files = `git ls-files`.split($/)
|
14
14
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
@@ -16,20 +16,18 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.require_paths = ["lib"]
|
17
17
|
spec.required_ruby_version = ">= 1.9.2"
|
18
18
|
|
19
|
+
spec.add_runtime_dependency "toml", "~> 0.0.3"
|
19
20
|
spec.add_development_dependency "bundler", "~> 1.3"
|
20
21
|
spec.add_development_dependency "rake"
|
21
22
|
|
22
23
|
spec.post_install_message = <<-INSTALL_MESSAGE
|
23
24
|
|
24
25
|
** binding.repl **
|
25
|
-
Thanks for installing v#{
|
26
|
-
Check out
|
27
|
-
|
28
|
-
README.md
|
29
|
-
https://github.com/robgleeson/binding.repl/blob/v#{Binding.repl.version}/README.md
|
26
|
+
Thanks for installing v#{BindingRepl.version}!
|
27
|
+
Check out ChangeLog.txt to read about what's changed.
|
30
28
|
|
31
29
|
ChangeLog.txt
|
32
|
-
https://github.com/robgleeson/binding.repl/blob/v#{
|
30
|
+
https://github.com/robgleeson/binding.repl/blob/v#{BindingRepl.version}/ChangeLog.txt
|
33
31
|
|
34
32
|
INSTALL_MESSAGE
|
35
33
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
__ENABLE/DISABLE AT RUNTIME__
|
2
|
+
|
3
|
+
binding.repl can be enabled or disabled at runtime. by default, it is enabled.
|
4
|
+
to disable, you'd write something like:
|
5
|
+
|
6
|
+
```ruby
|
7
|
+
class Foo
|
8
|
+
Binding.repl.disable!
|
9
|
+
binding.repl.irb # does nothing. execution continues.
|
10
|
+
end
|
11
|
+
```
|
12
|
+
|
13
|
+
it can be re-enabled just as easily:
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
class Foo
|
17
|
+
Binding.repl.enable!
|
18
|
+
binding.repl.irb # opens an IRB session inside class 'Foo'
|
19
|
+
end
|
20
|
+
```
|
data/doc/rcfile.md
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
__RCFILE__
|
2
|
+
|
3
|
+
binding.repl reads a configuration file from `$HOME/.binding.repl.rc`.
|
4
|
+
the configuration file is written in a human readable and writable
|
5
|
+
language called [toml](https://github.com/mojombo/toml).
|
6
|
+
|
7
|
+
at the moment the only configuration option is to define the order that
|
8
|
+
`binding.repl.auto` will use to look for ruby consoles. the example sets
|
9
|
+
up pry to be the first preference, then ripl, then rib, and finally irb.
|
10
|
+
|
11
|
+
```toml
|
12
|
+
[auto]
|
13
|
+
order = ["pry", "ripl", "rib", "irb"]
|
14
|
+
```
|
15
|
+
|
16
|
+
__DISABLE OR OVERRIDE__
|
17
|
+
|
18
|
+
the RC file is optional. if it doesn't exist that's cool.
|
19
|
+
it can be temporarily disabled and overriden by setting [shell environment variables](https://github.com/robgleeson/binding.repl/blob/master/doc/shellvariables.md)
|
20
|
+
when it does exist.
|
@@ -0,0 +1,42 @@
|
|
1
|
+
__RUNTIME OPTIONS__
|
2
|
+
|
3
|
+
__pry__
|
4
|
+
|
5
|
+
pry can be started with options that are forwarded to [Pry.start(…)](http://rubydoc.info/github/banister/pry/Pry#start-class_method) (API docs).
|
6
|
+
|
7
|
+
```ruby
|
8
|
+
class Foo
|
9
|
+
binding.repl.pry quiet: true
|
10
|
+
end
|
11
|
+
```
|
12
|
+
|
13
|
+
__ripl__
|
14
|
+
|
15
|
+
ripl can be started with options that are forwarded to `Ripl.start(…)`.
|
16
|
+
unfortunately, `Ripl.start(…)` has no API documentation.
|
17
|
+
check out [its github page](https://github.com/cldwalker/ripl) for more information.
|
18
|
+
|
19
|
+
```ruby
|
20
|
+
class Foo
|
21
|
+
binding.repl.ripl riplrc: false
|
22
|
+
end
|
23
|
+
```
|
24
|
+
|
25
|
+
__rib__
|
26
|
+
|
27
|
+
[rib](https://github.com/godfat/rib) is a little less well known ruby console that binding.repl
|
28
|
+
supports since v0.8.0. it can be configured to change the prompt and the prefix inserted before
|
29
|
+
a return value.
|
30
|
+
|
31
|
+
rib can be started with options that are forwarded to
|
32
|
+
[Rib.anchor(…)](http://rdoc.info/github/godfat/rib/Rib/Anchor/Imp#anchor-instance_method) (API docs).
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
class Foo
|
36
|
+
binding.repl.rib prompt: ">> ", result_prompt: "# => "
|
37
|
+
end
|
38
|
+
```
|
39
|
+
|
40
|
+
__irb__
|
41
|
+
|
42
|
+
binding.repl doesn't implement any runtime options for IRB.
|
@@ -0,0 +1,21 @@
|
|
1
|
+
__SHELL ENVIRONMENT VARIABLES__
|
2
|
+
|
3
|
+
__$auto\_order__
|
4
|
+
|
5
|
+
binding.repl can start the first available console through `binding.repl.auto`. the lookup order
|
6
|
+
can be defined in an RC file or with an environment variable. the environment variable is simply
|
7
|
+
named `auto_order` and takes precendece over an RC file when defined. values can be separated by
|
8
|
+
a comma(`,`) or a colon(`:`).
|
9
|
+
|
10
|
+
example
|
11
|
+
|
12
|
+
$ auto_order=pry,irb ruby myscript.rb
|
13
|
+
|
14
|
+
__$disable\_rc__
|
15
|
+
|
16
|
+
the `disable_rc` environment variable can be set to '1' or 'true' to disable or abort the load
|
17
|
+
of `$HOME/.binding.repl.rc`.
|
18
|
+
|
19
|
+
example
|
20
|
+
|
21
|
+
$ disable_rc=1 ruby myscript.rb
|
data/lib/binding.repl.rb
CHANGED
@@ -1,39 +1,58 @@
|
|
1
1
|
class BindingRepl
|
2
|
-
module BindingMixin
|
3
|
-
def repl
|
4
|
-
Binding.repl.new(self)
|
5
|
-
end
|
6
|
-
end
|
7
|
-
|
8
2
|
LOOKUP = {}
|
9
3
|
LOOKUP.default = [proc { true }, proc { :'binding.repl.unknown_console' }]
|
10
|
-
|
4
|
+
singleton_class.class_eval { attr_accessor :auto_order }
|
11
5
|
|
12
6
|
def self.name
|
13
7
|
"binding.repl"
|
14
8
|
end
|
15
9
|
|
16
|
-
def self.
|
10
|
+
def self.to_s
|
17
11
|
name
|
18
12
|
end
|
19
13
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
14
|
+
#
|
15
|
+
# returns when binding.repl is disabled.
|
16
|
+
#
|
17
|
+
# @return [Boolean]
|
18
|
+
#
|
24
19
|
def self.disabled?
|
25
20
|
@disabled
|
26
21
|
end
|
27
22
|
|
23
|
+
#
|
24
|
+
# enable binding.repl (enabled by default)
|
25
|
+
#
|
26
|
+
# @return [true]
|
27
|
+
#
|
28
28
|
def self.enable!
|
29
29
|
@disabled = false
|
30
30
|
!@disabled
|
31
31
|
end
|
32
32
|
|
33
|
+
#
|
34
|
+
# disable binding.repl
|
35
|
+
# future calls to `binding.repl.{auto,pry,rib,ripl}` become a no-op.
|
36
|
+
#
|
37
|
+
# @return [true]
|
38
|
+
#
|
33
39
|
def self.disable!
|
34
40
|
@disabled = true
|
35
41
|
end
|
36
42
|
|
43
|
+
#
|
44
|
+
# @param [Symbol] console
|
45
|
+
# the name of a console. available as `binding.repl.<console>`.
|
46
|
+
#
|
47
|
+
# @param [Proc] initializer
|
48
|
+
# a Proc that is called on the very first call of `binding.repl.<console>`.
|
49
|
+
#
|
50
|
+
# @param [Proc] runner
|
51
|
+
# a Proc that is expected to start a repl.
|
52
|
+
# the Proc is passed a `Binding` and a Hash of options.
|
53
|
+
#
|
54
|
+
# @return [void]
|
55
|
+
#
|
37
56
|
def self.add(console, initializer, runner)
|
38
57
|
LOOKUP[console] = [initializer, runner]
|
39
58
|
define_method(console) do |options = {}|
|
@@ -42,33 +61,27 @@ class BindingRepl
|
|
42
61
|
end
|
43
62
|
end
|
44
63
|
|
45
|
-
def self.auto_load_order=(order)
|
46
|
-
@auto_load_order = order
|
47
|
-
end
|
48
|
-
|
49
|
-
def self.auto_load_order
|
50
|
-
@auto_load_order
|
51
|
-
end
|
52
|
-
|
53
64
|
def initialize(binding)
|
54
65
|
@binding = binding
|
55
66
|
@lookup = LOOKUP
|
56
67
|
end
|
57
68
|
|
58
69
|
def auto
|
59
|
-
load_order, exit_value = Binding.repl.
|
70
|
+
load_order, exit_value = Binding.repl.auto_order, nil
|
60
71
|
load_order.each do |console|
|
61
72
|
exit_value = invoke_console(console.to_sym, {})
|
62
73
|
return exit_value unless invoke_failed?(exit_value)
|
63
74
|
end
|
64
|
-
if
|
65
|
-
raise LoadError, "
|
75
|
+
if load_order.empty?
|
76
|
+
raise LoadError, "no consoles found in Binding.repl.auto_order (empty)"
|
77
|
+
elsif invoke_failed?(exit_value)
|
78
|
+
raise LoadError, "no loadable consoles found (searched for #{load_order.join(', ')})"
|
66
79
|
end
|
67
80
|
end
|
68
81
|
|
69
82
|
private
|
70
83
|
def fail!(console)
|
71
|
-
raise LoadError, "the console '#{console}' could not be loaded
|
84
|
+
raise LoadError, "the console '#{console}' could not be loaded :("
|
72
85
|
end
|
73
86
|
|
74
87
|
def invoke_failed?(exit_value)
|
@@ -88,16 +101,14 @@ private
|
|
88
101
|
:'binding.repl.load_error'
|
89
102
|
end
|
90
103
|
end
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
define_singleton_method(:repl) { klass }
|
96
|
-
include klass::BindingMixin
|
97
|
-
repl.auto_load_order = %w(ripl pry irb)
|
98
|
-
end
|
104
|
+
require_relative "binding.repl/core_ext/binding"
|
105
|
+
require_relative "binding.repl/env"
|
106
|
+
require_relative "binding.repl/rcfile"
|
107
|
+
require_relative "binding.repl/version"
|
99
108
|
require_relative "binding.repl/console/pry"
|
100
109
|
require_relative "binding.repl/console/irb"
|
101
110
|
require_relative "binding.repl/console/ripl"
|
102
111
|
require_relative "binding.repl/console/rib"
|
103
|
-
|
112
|
+
|
113
|
+
BindingRepl::RCFile.load
|
114
|
+
BindingRepl.auto_order = BindingRepl::ENV.auto_order
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module BindingRepl::ENV
|
2
|
+
@env = ::ENV
|
3
|
+
DEFAULT_AUTO_ORDER = ["pry", "ripl", "rib", "irb"]
|
4
|
+
|
5
|
+
module_function
|
6
|
+
def enable_rc_file?
|
7
|
+
@env['disable_rc'] != 'true' and @env['disable_rc'] != '1'
|
8
|
+
end
|
9
|
+
|
10
|
+
def disable_rc_file?
|
11
|
+
!enable_rc_file?
|
12
|
+
end
|
13
|
+
|
14
|
+
def auto_order
|
15
|
+
env_order = @env['auto_order'].to_s.split /[:,]/
|
16
|
+
env_order.empty? ? DEFAULT_AUTO_ORDER : env_order
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require "toml"
|
2
|
+
module BindingRepl::RCFile
|
3
|
+
module_function
|
4
|
+
def path
|
5
|
+
File.join ENV["HOME"], ".binding.repl.rc"
|
6
|
+
end
|
7
|
+
|
8
|
+
def enabled?
|
9
|
+
BindingRepl::ENV.enable_rc_file?
|
10
|
+
end
|
11
|
+
|
12
|
+
def load
|
13
|
+
return nil unless enabled? and File.readable?(path)
|
14
|
+
content = File.read(path)
|
15
|
+
parsed = TOML::Parser.new(content).parsed
|
16
|
+
Binding.repl.auto_order = parsed["auto"]["order"]
|
17
|
+
rescue StandardError => e
|
18
|
+
warn "binding.repl: '#{path}' read failed."
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require_relative "setup"
|
2
|
+
class BindingReplAutoTest < Test::Unit::TestCase
|
3
|
+
include BindingRepl::Mock
|
4
|
+
def setup
|
5
|
+
@before = BindingRepl.auto_order
|
6
|
+
super
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
BindingRepl.auto_order = @before
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_pry_as_first_match_on_auto
|
15
|
+
BindingRepl.auto_order = ["pry", "irb"]
|
16
|
+
expect(Pry).to receive(:start).with(instance_of(Binding), {})
|
17
|
+
binding.repl.auto
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_ripl_as_second_match_on_auto
|
21
|
+
BindingRepl.auto_order = ["blah", "ripl"]
|
22
|
+
expect(Ripl).to receive(:start).with(binding: instance_of(Binding))
|
23
|
+
binding.repl.auto
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_no_matches_on_auto
|
27
|
+
BindingRepl.auto_order = []
|
28
|
+
e = assert_raise(LoadError) {binding.repl.auto}
|
29
|
+
assert_equal "no consoles found in Binding.repl.auto_order (empty)", e.message
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_no_requireable_console_on_auto
|
33
|
+
BindingRepl.auto_order = ["ry", "burp", "orc"]
|
34
|
+
e = assert_raise(LoadError) {binding.repl.auto}
|
35
|
+
assert_equal "no loadable consoles found (searched for ry, burp, orc)", e.message
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require_relative "setup"
|
2
|
+
class BindingReplEnvTest < Test::Unit::TestCase
|
3
|
+
def teardown
|
4
|
+
ENV.delete "disable_rc"
|
5
|
+
ENV.delete "auto_order"
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_default_of_enable_rc_file?
|
9
|
+
assert_equal true, BindingRepl::ENV.enable_rc_file?
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_disable_of_rc_file_with_true
|
13
|
+
ENV["disable_rc"] = 'true'
|
14
|
+
assert_equal false, BindingRepl::ENV.enable_rc_file?
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_disable_of_rc_file_with_one
|
18
|
+
ENV["disable_rc"] = '1'
|
19
|
+
assert_equal false, BindingRepl::ENV.enable_rc_file?
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_default_of_auto_order
|
23
|
+
assert_equal BindingRepl::ENV::DEFAULT_AUTO_ORDER, BindingRepl.auto_order
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_auto_order_defined_by_shell
|
27
|
+
ENV["auto_order"] = 'irb,ripl'
|
28
|
+
assert_equal ["irb", "ripl"], BindingRepl::ENV.auto_order
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require_relative "setup"
|
2
|
+
class BindingReplPryTest < Test::Unit::TestCase
|
3
|
+
include BindingRepl::Mock
|
4
|
+
def test_pry
|
5
|
+
expect(Pry).to receive(:start).with(instance_of(Binding), {})
|
6
|
+
binding.repl.pry
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_pry_with_options
|
10
|
+
expect(Pry).to receive(:start).with(instance_of(Binding), {quiet: true})
|
11
|
+
binding.repl.pry quiet: true
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require_relative "setup"
|
2
|
+
testcase = if defined?(Rubinius)
|
3
|
+
# skip Rubinius (breaks with FakeFS).
|
4
|
+
Object
|
5
|
+
else
|
6
|
+
Test::Unit::TestCase
|
7
|
+
end
|
8
|
+
|
9
|
+
class BindingReplRCFileTest < testcase
|
10
|
+
DIR = File.dirname BindingRepl::RCFile.path
|
11
|
+
FILENAME = File.basename BindingRepl::RCFile.path
|
12
|
+
|
13
|
+
def setup
|
14
|
+
FakeFS.activate!
|
15
|
+
dir = FakeFS::FileSystem.add DIR
|
16
|
+
file = FakeFS::FakeFile.new FILENAME, dir
|
17
|
+
file.content = <<-RCFILE
|
18
|
+
[auto]
|
19
|
+
order = ["fakerepl", "irb"]
|
20
|
+
RCFILE
|
21
|
+
dir[file.name] = file
|
22
|
+
end
|
23
|
+
|
24
|
+
def teardown
|
25
|
+
FakeFS.deactivate!
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_auto_order_defined_by_rc_file
|
29
|
+
BindingRepl::RCFile.load
|
30
|
+
assert_equal ["fakerepl", "irb"], BindingRepl.auto_order
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require_relative "setup"
|
2
|
+
class BindingReplRibTest < Test::Unit::TestCase
|
3
|
+
include BindingRepl::Mock
|
4
|
+
def test_rib
|
5
|
+
expect(Rib).to receive(:anchor).with(instance_of(Binding), {})
|
6
|
+
binding.repl.rib
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_rib_with_options
|
10
|
+
expect(Rib).to receive(:anchor).with(instance_of(Binding), {prompt: ">>"})
|
11
|
+
binding.repl.rib prompt: ">>"
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require_relative "setup"
|
2
|
+
class BindingReplRiplTest < Test::Unit::TestCase
|
3
|
+
include BindingRepl::Mock
|
4
|
+
def test_ripl
|
5
|
+
expect(Ripl).to receive(:start).with({binding: instance_of(Binding)})
|
6
|
+
binding.repl.ripl
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_ripl_with_options
|
10
|
+
expect(Ripl).to receive(:start).with({binding: instance_of(Binding), riplrc: false})
|
11
|
+
binding.repl.ripl riplrc: false
|
12
|
+
end
|
13
|
+
end
|
data/test/setup.rb
ADDED
metadata
CHANGED
@@ -1,99 +1,136 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: binding.repl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.9.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Robert Gleeson
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-01-05 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: toml
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.0.3
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.0.3
|
14
27
|
- !ruby/object:Gem::Dependency
|
15
28
|
name: bundler
|
16
29
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
30
|
requirements:
|
19
|
-
- - ~>
|
31
|
+
- - "~>"
|
20
32
|
- !ruby/object:Gem::Version
|
21
33
|
version: '1.3'
|
22
34
|
type: :development
|
23
35
|
prerelease: false
|
24
36
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
37
|
requirements:
|
27
|
-
- - ~>
|
38
|
+
- - "~>"
|
28
39
|
- !ruby/object:Gem::Version
|
29
40
|
version: '1.3'
|
30
41
|
- !ruby/object:Gem::Dependency
|
31
42
|
name: rake
|
32
43
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
44
|
requirements:
|
35
|
-
- -
|
45
|
+
- - ">="
|
36
46
|
- !ruby/object:Gem::Version
|
37
47
|
version: '0'
|
38
48
|
type: :development
|
39
49
|
prerelease: false
|
40
50
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
51
|
requirements:
|
43
|
-
- -
|
52
|
+
- - ">="
|
44
53
|
- !ruby/object:Gem::Version
|
45
54
|
version: '0'
|
46
|
-
description:
|
55
|
+
description: 'binding.repl: binding.pry for all ruby consoles'
|
47
56
|
email:
|
48
57
|
- rob@flowof.info
|
49
58
|
executables: []
|
50
59
|
extensions: []
|
51
60
|
extra_rdoc_files: []
|
52
61
|
files:
|
53
|
-
- .binding.repl.rc
|
54
|
-
- .gitignore
|
55
|
-
- .pryrc
|
62
|
+
- ".binding.repl.rc"
|
63
|
+
- ".gitignore"
|
64
|
+
- ".pryrc"
|
65
|
+
- ".travis.yml"
|
56
66
|
- ChangeLog.txt
|
57
67
|
- Gemfile
|
58
|
-
- LICENSE.txt
|
59
68
|
- README.md
|
60
69
|
- Rakefile
|
70
|
+
- UNLICENSE.txt
|
61
71
|
- binding.repl.gemspec
|
72
|
+
- doc/disableatruntime.md
|
73
|
+
- doc/rcfile.md
|
74
|
+
- doc/runtimeoptions.md
|
75
|
+
- doc/shellvariables.md
|
62
76
|
- lib/binding.repl.rb
|
63
77
|
- lib/binding.repl/console/irb.rb
|
64
78
|
- lib/binding.repl/console/pry.rb
|
65
79
|
- lib/binding.repl/console/rib.rb
|
66
80
|
- lib/binding.repl/console/ripl.rb
|
67
|
-
- lib/binding.repl/
|
81
|
+
- lib/binding.repl/core_ext/binding.rb
|
82
|
+
- lib/binding.repl/env.rb
|
83
|
+
- lib/binding.repl/rcfile.rb
|
84
|
+
- lib/binding.repl/version.rb
|
85
|
+
- test/binding_repl_auto_test.rb
|
86
|
+
- test/binding_repl_env_test.rb
|
87
|
+
- test/binding_repl_irb_test.rb
|
88
|
+
- test/binding_repl_pry_test.rb
|
89
|
+
- test/binding_repl_rcfile_test.rb
|
90
|
+
- test/binding_repl_rib_test.rb
|
91
|
+
- test/binding_repl_ripl_test.rb
|
92
|
+
- test/setup.rb
|
93
|
+
- test/support/binding.repl/mock.rb
|
68
94
|
homepage: https://github.com/robgleeson/binding.repl
|
69
95
|
licenses:
|
70
|
-
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
96
|
+
- Public Domain
|
97
|
+
metadata: {}
|
98
|
+
post_install_message: |2+
|
99
|
+
|
100
|
+
** binding.repl **
|
101
|
+
Thanks for installing v0.9.0!
|
102
|
+
Check out ChangeLog.txt to read about what's changed.
|
103
|
+
|
104
|
+
ChangeLog.txt
|
105
|
+
https://github.com/robgleeson/binding.repl/blob/v0.9.0/ChangeLog.txt
|
106
|
+
|
75
107
|
rdoc_options: []
|
76
108
|
require_paths:
|
77
109
|
- lib
|
78
110
|
required_ruby_version: !ruby/object:Gem::Requirement
|
79
|
-
none: false
|
80
111
|
requirements:
|
81
|
-
- -
|
112
|
+
- - ">="
|
82
113
|
- !ruby/object:Gem::Version
|
83
114
|
version: 1.9.2
|
84
115
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
85
|
-
none: false
|
86
116
|
requirements:
|
87
|
-
- -
|
117
|
+
- - ">="
|
88
118
|
- !ruby/object:Gem::Version
|
89
119
|
version: '0'
|
90
|
-
segments:
|
91
|
-
- 0
|
92
|
-
hash: 4383143691404002571
|
93
120
|
requirements: []
|
94
121
|
rubyforge_project:
|
95
|
-
rubygems_version:
|
122
|
+
rubygems_version: 2.2.0
|
96
123
|
signing_key:
|
97
|
-
specification_version:
|
98
|
-
summary:
|
99
|
-
test_files:
|
124
|
+
specification_version: 4
|
125
|
+
summary: 'binding.repl: binding.pry for all ruby consoles'
|
126
|
+
test_files:
|
127
|
+
- test/binding_repl_auto_test.rb
|
128
|
+
- test/binding_repl_env_test.rb
|
129
|
+
- test/binding_repl_irb_test.rb
|
130
|
+
- test/binding_repl_pry_test.rb
|
131
|
+
- test/binding_repl_rcfile_test.rb
|
132
|
+
- test/binding_repl_rib_test.rb
|
133
|
+
- test/binding_repl_ripl_test.rb
|
134
|
+
- test/setup.rb
|
135
|
+
- test/support/binding.repl/mock.rb
|
136
|
+
has_rdoc:
|
data/LICENSE.txt
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
Copyright (c) 2013 Robert Gleeson
|
2
|
-
|
3
|
-
MIT License
|
4
|
-
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
-
a copy of this software and associated documentation files (the
|
7
|
-
"Software"), to deal in the Software without restriction, including
|
8
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
-
permit persons to whom the Software is furnished to do so, subject to
|
11
|
-
the following conditions:
|
12
|
-
|
13
|
-
The above copyright notice and this permission notice shall be
|
14
|
-
included in all copies or substantial portions of the Software.
|
15
|
-
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/lib/binding.repl/rc.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
module Binding.repl::RC
|
2
|
-
module_function
|
3
|
-
def home_rc
|
4
|
-
File.join ENV["HOME"], ".binding.repl.rc"
|
5
|
-
end
|
6
|
-
|
7
|
-
def safe_load
|
8
|
-
if File.readable?(home_rc)
|
9
|
-
blob = File.read(home_rc)
|
10
|
-
rc = JSON.parse File.read(home_rc)
|
11
|
-
Binding.repl.auto_load_order = rc["auto_load_order"]
|
12
|
-
end
|
13
|
-
rescue StandardError => e
|
14
|
-
warn "binding.repl: '#{home_rc}' read failed (#{e.class}): #{e.message}"
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
if ENV["BINDING_REPL_ORDER"].nil? && ENV["BINDING_REPL_RC"] != "0"
|
19
|
-
require "json"
|
20
|
-
Binding.repl::RC.safe_load
|
21
|
-
end
|
22
|
-
if ENV.has_key?("BINDING_REPL_ORDER")
|
23
|
-
Binding.repl.auto_load_order = ENV["BINDING_REPL_ORDER"].split /[:,]/
|
24
|
-
end
|