binding.repl 0.5.0.1 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog.txt CHANGED
@@ -1,18 +1,32 @@
1
+ == v0.6.0
2
+ - add Binding.repl.{disable!,enable!}.
3
+ turn binding.repl.{pry,irb,ripl,auto} into a no-op.
4
+ closes #8.
5
+
6
+ == v0.5.1
7
+ - $CWD/.binding.repl.rc has precendence over $HOME/.binding.repl.rc
8
+ stupid mistake. $CWD/.binding.repl.rc should be loaded instead of
9
+ $HOME/.binding.repl.rc if it exists.
10
+
11
+ - compare ENV["BINDING_REPL_RC"] as a string.
12
+ casting with to_i on nil(the default) returns 0.
13
+ file was never loaded.
14
+
1
15
  == v0.5.0.1
2
16
  - documentation fix
3
17
  error in documentation
4
18
 
5
19
  == v0.5.0
6
20
  - disable {$HOME,$CWD}/.binding.repl.rc loading
7
- set ENV["BINDING_REPL_RC"] = 0 to disable load.
21
+ set ENV["BINDING_REPL_RC"] = "0" to disable load.
8
22
 
9
23
  == v0.4.1
10
24
  - read {$HOME,$CWD}/.binding.repl.rc as JSON
11
- safer.
25
+ less security concerns than parsing ruby.
12
26
 
13
27
  == v0.4.0
14
28
  - read {$HOME,$CWD}/.binding.ripl.rc on load
15
- see README for docs.
29
+ see README for documentation.
16
30
 
17
31
  == v0.3.0
18
32
  - add Binding.repl.add
data/README.md CHANGED
@@ -33,13 +33,12 @@ __EXAMPLES__
33
33
  class BlogsController < ApplicationController
34
34
  def show
35
35
  @blog = Blog.find(params[:id])
36
- # starts pry, irb, or ripl in the context of 'BlogsController#show'.
37
36
  binding.repl.{pry,irb,ripl}
38
37
  end
39
38
  end
40
39
 
41
40
  class Bar
42
- # auto discover the first available console.
41
+ # auto discover and start the first available console.
43
42
  # default order is: ripl, pry, or irb.
44
43
  binding.repl.auto
45
44
 
@@ -49,6 +48,20 @@ class Bar
49
48
  # remove "irb" from auto discovery
50
49
  Binding.repl.auto_load_order -= ["irb"]
51
50
  end
51
+
52
+ class Baz
53
+ # invoke irb
54
+ binding.repl.irb
55
+ Binding.repl.disable!
56
+
57
+ # no-op, returns :'binding.repl.disabled' and continues execution.
58
+ binding.repl.irb
59
+ binding.repl.ripl
60
+
61
+ # invoke pry
62
+ Binding.repl.enable!
63
+ binding.repl.pry
64
+ end
52
65
  ```
53
66
 
54
67
  __NOTES__
@@ -75,21 +88,29 @@ class Foo
75
88
  end
76
89
  ```
77
90
 
91
+ _DEPENDENCIES_
92
+
93
+ binding.repl doesn't depend on anything. it's up to you to meet the
94
+ dependencies(pry, irb, and/or ripl). `binding.repl.{ripl,pry,irb}`
95
+ will try to load the appropiate console for you if it looks like it
96
+ hasn't been loaded yet.
97
+
78
98
  _WORKING WITH TEAMS_
79
99
 
80
100
  people working in teams might have different choices for what ruby
81
101
  console they like to use and __binding.repl__ tries to accomondate by
82
102
  reading a `.binding.repl.rc` file from $HOME or the current working
83
- directory. It's a JSON file with a single key-value pair.
103
+ directory. It's a very simple JSON file.
84
104
 
85
- let's say amy prefers IRB, so her `$HOME/.binding.repl.rc` would look like this:
105
+ let's say rob & amy are working on some code together. amy prefers
106
+ IRB, so her `$HOME/.binding.repl.rc` would look like this:
86
107
  ```javascript
87
108
  {
88
109
  "auto_load_order": ["irb", "pry", "ripl"]
89
110
  }
90
111
  ```
91
112
 
92
- let's say rob prefers pry, so his `$HOME/.binding.repl.rc` would look like this:
113
+ rob prefers pry, so his `$HOME/.binding.repl.rc` would look like this:
93
114
  ```ruby
94
115
  {
95
116
  "auto_load_order": ["pry", "ripl", "irb"]
@@ -107,20 +128,6 @@ class Foo
107
128
  end
108
129
  ```
109
130
 
110
- _RIPL & IRB_
111
-
112
- I have only used Ripl once(to write this library) and I don't use IRB
113
- much anymore. If I can improve support for either please let me know
114
- via an issue or pull request/e-note.
115
-
116
-
117
- _DEPENDENCIES_
118
-
119
- binding.repl doesn't depend on anything. it's up to you to meet the
120
- dependencies(pry, irb, and/or ripl). `binding.repl.{ripl,pry,irb}`
121
- will try to load the appropiate console for you if it looks like it
122
- hasn't been loaded yet.
123
-
124
131
  __INSTALL__
125
132
 
126
133
  ruby 1.9+ only.
data/lib/binding.repl.rb CHANGED
@@ -18,7 +18,20 @@ class BindingRepl
18
18
  end
19
19
 
20
20
  def self.version
21
- "0.5.0.1"
21
+ "0.6.0"
22
+ end
23
+
24
+ def self.disabled?
25
+ @disabled
26
+ end
27
+
28
+ def self.enable!
29
+ @disabled = false
30
+ !@disabled
31
+ end
32
+
33
+ def self.disable!
34
+ @disabled = true
22
35
  end
23
36
 
24
37
  def self.add(console, predicate, runner)
@@ -44,11 +57,14 @@ class BindingRepl
44
57
 
45
58
  def auto
46
59
  load_order = Binding.repl.auto_load_order
60
+ exit_value = nil
47
61
  load_order.each do |console|
48
62
  exit_value = invoke_console(console.to_sym, {})
49
63
  return exit_value unless invoke_failed?(exit_value)
50
64
  end
51
- raise LoadError, "failed to load consoles: #{load_order.join(", ")}", []
65
+ if invoke_failed?(exit_value)
66
+ raise LoadError, "failed to load consoles: #{load_order.join(", ")}", []
67
+ end
52
68
  end
53
69
 
54
70
  private
@@ -57,10 +73,14 @@ private
57
73
  end
58
74
 
59
75
  def invoke_failed?(exit_value)
60
- exit_value.to_s.start_with? "binding.repl"
76
+ exit_value = exit_value.to_s
77
+ exit_value.start_with?("binding.repl") && exit_value != 'binding.repl.disabled'
61
78
  end
62
79
 
63
80
  def invoke_console(console, options)
81
+ if Binding.repl.disabled?
82
+ return :'binding.repl.disabled'
83
+ end
64
84
  require_predicate, runner = @lookup[console]
65
85
  require_console(console, require_predicate)
66
86
  runner.call(@binding, options)
@@ -85,10 +105,10 @@ Binding.class_eval do
85
105
  include klass::BindingMixin
86
106
  repl.auto_load_order = %w(ripl pry irb)
87
107
  end
88
- require_relative "binding.repl/pry"
89
- require_relative "binding.repl/irb"
90
- require_relative "binding.repl/ripl"
108
+ require_relative "binding.repl/console/pry"
109
+ require_relative "binding.repl/console/irb"
110
+ require_relative "binding.repl/console/ripl"
91
111
 
92
- if ENV["BINDING_REPL_RC"].to_i != 0
112
+ if ENV["BINDING_REPL_RC"] != "0"
93
113
  require_relative "binding.repl/rc"
94
114
  end
File without changes
File without changes
File without changes
@@ -2,14 +2,15 @@ require "json"
2
2
  home_rc = File.join ENV["HOME"], ".binding.repl.rc"
3
3
  local_rc = File.join Dir.getwd, ".binding.repl.rc"
4
4
 
5
- if File.exists?(home_rc)
6
- json = File.read(home_rc)
7
- end
8
- if !File.exists?(home_rc) && File.exists?(local_rc)
5
+ if File.exists?(local_rc)
9
6
  json = File.read(local_rc)
7
+ else
8
+ if File.exists?(home_rc)
9
+ json = File.read(home_rc)
10
+ end
10
11
  end
11
12
 
12
- if local_rc || home_rc
13
+ if json
13
14
  options = JSON.parse(json) rescue nil
14
15
  end
15
16
  if options
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: binding.repl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0.1
4
+ version: 0.6.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -60,10 +60,10 @@ files:
60
60
  - Rakefile
61
61
  - binding.repl.gemspec
62
62
  - lib/binding.repl.rb
63
- - lib/binding.repl/irb.rb
64
- - lib/binding.repl/pry.rb
63
+ - lib/binding.repl/console/irb.rb
64
+ - lib/binding.repl/console/pry.rb
65
+ - lib/binding.repl/console/ripl.rb
65
66
  - lib/binding.repl/rc.rb
66
- - lib/binding.repl/ripl.rb
67
67
  homepage: https://github.com/robgleeson/binding.repl
68
68
  licenses:
69
69
  - MIT
@@ -85,7 +85,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
85
  version: '0'
86
86
  segments:
87
87
  - 0
88
- hash: 3376741640928486311
88
+ hash: 1608399329349294521
89
89
  requirements: []
90
90
  rubyforge_project:
91
91
  rubygems_version: 1.8.23