arjad_version_tracker 0.1.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/arjad_version_tracker.gemspec +3 -0
- data/lib/arjad_version_tracker/version.rb +1 -1
- data/lib/arjad_version_tracker.rb +17 -5
- data/lib/generators/arjad_version_tracker/install_generator.rb +25 -0
- data/lib/generators/arjad_version_tracker/templates/migration.rb +13 -0
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e4fa3113d74d5358ba7b716b79ec419e9f46922fa954f95228fa1e9fb41fc533
|
4
|
+
data.tar.gz: 48e35df113a86effbfda007f0f0405709064e8cd54979aac5a48be93c115f9a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bde8dcb9a46640e242cc1a93549c8a87af60489b31069df832fe9e595a26d762305bf69b4dc14118e8adc025a4359b4f92ecff835091335d3bc4dc41078f82c3
|
7
|
+
data.tar.gz: fe7dd10d9f069c11409a8c3026d8c4463f99af6ea9392a070d6d4555e7ef73020b9a180b80bc2c6adb23d370cef8b671d44e09955615b5820080c150a1a5d6e0
|
@@ -22,6 +22,9 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
23
23
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
|
24
24
|
end
|
25
|
+
spec.files += Dir["lib/**/*.rb"] # Add this line to include all .rb files in the lib directory
|
26
|
+
spec.files += Dir["lib/templates/**/*.rb"] # Add this line to include all .rb files in the lib/templates directory
|
27
|
+
|
25
28
|
spec.bindir = "exe"
|
26
29
|
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
27
30
|
spec.require_paths = ["lib"]
|
@@ -1,8 +1,20 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require_relative "arjad_version_tracker/version"
|
1
|
+
require "active_record"
|
4
2
|
|
5
3
|
module ArjadVersionTracker
|
6
|
-
|
7
|
-
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
included do
|
7
|
+
has_many :versions, dependent: :destroy
|
8
|
+
before_update :track_version
|
9
|
+
end
|
10
|
+
|
11
|
+
def last_version
|
12
|
+
versions.order(created_at: :desc).first
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def track_version
|
18
|
+
versions.create!(attributes.except("id", "created_at", "updated_at"))
|
19
|
+
end
|
8
20
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# lib/generators/arjad_version_tracker/install_generator.rb
|
2
|
+
require 'rails/generators/base'
|
3
|
+
|
4
|
+
module ArjadVersionTracker
|
5
|
+
module Generators
|
6
|
+
class InstallGenerator < Rails::Generators::Base
|
7
|
+
source_root File.expand_path('templates', __dir__)
|
8
|
+
|
9
|
+
def copy_migration
|
10
|
+
timestamp = Time.now.utc.strftime('%Y%m%d%H%M%S')
|
11
|
+
template 'migration.rb', "db/migrate/#{timestamp}_create_#{table_name}_versions.rb"
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def table_name
|
17
|
+
model_name.pluralize.underscore
|
18
|
+
end
|
19
|
+
|
20
|
+
def model_name
|
21
|
+
self.class.name.sub(/Generator\z/, '').singularize
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# lib/generators/arjad_version_tracker/templates/migration.rb
|
2
|
+
class Create<%= table_name.capitalize %>Versions < ActiveRecord::Migration[6.0]
|
3
|
+
def change
|
4
|
+
create_table :<%= table_name %>_versions do |t|
|
5
|
+
# Add necessary fields here to store the version data
|
6
|
+
t.references :<%= table_name.singularize %>, polymorphic: true, null: false
|
7
|
+
t.jsonb :data
|
8
|
+
|
9
|
+
t.timestamps
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arjad_version_tracker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- arjad
|
@@ -30,6 +30,8 @@ files:
|
|
30
30
|
- bin/setup
|
31
31
|
- lib/arjad_version_tracker.rb
|
32
32
|
- lib/arjad_version_tracker/version.rb
|
33
|
+
- lib/generators/arjad_version_tracker/install_generator.rb
|
34
|
+
- lib/generators/arjad_version_tracker/templates/migration.rb
|
33
35
|
homepage: https://github.com/arjad/arjad_version_tracker
|
34
36
|
licenses: []
|
35
37
|
metadata:
|