ripl-fresh 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.rdoc +4 -0
- data/README.rdoc +2 -0
- data/Rakefile +1 -1
- data/lib/ripl/fresh.rb +10 -5
- data/test/deps.rip +3 -0
- data/test/runner_test.rb +248 -0
- data/test/shell_test.rb +121 -0
- data/test/test_helper.rb +60 -0
- metadata +8 -26
- data/deps.rip +0 -1
data/CHANGELOG.rdoc
CHANGED
data/README.rdoc
CHANGED
@@ -90,7 +90,9 @@ Currently, most {plugins}[http://github.com/cldwalker/ripl-color_error] {enable}
|
|
90
90
|
|
91
91
|
There are lots of things which can get better:
|
92
92
|
|
93
|
+
* Refactor a little bit
|
93
94
|
* Improve auto-completion
|
95
|
+
* RVM support possible?
|
94
96
|
* More cool (and colorful?) <tt>:mixed</tt> Ruby commands
|
95
97
|
* Respect "..." (single argument) for :mixed commands
|
96
98
|
* Add tests
|
data/Rakefile
CHANGED
data/lib/ripl/fresh.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
require 'ripl'
|
2
|
+
require 'ripl/multi_line'
|
2
3
|
require 'fileutils'
|
3
4
|
|
4
5
|
module Ripl
|
5
6
|
module Fresh
|
6
|
-
VERSION = '0.2.
|
7
|
+
VERSION = '0.2.1'
|
7
8
|
|
8
9
|
def before_loop
|
9
10
|
@command_mode = :ruby
|
@@ -92,7 +93,7 @@ module Ripl
|
|
92
93
|
raise( SystemCallError.new $?.exitstatus )
|
93
94
|
end;"
|
94
95
|
|
95
|
-
super @input =
|
96
|
+
super @input = ruby_command_code
|
96
97
|
|
97
98
|
when :mixed # call the ruby method, but with shell style arguments TODO more shell like (e.g. "")
|
98
99
|
method_name, *args = *input.split
|
@@ -116,11 +117,12 @@ module Ripl
|
|
116
117
|
end
|
117
118
|
end
|
118
119
|
|
119
|
-
# load plugins and hook in (and work around readline loading behaviour)
|
120
|
+
# load plugins and hook in (and work around readline loading behaviour) TODO: refactor
|
121
|
+
readline = Ripl.config[:readline] == true ? 'readline' : Ripl.config[:readline]
|
120
122
|
Ripl.config[:readline] = false
|
123
|
+
require readline
|
121
124
|
require 'ripl/readline'
|
122
|
-
|
123
|
-
Ripl::Shell.send :include, Ripl::Fresh
|
125
|
+
Ripl::Shell.include Ripl::Fresh
|
124
126
|
|
125
127
|
# load :mixed commands
|
126
128
|
require File.dirname(__FILE__) + '/fresh/commands'
|
@@ -131,4 +133,7 @@ require File.dirname(__FILE__) + '/fresh/config'
|
|
131
133
|
# fresh_prompt management
|
132
134
|
require File.dirname(__FILE__) + '/fresh/prompt'
|
133
135
|
|
136
|
+
# configure other plugins
|
137
|
+
Ripl.config[:rocket_mode] = false
|
138
|
+
|
134
139
|
# J-_-L
|
data/test/deps.rip
ADDED
data/test/runner_test.rb
ADDED
@@ -0,0 +1,248 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'test_helper')
|
2
|
+
|
3
|
+
describe "Runner" do
|
4
|
+
describe ".start" do
|
5
|
+
before { reset_ripl }
|
6
|
+
|
7
|
+
it "loads riplrc" do
|
8
|
+
mock_riplrc
|
9
|
+
mock_shell
|
10
|
+
Ripl.start
|
11
|
+
end
|
12
|
+
|
13
|
+
it "doesn't load riplrc" do
|
14
|
+
mock_shell
|
15
|
+
dont_allow(Runner).load_rc(anything)
|
16
|
+
Ripl.start :riplrc => false
|
17
|
+
end
|
18
|
+
|
19
|
+
it "sets a shell's variables" do
|
20
|
+
mock_riplrc
|
21
|
+
mock_shell
|
22
|
+
Ripl.start(:name=>'shh')
|
23
|
+
Ripl.shell.name.should == 'shh'
|
24
|
+
end
|
25
|
+
|
26
|
+
it "passes options to Ripl.config" do
|
27
|
+
mock_riplrc
|
28
|
+
mock_shell
|
29
|
+
Ripl.start(:history=>'~/.mah_history')
|
30
|
+
Ripl.config[:history].should == '~/.mah_history'
|
31
|
+
end
|
32
|
+
|
33
|
+
it "overrides config set in riplrc" do
|
34
|
+
mock_riplrc { Ripl.config[:name] = 'blah' }
|
35
|
+
mock_shell
|
36
|
+
Ripl.start(:name=>'dude')
|
37
|
+
Ripl.shell.name.should == 'dude'
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe ".run" do
|
42
|
+
describe "riplrc" do
|
43
|
+
before { reset_ripl }
|
44
|
+
|
45
|
+
it "sets config" do
|
46
|
+
mock_riplrc { Ripl.config[:blah] = true }
|
47
|
+
mock_shell
|
48
|
+
Runner.run([])
|
49
|
+
Ripl.config[:blah].should == true
|
50
|
+
end
|
51
|
+
|
52
|
+
it "catches and prints error" do
|
53
|
+
mock(Runner).load(anything) { raise SyntaxError }
|
54
|
+
mock_shell
|
55
|
+
capture_stderr { Runner.run([]) }.should =~ %r{^ripl: Error while loading ~/.riplrc:\nSyntaxError:}
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe "with subcommand" do
|
60
|
+
def set_dollar_zero(val)
|
61
|
+
$progname = $0
|
62
|
+
alias $0 $progname
|
63
|
+
$0 = val
|
64
|
+
end
|
65
|
+
|
66
|
+
def mock_exec(*args)
|
67
|
+
mock(Runner).exec('ripl-rails', *args) do
|
68
|
+
set_dollar_zero 'ripl-rails'
|
69
|
+
ARGV.replace(args)
|
70
|
+
Ripl.start
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
it "gets invoked with arguments" do
|
75
|
+
mock_exec 'blah'
|
76
|
+
ripl("rails", 'blah')
|
77
|
+
end
|
78
|
+
|
79
|
+
it "has -F global option parsed" do
|
80
|
+
mock_exec '-F'
|
81
|
+
dont_allow(Runner).load_rc(anything)
|
82
|
+
ripl("rails", "-F", :riplrc=>false)
|
83
|
+
end
|
84
|
+
|
85
|
+
it "saves arguments passed to it" do
|
86
|
+
mock_exec 'blah', '-F'
|
87
|
+
ripl("rails", "blah", "-F", :riplrc=>false)
|
88
|
+
Ripl::Runner.argv.should == ['blah', '-F']
|
89
|
+
end
|
90
|
+
|
91
|
+
it "has other global option parsed" do
|
92
|
+
mock_exec '-r=blah'
|
93
|
+
mock(Runner).require('blah')
|
94
|
+
ripl("rails", "-r=blah")
|
95
|
+
end
|
96
|
+
|
97
|
+
it "has automatic --help" do
|
98
|
+
mock_exec '--help'
|
99
|
+
mock(Runner).exit
|
100
|
+
ripl("rails", "--help").chomp.should == "ripl rails [OPTIONS] [ARGS]"
|
101
|
+
end
|
102
|
+
|
103
|
+
it "that is invalid aborts" do
|
104
|
+
mock(Runner).abort("`zzz' is not a ripl command.")
|
105
|
+
ripl 'zzz', :riplrc => false, :loop => false
|
106
|
+
end
|
107
|
+
after_all { set_dollar_zero 'ripl' }
|
108
|
+
end
|
109
|
+
|
110
|
+
describe "with -I option" do
|
111
|
+
before { @old_load_path = $:.dup }
|
112
|
+
after { $:.replace @old_load_path }
|
113
|
+
|
114
|
+
it "and equal sign adds to $LOAD_PATH" do
|
115
|
+
ripl("-I=blah")
|
116
|
+
$:[0].should == 'blah'
|
117
|
+
end
|
118
|
+
|
119
|
+
it "and no equal sign adds to $LOAD_PATH" do
|
120
|
+
ripl("-Ispec")
|
121
|
+
$:[0].should == 'spec'
|
122
|
+
end
|
123
|
+
|
124
|
+
it "and whitespace delimited argument adds to $LOAD_PATH" do
|
125
|
+
ripl("-I", "spec")
|
126
|
+
$:[0].should == 'spec'
|
127
|
+
end
|
128
|
+
|
129
|
+
it "containing multiple paths adds to $LOAD_PATH" do
|
130
|
+
ripl("-I=app:lib")
|
131
|
+
$:[0,2].should == ['app', 'lib']
|
132
|
+
end
|
133
|
+
|
134
|
+
it "called more than once adds to $LOAD_PATH" do
|
135
|
+
ripl("-Ilib", "-Ispec")
|
136
|
+
$:[0,2].should == ['spec', 'lib']
|
137
|
+
end
|
138
|
+
|
139
|
+
it "with invalid argument doesn't add to $LOAD_PATH" do
|
140
|
+
previous_size = $:.size
|
141
|
+
ripl("-I")
|
142
|
+
$:.size.should == previous_size
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
describe "with -r option" do
|
147
|
+
it "and equal sign requires path" do
|
148
|
+
mock(Runner).require('rip')
|
149
|
+
ripl("-r=rip")
|
150
|
+
end
|
151
|
+
|
152
|
+
it "and no equal sign requires path" do
|
153
|
+
mock(Runner).require('rip')
|
154
|
+
ripl("-rrip")
|
155
|
+
end
|
156
|
+
|
157
|
+
it "and whitespace delimited argument requires path" do
|
158
|
+
mock(Runner).require('rip')
|
159
|
+
ripl("-r", "rip")
|
160
|
+
end
|
161
|
+
|
162
|
+
it "called more than once requires paths" do
|
163
|
+
mock(Runner).require('rip')
|
164
|
+
mock(Runner).require('dude')
|
165
|
+
ripl("-rrip", "-rdude")
|
166
|
+
end
|
167
|
+
|
168
|
+
it "with invalid argument requires blank" do
|
169
|
+
mock(Runner).require('')
|
170
|
+
ripl('-r')
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
it "with -f option doesn't load irbrc" do
|
175
|
+
reset_ripl
|
176
|
+
reset_config
|
177
|
+
stub(Kernel).at_exit()
|
178
|
+
mock_shell { |shell|
|
179
|
+
mock(shell).loop_once { throw :ripl_exit }
|
180
|
+
dont_allow(Runner).load_rc(anything)
|
181
|
+
}
|
182
|
+
ripl("-f", :loop => false)
|
183
|
+
Ripl.config[:irbrc] = '~/.irbrc'
|
184
|
+
end
|
185
|
+
|
186
|
+
it "with -F option doesn't load riplrc" do
|
187
|
+
reset_ripl
|
188
|
+
dont_allow(Runner).load_rc(anything)
|
189
|
+
mock_shell { |shell|
|
190
|
+
stub(Kernel).at_exit
|
191
|
+
mock(shell).before_loop
|
192
|
+
mock(shell).loop_once { throw :ripl_exit }
|
193
|
+
}
|
194
|
+
ripl("-F", :riplrc => false, :loop => false)
|
195
|
+
end
|
196
|
+
|
197
|
+
it "with -d option sets $DEBUG" do
|
198
|
+
ripl("-d")
|
199
|
+
$DEBUG.should == true
|
200
|
+
$DEBUG = nil
|
201
|
+
end
|
202
|
+
|
203
|
+
it "with -v option prints version" do
|
204
|
+
mock(Runner).exit
|
205
|
+
ripl("-v").chomp.should == Ripl::VERSION
|
206
|
+
end
|
207
|
+
|
208
|
+
it "with -h option prints help" do
|
209
|
+
mock(Runner).exit
|
210
|
+
actual = ripl("-h")
|
211
|
+
actual.should =~ /^Usage: ripl/
|
212
|
+
actual.should =~ /Options:\n -f/
|
213
|
+
end
|
214
|
+
|
215
|
+
it "with invalid options prints errors" do
|
216
|
+
capture_stderr {
|
217
|
+
ripl('--blah', '-z')
|
218
|
+
}.chomp.should == "ripl: invalid option `blah'\nripl: invalid option `z'"
|
219
|
+
end
|
220
|
+
|
221
|
+
describe "with plugin" do
|
222
|
+
before_all do
|
223
|
+
Moo = Module.new do
|
224
|
+
def parse_option(option, argv)
|
225
|
+
option == '--moo' ? puts("MOOOO") : super
|
226
|
+
end
|
227
|
+
end
|
228
|
+
Runner.extend Moo
|
229
|
+
Runner.add_options ['--moo', 'just moos']
|
230
|
+
end
|
231
|
+
|
232
|
+
it "parses plugin option" do
|
233
|
+
ripl("--moo").chomp.should == 'MOOOO'
|
234
|
+
end
|
235
|
+
|
236
|
+
it "displays plugin option in --help" do
|
237
|
+
mock(Runner).exit
|
238
|
+
ripl("--help").should =~ /--moo\s*just moos/
|
239
|
+
end
|
240
|
+
|
241
|
+
it "handles invalid option" do
|
242
|
+
capture_stderr {
|
243
|
+
ripl('--blah')
|
244
|
+
}.chomp.should == "ripl: invalid option `blah'"
|
245
|
+
end
|
246
|
+
end
|
247
|
+
end
|
248
|
+
end
|
data/test/shell_test.rb
ADDED
@@ -0,0 +1,121 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'test_helper')
|
2
|
+
|
3
|
+
describe "Shell" do
|
4
|
+
before { reset_ripl }
|
5
|
+
|
6
|
+
def shell(options={})
|
7
|
+
Ripl.shell(options)
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "#loop" do
|
11
|
+
before { mock(shell).before_loop }
|
12
|
+
it "exits with exit" do
|
13
|
+
mock(shell).get_input { 'exit' }
|
14
|
+
dont_allow(shell).eval_input
|
15
|
+
shell.loop
|
16
|
+
end
|
17
|
+
|
18
|
+
it "exits with quit" do
|
19
|
+
mock(shell).get_input { 'quit' }
|
20
|
+
dont_allow(shell).eval_input
|
21
|
+
shell.loop
|
22
|
+
end
|
23
|
+
|
24
|
+
it "exits with Control-D" do
|
25
|
+
mock(shell).get_input { nil }
|
26
|
+
dont_allow(shell).eval_input
|
27
|
+
shell.loop
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
it "#loop_once handles Control-C" do
|
32
|
+
mock(shell).get_input { raise Interrupt }
|
33
|
+
dont_allow(shell).eval_input
|
34
|
+
capture_stdout { shell.loop_once }.should == "\n"
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "#prompt" do
|
38
|
+
it "from a string" do
|
39
|
+
shell(:prompt=>'> ').prompt.should == '> '
|
40
|
+
end
|
41
|
+
|
42
|
+
it "from a lambda" do
|
43
|
+
shell(:prompt=>lambda { "#{10 + 10}> " }).prompt.should == '20> '
|
44
|
+
end
|
45
|
+
|
46
|
+
it "rescues from a failed lambda" do
|
47
|
+
capture_stderr {
|
48
|
+
shell(:prompt=>lambda { wtf }).prompt.should == Shell::OPTIONS[:prompt]
|
49
|
+
}.should =~ /ripl: Error while creating.*NameError.*`wtf'/m
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe "#before_loop" do
|
54
|
+
before_all { Ripl::Commands.send(:define_method, :ping) { 'pong' } }
|
55
|
+
before { reset_config }
|
56
|
+
it "adds commands to main from Commands" do
|
57
|
+
stub(Ripl::Runner).load_rc
|
58
|
+
stub(Kernel).at_exit
|
59
|
+
Ripl.shell.before_loop
|
60
|
+
Ripl.shell.loop_eval("ping").should == 'pong'
|
61
|
+
end
|
62
|
+
|
63
|
+
it "adds commands to fixnum from Commands" do
|
64
|
+
stub(Ripl::Runner).load_rc
|
65
|
+
Ripl.shell.binding = 1.send(:binding)
|
66
|
+
stub(Kernel).at_exit
|
67
|
+
Ripl.shell.before_loop
|
68
|
+
Ripl.shell.loop_eval("ping").should == 'pong'
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
describe "#eval_input" do
|
73
|
+
before { @line = shell.line; shell.eval_input("10 ** 2") }
|
74
|
+
|
75
|
+
describe "normally" do
|
76
|
+
it "sets result" do
|
77
|
+
shell.result.should == 100
|
78
|
+
end
|
79
|
+
|
80
|
+
it "sets _" do
|
81
|
+
shell.eval_input('_')
|
82
|
+
shell.result.should == 100
|
83
|
+
end
|
84
|
+
|
85
|
+
it "increments line" do
|
86
|
+
shell.line.should == @line + 1
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe "with error" do
|
91
|
+
before {
|
92
|
+
@line = shell.line
|
93
|
+
@stderr = capture_stderr { shell.eval_input('{') }
|
94
|
+
}
|
95
|
+
|
96
|
+
it "prints it" do
|
97
|
+
# 1.8 # 1.9
|
98
|
+
@stderr.should =~ /^(?:SyntaxError: compile error|SyntaxError: \(ripl\):\d+: syntax error)/
|
99
|
+
end
|
100
|
+
|
101
|
+
it "sets @error_raised" do
|
102
|
+
shell.instance_variable_get("@error_raised").should == true
|
103
|
+
end
|
104
|
+
|
105
|
+
it "increments line" do
|
106
|
+
shell.line.should == @line + 1
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
describe "API#" do
|
112
|
+
Shell::API.instance_methods.delete_if {|e| e[/=$/]}.each do |meth|
|
113
|
+
it "#{meth} is accessible to plugins" do
|
114
|
+
mod = Object.const_set "Ping_#{meth}", Module.new
|
115
|
+
mod.send(:define_method, meth) { "pong_#{meth}" }
|
116
|
+
Shell.send :include, mod
|
117
|
+
shell.send(meth).should == "pong_#{meth}"
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'bacon'
|
2
|
+
require 'bacon/bits'
|
3
|
+
require 'rr'
|
4
|
+
require 'bacon/rr'
|
5
|
+
require 'stringio'
|
6
|
+
require 'ripl'
|
7
|
+
include Ripl
|
8
|
+
|
9
|
+
module Helpers
|
10
|
+
def ripl(*args)
|
11
|
+
options = args[-1].is_a?(Hash) ? args.pop : {}
|
12
|
+
mock_riplrc unless options[:riplrc] == false
|
13
|
+
mock(Ripl.shell).loop unless options[:loop] == false
|
14
|
+
capture_stdout { Ripl::Runner.run(args) }
|
15
|
+
end
|
16
|
+
|
17
|
+
def mock_riplrc(&block)
|
18
|
+
mock(Runner).load_rc(Ripl.config[:riplrc], &block)
|
19
|
+
end
|
20
|
+
|
21
|
+
def mock_shell(&block)
|
22
|
+
mock(Shell).create(anything) {|e|
|
23
|
+
shell = Shell.new(e)
|
24
|
+
block ? block.call(shell) : mock(shell).loop
|
25
|
+
shell
|
26
|
+
}
|
27
|
+
end
|
28
|
+
|
29
|
+
def reset_ripl
|
30
|
+
Ripl.instance_eval "@config = @shell = @riplrc = nil"
|
31
|
+
end
|
32
|
+
|
33
|
+
def reset_config
|
34
|
+
Ripl.config.merge! :history => '~/.irb_history', :completion => {}
|
35
|
+
end
|
36
|
+
|
37
|
+
def capture_stdout(&block)
|
38
|
+
original_stdout = $stdout
|
39
|
+
$stdout = fake = StringIO.new
|
40
|
+
begin
|
41
|
+
yield
|
42
|
+
ensure
|
43
|
+
$stdout = original_stdout
|
44
|
+
end
|
45
|
+
fake.string
|
46
|
+
end
|
47
|
+
|
48
|
+
def capture_stderr(&block)
|
49
|
+
original_stderr = $stderr
|
50
|
+
$stderr = fake = StringIO.new
|
51
|
+
begin
|
52
|
+
yield
|
53
|
+
ensure
|
54
|
+
$stderr = original_stderr
|
55
|
+
end
|
56
|
+
fake.string
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
Bacon::Context.send :include, Helpers
|
metadata
CHANGED
@@ -1,12 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ripl-fresh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 2
|
8
|
-
- 0
|
9
|
-
version: 0.2.0
|
4
|
+
prerelease:
|
5
|
+
version: 0.2.1
|
10
6
|
platform: ruby
|
11
7
|
authors:
|
12
8
|
- Jan Lelis
|
@@ -14,8 +10,7 @@ autorequire:
|
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
12
|
|
17
|
-
date:
|
18
|
-
default_executable:
|
13
|
+
date: 2011-05-20 00:00:00 Z
|
19
14
|
dependencies:
|
20
15
|
- !ruby/object:Gem::Dependency
|
21
16
|
name: ripl
|
@@ -25,10 +20,6 @@ dependencies:
|
|
25
20
|
requirements:
|
26
21
|
- - ">="
|
27
22
|
- !ruby/object:Gem::Version
|
28
|
-
segments:
|
29
|
-
- 0
|
30
|
-
- 2
|
31
|
-
- 6
|
32
23
|
version: 0.2.6
|
33
24
|
type: :runtime
|
34
25
|
version_requirements: *id001
|
@@ -40,10 +31,6 @@ dependencies:
|
|
40
31
|
requirements:
|
41
32
|
- - ">="
|
42
33
|
- !ruby/object:Gem::Version
|
43
|
-
segments:
|
44
|
-
- 0
|
45
|
-
- 2
|
46
|
-
- 0
|
47
34
|
version: 0.2.0
|
48
35
|
type: :runtime
|
49
36
|
version_requirements: *id002
|
@@ -64,15 +51,17 @@ files:
|
|
64
51
|
- lib/ripl/fresh.rb
|
65
52
|
- lib/ripl-fresh/bond_workaround.rb
|
66
53
|
- lib/bond/completions/ripl-fresh.rb
|
54
|
+
- test/test_helper.rb
|
55
|
+
- test/shell_test.rb
|
56
|
+
- test/runner_test.rb
|
67
57
|
- bin/fresh
|
68
58
|
- bin/ripl-fresh
|
69
59
|
- README.rdoc
|
70
60
|
- CHANGELOG.rdoc
|
71
|
-
- deps.rip
|
61
|
+
- test/deps.rip
|
72
62
|
- Rakefile
|
73
63
|
- .gemspec
|
74
64
|
- LICENSE
|
75
|
-
has_rdoc: true
|
76
65
|
homepage: http://github.com/janlelis/fresh
|
77
66
|
licenses:
|
78
67
|
- MIT
|
@@ -86,24 +75,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
86
75
|
requirements:
|
87
76
|
- - ">="
|
88
77
|
- !ruby/object:Gem::Version
|
89
|
-
segments:
|
90
|
-
- 1
|
91
|
-
- 9
|
92
78
|
version: "1.9"
|
93
79
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
80
|
none: false
|
95
81
|
requirements:
|
96
82
|
- - ">="
|
97
83
|
- !ruby/object:Gem::Version
|
98
|
-
segments:
|
99
|
-
- 1
|
100
|
-
- 3
|
101
|
-
- 6
|
102
84
|
version: 1.3.6
|
103
85
|
requirements: []
|
104
86
|
|
105
87
|
rubyforge_project:
|
106
|
-
rubygems_version: 1.
|
88
|
+
rubygems_version: 1.8.1
|
107
89
|
signing_key:
|
108
90
|
specification_version: 3
|
109
91
|
summary: Fresh Ruby Enhanced SHell
|
data/deps.rip
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
ripl >=0.2.5
|