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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: af6cf1858bf1907896dca2ddcda49a5c9f86891309a045b2ae92795c26bfe942
4
- data.tar.gz: 833ae879bdb43aa427e8a56fb63c38f6b75662fd14d3256242d0582f32d0a849
3
+ metadata.gz: 5d623c36f6d7f69aa2b901fdae7f720efe2f38ac56fca8a53898a5ef8bb75609
4
+ data.tar.gz: 5bf8c2b43ae59ed997682d3bc81350b358e8196875f50eef6e67392583e85b63
5
5
  SHA512:
6
- metadata.gz: ad79c4663e1b97d8ca8b29ca8c8c17f5921ebe2dea25176870148e3cb05ff557fca535e0e321217ec36ff73936982a12c8c0826c956876dd718fc9c652cb01ae
7
- data.tar.gz: 3d2aeef8ad257cf3be9a518f4c8ec9ef31d8de49df5892a5fba8c73ea7d1a2d885315e8e1898882bd8736b6b5018cbba11b449f7ca0fff5751e50023b6711c46
6
+ metadata.gz: b2a945c3e2cf7bdf716ab6689e956567cf4cb24d2052f49c392597259c86eee9d1323392fc3497ba1b6c4c85af2b5c46562b790c31d59cb54efade9b1f0fb68d
7
+ data.tar.gz: 84af04eebcd32b6081f100d5972e1cc8827cd5e0364ef03f48ccbacd22309566650311b4602697cc4083595aa54bfa1726bc9c919f77d70458ffdb37f3b06325
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 1.3.0 (2026-04-04)
2
+
3
+ - Dropped support for Ruby < 3.3 and Rails < 7.2
4
+
1
5
  ## 1.2.0 (2025-05-04)
2
6
 
3
7
  - Dropped support for Ruby < 3.2 and Rails < 7.1
data/lib/archer/coder.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require "json"
2
+
1
3
  module Archer
2
4
  module Coder
3
5
  def self.dump(value)
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Archer
2
- VERSION = "1.2.0"
2
+ VERSION = "1.3.0"
3
3
  end
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 !history_object
28
+ if !history
28
29
  warn "[archer] Skipping history"
29
30
  return
30
31
  end
31
32
 
32
- history = nil
33
+ commands = nil
33
34
  begin
34
- quietly do
35
- history = Archer::History.find_by(user: user)
36
- end
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 history
42
- commands = history.commands
43
- history_object.clear
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 history_object
52
+ return false unless history
55
53
 
56
- quietly do
57
- history = Archer::History.where(user: user).first_or_initialize
58
- history.commands = history_object.to_a.last(limit)
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
- quietly do
68
- Archer::History.where(user: user).delete_all
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 history_object
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.2.0
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.1'
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.1'
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.2'
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: 3.6.7
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: []