irt 1.2.0 → 1.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/VERSION +1 -1
- data/bin/irt +1 -5
- data/irt.gemspec +3 -2
- data/lib/irt/commands/test.rb +2 -4
- data/lib/irt/extensions/irb/context.rb +1 -1
- data/lib/irt/extensions/irb.rb +1 -1
- data/lib/irt/extensions/kernel.rb +1 -1
- data/lib/irt/extensions/rails.rb +13 -2
- data/lib/irt/session.rb +1 -2
- data/lib/irt/utils.rb +38 -33
- data/lib/irt.rb +15 -4
- metadata +6 -6
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.2.
|
1
|
+
1.2.1
|
data/bin/irt
CHANGED
@@ -63,11 +63,7 @@ puts copy
|
|
63
63
|
|
64
64
|
paths = if ARGV.empty?
|
65
65
|
options[:interactive_eof] = true
|
66
|
-
|
67
|
-
ENV['IRT_COMMAND'] = ENV['IRT_COMMAND'].sub(/#{Regexp.quote(tmp_path)}/, as_file)
|
68
|
-
exec ENV['IRT_COMMAND']
|
69
|
-
end
|
70
|
-
[ tmp_path ]
|
66
|
+
[ IRT::Utils.create_tmp_file ]
|
71
67
|
else
|
72
68
|
ARGV.map {|p| File.expand_path(p) }
|
73
69
|
end
|
data/irt.gemspec
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.authors = ["Domizio Demichelis"]
|
9
9
|
s.email = 'dd.nexus@gmail.com'
|
10
10
|
s.homepage = 'http://github.com/ddnexus/irt'
|
11
|
-
s.summary = 'Interactive Ruby Tools -
|
12
|
-
s.description = 'If you use IRT in place of irb or
|
11
|
+
s.summary = 'Interactive Ruby Tools - Very improved irb and Rails Console with a lot of cool features.'
|
12
|
+
s.description = 'If you use IRT in place of irb or Rails Console, you will have more tools that will make your life a lot easier.'
|
13
13
|
|
14
14
|
s.add_runtime_dependency('differ', [">= 0.1.1"])
|
15
15
|
s.add_runtime_dependency('dye', [">= 0.1.3"])
|
@@ -29,6 +29,7 @@ Gem::Specification.new do |s|
|
|
29
29
|
|
30
30
|
s.required_rubygems_version = ">= 1.3.6"
|
31
31
|
s.rdoc_options = ["--charset=UTF-8"]
|
32
|
+
s.extra_rdoc_files = ["README.markdown"]
|
32
33
|
s.require_paths = ["lib"]
|
33
34
|
|
34
35
|
end
|
data/lib/irt/commands/test.rb
CHANGED
@@ -44,10 +44,8 @@ module IRT
|
|
44
44
|
end
|
45
45
|
alias_method :tt, :add_test
|
46
46
|
|
47
|
-
def save_as(
|
48
|
-
IRT::Utils.save_as(
|
49
|
-
IRT::Session.run_file as_file
|
50
|
-
end
|
47
|
+
def save_as(file_path)
|
48
|
+
IRT::Utils.save_as(file_path)
|
51
49
|
end
|
52
50
|
alias_method :sa, :save_as
|
53
51
|
|
@@ -101,7 +101,7 @@ private
|
|
101
101
|
|
102
102
|
def process_exception(e)
|
103
103
|
bktr = e.backtrace.reject do |m|
|
104
|
-
workspace.filter_backtrace(m).nil? || !IRT.debug && File.expand_path(m).match(/^#{IRT.lib_path}/)
|
104
|
+
workspace.filter_backtrace(m).nil? || !IRT.debug && File.expand_path(m).match(/^#{Regexp.quote(IRT.lib_path)}/)
|
105
105
|
end
|
106
106
|
e.set_backtrace map_backtrace(bktr)
|
107
107
|
end
|
data/lib/irt/extensions/irb.rb
CHANGED
@@ -41,7 +41,7 @@ module IRB #:nodoc:
|
|
41
41
|
|
42
42
|
module HistorySavingAbility
|
43
43
|
def HistorySavingAbility.extended(obj)
|
44
|
-
# save_history has to be called just
|
44
|
+
# save_history has to be called just once at exit
|
45
45
|
# IRB.conf[:AT_EXIT].push proc{obj.save_history}
|
46
46
|
obj.load_history
|
47
47
|
obj
|
data/lib/irt/extensions/rails.rb
CHANGED
@@ -24,7 +24,7 @@ module Kernel
|
|
24
24
|
def irt(bind)
|
25
25
|
raise IRT::ArgumentTypeError, "You must pass binding instead of #{bind.class.name} object" unless bind.is_a?(Binding)
|
26
26
|
IRT.send(:rails_server_notice_wrap) do
|
27
|
-
IRT
|
27
|
+
IRT.start
|
28
28
|
IRT::Session.enter :binding, bind
|
29
29
|
end
|
30
30
|
end
|
@@ -38,7 +38,7 @@ module Rack
|
|
38
38
|
def server
|
39
39
|
# override the SIGINT trap in the Rack::Server.start method allowing multiple choices
|
40
40
|
# since #server is also called after the Rack::Server.start trap
|
41
|
-
IRT
|
41
|
+
IRT.start
|
42
42
|
IRT.rails_server_sigint_trap = trap('SIGINT') { IRT.rails_signal_handle }
|
43
43
|
IRT.rails_server = original_server
|
44
44
|
end
|
@@ -88,6 +88,17 @@ private
|
|
88
88
|
end
|
89
89
|
|
90
90
|
|
91
|
+
module Utils
|
92
|
+
alias_method :original_ask_run_new_file, :ask_run_new_file
|
93
|
+
# skips asking to run the save file if it is a tmp file in a server session
|
94
|
+
# because the server is exiting so no rerun is possible
|
95
|
+
def ask_run_new_file(new_file_path, source_path, tmp)
|
96
|
+
return if tmp && IRT.rails_server
|
97
|
+
original_ask_run_new_file(new_file_path, source_path, tmp)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
|
91
102
|
module Commands
|
92
103
|
module Core
|
93
104
|
|
data/lib/irt/session.rb
CHANGED
@@ -84,13 +84,12 @@ module IRT
|
|
84
84
|
def set_binding_file_pointers(context)
|
85
85
|
caller.each do |c|
|
86
86
|
file, line = c.sub(/:in .*$/,'').split(':', 2)
|
87
|
-
next if File.expand_path(file).match(/^#{IRT.lib_path}/) # exclude irt internal callers
|
87
|
+
next if File.expand_path(file).match(/^#{Regexp.quote(IRT.lib_path)}/) # exclude irt internal callers
|
88
88
|
context.binding_file = file
|
89
89
|
context.binding_line_no = line
|
90
90
|
break
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
94
|
-
|
95
94
|
end
|
96
95
|
end
|
data/lib/irt/utils.rb
CHANGED
@@ -2,49 +2,37 @@ require 'irt/prompter'
|
|
2
2
|
|
3
3
|
module IRT
|
4
4
|
|
5
|
+
extend self
|
6
|
+
|
7
|
+
def cli?
|
8
|
+
!!ENV['IRT_COMMAND']
|
9
|
+
end
|
10
|
+
|
11
|
+
|
5
12
|
module Utils
|
6
13
|
|
7
14
|
extend self
|
8
15
|
|
9
|
-
|
10
|
-
# but it will be left in file mode at EOF (sort of irt-standby)
|
11
|
-
def load_irt(run=true)
|
12
|
-
return if IRT.initialized
|
13
|
-
puts IRT::Utils.copyright
|
14
|
-
ARGV.clear
|
15
|
-
tmp_path = if run
|
16
|
-
create_tmp_file {|as_file| IRT::Session.run_file as_file}
|
17
|
-
else
|
18
|
-
create_tmp_file
|
19
|
-
end
|
20
|
-
ARGV.push tmp_path
|
21
|
-
IRB.start
|
22
|
-
end
|
23
|
-
|
24
|
-
def create_tmp_file(&block)
|
16
|
+
def create_tmp_file()
|
25
17
|
require 'tempfile'
|
26
18
|
tmp_file = Tempfile.new(['', '.irt'])
|
27
19
|
tmp_file << "\n" # one empty line makes irb of 1.9.2 happy
|
28
20
|
tmp_file.flush
|
29
21
|
# ENV used because with IRT.cli? 2 different processes need to access the same path
|
30
|
-
ENV['IRT_TMP_PATH'] =
|
31
|
-
at_exit { check_save_tmp_file(tmp_file
|
32
|
-
|
22
|
+
ENV['IRT_TMP_PATH'] = tmp_file.path
|
23
|
+
at_exit { check_save_tmp_file(tmp_file) }
|
24
|
+
ENV['IRT_TMP_PATH']
|
33
25
|
end
|
34
26
|
|
35
|
-
def save_as(
|
36
|
-
|
37
|
-
if File.exists?(
|
38
|
-
return false if IRT::Prompter.no? %(Do you want to overwrite "#{
|
27
|
+
def save_as(file_path, source_path=IRT.irt_file, tmp=false)
|
28
|
+
new_file_path = File.expand_path(file_path)
|
29
|
+
if File.exists?(new_file_path)
|
30
|
+
return false if IRT::Prompter.no? %(Do you want to overwrite "#{new_file_path}"?), :hint => '[y|<enter=n]', :default => 'n'
|
39
31
|
end
|
40
|
-
dirname = File.dirname(
|
32
|
+
dirname = File.dirname(new_file_path)
|
41
33
|
FileUtils.mkdir_p(dirname) unless File.directory?(dirname)
|
42
|
-
FileUtils.cp source_path,
|
43
|
-
|
44
|
-
# reset the tmpfile content so the at_exit proc will not be triggered
|
45
|
-
File.open(source_path, 'w'){|f| f.puts "\n"} if IRT.irt_file == Pathname.new(ENV['IRT_TMP_PATH']).realpath
|
46
|
-
block.call as_file, source_path
|
47
|
-
end
|
34
|
+
FileUtils.cp source_path, new_file_path
|
35
|
+
ask_run_new_file new_file_path, source_path, tmp
|
48
36
|
end
|
49
37
|
|
50
38
|
def version
|
@@ -57,11 +45,28 @@ module IRT
|
|
57
45
|
|
58
46
|
private
|
59
47
|
|
60
|
-
def
|
48
|
+
def ask_run_new_file(new_file_path, source_path, tmp)
|
49
|
+
if IRT::Prompter.yes?( %(Do you want to run the file "#{File.basename(new_file_path)}" now?) )
|
50
|
+
# if we are saving a tmp_file from a save_as command (not from an at_exit block)
|
51
|
+
if ENV['IRT_TMP_PATH'] && IRT.respond_to?(:irt_file) && IRT.irt_file == Pathname.new(ENV['IRT_TMP_PATH']).realpath
|
52
|
+
ENV.delete('IRT_TMP_PATH')
|
53
|
+
# reset tmp file content so check_save_tmp_file will be skipped
|
54
|
+
File.open(source_path, 'w'){|f| f.puts "\n"}
|
55
|
+
end
|
56
|
+
if tmp && IRT.cli?
|
57
|
+
ENV['IRT_COMMAND'] = ENV['IRT_COMMAND'].sub(/#{Regexp.quote(source_path)}/, new_file_path)
|
58
|
+
exec ENV['IRT_COMMAND']
|
59
|
+
else
|
60
|
+
IRT::Session.run_file new_file_path
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def check_save_tmp_file(tmp_file)
|
61
66
|
if tmp_file.size > 1
|
62
67
|
IRT::Prompter.yes? %(The template file has been modified, do you want to save it?) do
|
63
|
-
IRT::Prompter.choose %(Enter the file path to save:), /[\w0-9_]/ do |
|
64
|
-
save_as(
|
68
|
+
IRT::Prompter.choose %(Enter the file path to save:), /[\w0-9_]/ do |file_path|
|
69
|
+
save_as(file_path, tmp_file.path, tmp=true)
|
65
70
|
end
|
66
71
|
end
|
67
72
|
end
|
data/lib/irt.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
# allows standard rails 3 console to run without loading irt
|
2
|
+
unless defined?(Rails::Console) && !ENV['IRT_COMMAND']
|
3
|
+
|
1
4
|
at_exit{ Dye.print_reset_colors }
|
2
5
|
|
3
6
|
require 'rubygems'
|
@@ -50,10 +53,6 @@ module IRT
|
|
50
53
|
:copy_to_clipboard_command, :nano_command_format, :vi_command_format, :edit_command_format, :ri_command_format
|
51
54
|
attr_reader :log, :irt_file, :initialized
|
52
55
|
|
53
|
-
def cli?
|
54
|
-
!!ENV['IRT_COMMAND']
|
55
|
-
end
|
56
|
-
|
57
56
|
def force_color=(bool)
|
58
57
|
Dye.color = bool
|
59
58
|
end
|
@@ -140,8 +139,20 @@ module IRT
|
|
140
139
|
yml.gsub(/ +\n/, "\n")
|
141
140
|
end
|
142
141
|
|
142
|
+
# this will create a tmp file and start IRB
|
143
|
+
# but it will be left in file mode at EOF (sort of irt-standby)
|
144
|
+
def start
|
145
|
+
return if initialized
|
146
|
+
puts IRT::Utils.copyright
|
147
|
+
ARGV.clear
|
148
|
+
ARGV.push IRT::Utils.create_tmp_file
|
149
|
+
IRB.start
|
150
|
+
end
|
151
|
+
|
143
152
|
end
|
144
153
|
|
145
154
|
IRT.init_config
|
146
155
|
require 'irt/prompter'
|
147
156
|
require 'irt/extensions/rails' if defined?(ActiveSupport::BufferedLogger)
|
157
|
+
|
158
|
+
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: irt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 1.2.
|
5
|
+
version: 1.2.1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Domizio Demichelis
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-03-05 00:00:00 -04:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -57,7 +57,7 @@ dependencies:
|
|
57
57
|
version: 0.1.5
|
58
58
|
type: :runtime
|
59
59
|
version_requirements: *id004
|
60
|
-
description: If you use IRT in place of irb or
|
60
|
+
description: If you use IRT in place of irb or Rails Console, you will have more tools that will make your life a lot easier.
|
61
61
|
email: dd.nexus@gmail.com
|
62
62
|
executables:
|
63
63
|
- irt
|
@@ -65,8 +65,8 @@ executables:
|
|
65
65
|
- irt_rails2
|
66
66
|
extensions: []
|
67
67
|
|
68
|
-
extra_rdoc_files:
|
69
|
-
|
68
|
+
extra_rdoc_files:
|
69
|
+
- README.markdown
|
70
70
|
files:
|
71
71
|
- .gitignore
|
72
72
|
- LICENSE
|
@@ -133,6 +133,6 @@ rubyforge_project:
|
|
133
133
|
rubygems_version: 1.5.0
|
134
134
|
signing_key:
|
135
135
|
specification_version: 3
|
136
|
-
summary: Interactive Ruby Tools -
|
136
|
+
summary: Interactive Ruby Tools - Very improved irb and Rails Console with a lot of cool features.
|
137
137
|
test_files: []
|
138
138
|
|