archer-rails 1.2.0 → 1.3.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/archer/coder.rb +2 -0
- data/lib/archer/storage.rb +33 -0
- data/lib/archer/version.rb +1 -1
- data/lib/archer.rb +20 -33
- metadata +6 -19
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5d623c36f6d7f69aa2b901fdae7f720efe2f38ac56fca8a53898a5ef8bb75609
|
|
4
|
+
data.tar.gz: 5bf8c2b43ae59ed997682d3bc81350b358e8196875f50eef6e67392583e85b63
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b2a945c3e2cf7bdf716ab6689e956567cf4cb24d2052f49c392597259c86eee9d1323392fc3497ba1b6c4c85af2b5c46562b790c31d59cb54efade9b1f0fb68d
|
|
7
|
+
data.tar.gz: 84af04eebcd32b6081f100d5972e1cc8827cd5e0364ef03f48ccbacd22309566650311b4602697cc4083595aa54bfa1726bc9c919f77d70458ffdb37f3b06325
|
data/CHANGELOG.md
CHANGED
data/lib/archer/coder.rb
CHANGED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module Archer
|
|
2
|
+
class Storage
|
|
3
|
+
def load(user:)
|
|
4
|
+
quietly do
|
|
5
|
+
Archer::History.find_by(user: user)&.commands
|
|
6
|
+
end
|
|
7
|
+
rescue ActiveRecord::StatementInvalid
|
|
8
|
+
raise "Create table to enable history"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def save(commands, user:)
|
|
12
|
+
quietly do
|
|
13
|
+
history = Archer::History.where(user: user).first_or_initialize
|
|
14
|
+
history.commands = commands
|
|
15
|
+
history.save!
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def clear(user:)
|
|
20
|
+
quietly do
|
|
21
|
+
Archer::History.where(user: user).delete_all
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
|
|
27
|
+
def quietly
|
|
28
|
+
ActiveRecord::Base.logger.silence do
|
|
29
|
+
yield
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
data/lib/archer/version.rb
CHANGED
data/lib/archer.rb
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
# dependencies
|
|
2
2
|
require "active_support/core_ext/module/attribute_accessors"
|
|
3
3
|
|
|
4
|
-
# stdlib
|
|
5
|
-
require "json"
|
|
6
|
-
|
|
7
4
|
# modules
|
|
8
|
-
require_relative "archer/coder"
|
|
9
5
|
require_relative "archer/engine" if defined?(Rails)
|
|
10
6
|
require_relative "archer/irb"
|
|
7
|
+
require_relative "archer/storage"
|
|
11
8
|
require_relative "archer/version"
|
|
12
9
|
|
|
13
10
|
module Archer
|
|
11
|
+
autoload :Coder, "archer/coder"
|
|
14
12
|
autoload :History, "archer/history"
|
|
15
13
|
|
|
16
14
|
mattr_accessor :limit
|
|
@@ -22,26 +20,26 @@ module Archer
|
|
|
22
20
|
mattr_accessor :save_session
|
|
23
21
|
self.save_session = true
|
|
24
22
|
|
|
23
|
+
# experimental
|
|
24
|
+
mattr_accessor(:storage) { Storage.new }
|
|
25
|
+
|
|
25
26
|
class << self
|
|
26
27
|
def start
|
|
27
|
-
if !
|
|
28
|
+
if !history
|
|
28
29
|
warn "[archer] Skipping history"
|
|
29
30
|
return
|
|
30
31
|
end
|
|
31
32
|
|
|
32
|
-
|
|
33
|
+
commands = nil
|
|
33
34
|
begin
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
rescue ActiveRecord::StatementInvalid
|
|
38
|
-
warn "[archer] Create table to enable history"
|
|
35
|
+
commands = storage.load(user: user)
|
|
36
|
+
rescue => e
|
|
37
|
+
warn "[archer] #{e.message}"
|
|
39
38
|
end
|
|
40
39
|
|
|
41
|
-
if
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
history_object.push(*commands)
|
|
40
|
+
if commands
|
|
41
|
+
history.clear
|
|
42
|
+
history.push(*commands)
|
|
45
43
|
end
|
|
46
44
|
|
|
47
45
|
IRB.conf[:AT_EXIT].push(proc { Archer.save if Archer.save_session })
|
|
@@ -51,37 +49,26 @@ module Archer
|
|
|
51
49
|
end
|
|
52
50
|
|
|
53
51
|
def save
|
|
54
|
-
return false unless
|
|
52
|
+
return false unless history
|
|
55
53
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
history.save!
|
|
60
|
-
end
|
|
61
|
-
rescue ActiveRecord::StatementInvalid
|
|
54
|
+
commands = history.to_a.last(limit)
|
|
55
|
+
storage.save(commands, user: user)
|
|
56
|
+
rescue
|
|
62
57
|
warn "[archer] Unable to save history"
|
|
63
58
|
false
|
|
64
59
|
end
|
|
65
60
|
|
|
66
61
|
def clear
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
end
|
|
70
|
-
history_object.clear if history_object
|
|
62
|
+
storage.clear(user: user)
|
|
63
|
+
history.clear if history
|
|
71
64
|
true
|
|
72
65
|
end
|
|
73
66
|
|
|
74
67
|
private
|
|
75
68
|
|
|
76
|
-
def
|
|
69
|
+
def history
|
|
77
70
|
cls = IRB.CurrentContext&.io&.class
|
|
78
71
|
cls && cls.const_defined?(:HISTORY) ? cls::HISTORY : nil
|
|
79
72
|
end
|
|
80
|
-
|
|
81
|
-
def quietly
|
|
82
|
-
ActiveRecord::Base.logger.silence do
|
|
83
|
-
yield
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
73
|
end
|
|
87
74
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: archer-rails
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Andrew Kane
|
|
@@ -15,28 +15,14 @@ dependencies:
|
|
|
15
15
|
requirements:
|
|
16
16
|
- - ">="
|
|
17
17
|
- !ruby/object:Gem::Version
|
|
18
|
-
version: '7.
|
|
18
|
+
version: '7.2'
|
|
19
19
|
type: :runtime
|
|
20
20
|
prerelease: false
|
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
22
22
|
requirements:
|
|
23
23
|
- - ">="
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
|
-
version: '7.
|
|
26
|
-
- !ruby/object:Gem::Dependency
|
|
27
|
-
name: activerecord
|
|
28
|
-
requirement: !ruby/object:Gem::Requirement
|
|
29
|
-
requirements:
|
|
30
|
-
- - ">="
|
|
31
|
-
- !ruby/object:Gem::Version
|
|
32
|
-
version: '7.1'
|
|
33
|
-
type: :runtime
|
|
34
|
-
prerelease: false
|
|
35
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
-
requirements:
|
|
37
|
-
- - ">="
|
|
38
|
-
- !ruby/object:Gem::Version
|
|
39
|
-
version: '7.1'
|
|
25
|
+
version: '7.2'
|
|
40
26
|
- !ruby/object:Gem::Dependency
|
|
41
27
|
name: irb
|
|
42
28
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -65,6 +51,7 @@ files:
|
|
|
65
51
|
- lib/archer/engine.rb
|
|
66
52
|
- lib/archer/history.rb
|
|
67
53
|
- lib/archer/irb.rb
|
|
54
|
+
- lib/archer/storage.rb
|
|
68
55
|
- lib/archer/version.rb
|
|
69
56
|
- lib/generators/archer/install_generator.rb
|
|
70
57
|
- lib/generators/archer/templates/migration.rb.tt
|
|
@@ -79,14 +66,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
79
66
|
requirements:
|
|
80
67
|
- - ">="
|
|
81
68
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: '3.
|
|
69
|
+
version: '3.3'
|
|
83
70
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
84
71
|
requirements:
|
|
85
72
|
- - ">="
|
|
86
73
|
- !ruby/object:Gem::Version
|
|
87
74
|
version: '0'
|
|
88
75
|
requirements: []
|
|
89
|
-
rubygems_version:
|
|
76
|
+
rubygems_version: 4.0.6
|
|
90
77
|
specification_version: 4
|
|
91
78
|
summary: Rails console history for Heroku, Docker, and more
|
|
92
79
|
test_files: []
|