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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 40781c4a5c494e0d147e3ad24290515f64bb79ce1a02c7eba7a81ef47cd5b61f
4
- data.tar.gz: 64763030f8015aa67639005eea7d31ed34f6e57cdef47f2daedb956a396be020
3
+ metadata.gz: e4fa3113d74d5358ba7b716b79ec419e9f46922fa954f95228fa1e9fb41fc533
4
+ data.tar.gz: 48e35df113a86effbfda007f0f0405709064e8cd54979aac5a48be93c115f9a6
5
5
  SHA512:
6
- metadata.gz: 2d33f6974ddc9f10d89f39e785de65c03813bd664503b8fc3e8c7872f0a2b8786a021c4831c9f399fc7bd99479e41ce5d975e3a695e78552e6516d0b50f66223
7
- data.tar.gz: e1deeaaae1a777dbf8f47e25826a3ec8734d1fba9fdbaeca4003caaad5750d9f470cf7b07c8eaca9dbb5ab3703ad4821cebb88ee83958b5c661d5626d42f4b4b
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,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ArjadVersionTracker
4
- VERSION = "0.1.0"
4
+ VERSION = "0.3.0"
5
5
  end
@@ -1,8 +1,20 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "arjad_version_tracker/version"
1
+ require "active_record"
4
2
 
5
3
  module ArjadVersionTracker
6
- class Error < StandardError; end
7
- # Your code goes here...
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.1.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: