aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXinhui2017-11-21 15:27:17 +0100
committerXinhui2017-11-28 12:09:02 +0100
commit8aa230271ec6f0cd578e479c42d95418cb9408c3 (patch)
tree9c3dfe3d3ed3aab6615b9ed86936049299004154
parent6bd0791839353750511ce4a49e6b75a462dfec51 (diff)
downloadchouette-core-8aa230271ec6f0cd578e479c42d95418cb9408c3.tar.bz2
Add gem paper_trail
-rw-r--r--Gemfile3
-rw-r--r--Gemfile.lock5
-rw-r--r--db/migrate/20171121142536_create_versions.rb34
3 files changed, 42 insertions, 0 deletions
diff --git a/Gemfile b/Gemfile
index 88fd635ea..3c625a530 100644
--- a/Gemfile
+++ b/Gemfile
@@ -33,6 +33,9 @@ gem 'spring', group: :development
# ActiveRecord associations on top of PostgreSQL arrays
gem 'has_array_of', af83: 'has_array_of'
+# Track changes to your models' data. Good for auditing or versioning.
+gem 'paper_trail'
+
gem 'rails-observers'
# Use SeedBank for spliting seeds
diff --git a/Gemfile.lock b/Gemfile.lock
index 9262eeb74..f9682dff1 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -321,6 +321,10 @@ GEM
mini_portile2 (~> 2.3.0)
open4 (1.3.4)
orm_adapter (0.5.0)
+ paper_trail (4.1.0)
+ activerecord (>= 3.0, < 6.0)
+ activesupport (>= 3.0, < 6.0)
+ request_store (~> 1.1)
parser (2.4.0.0)
ast (~> 2.2)
pg (0.20.0)
@@ -621,6 +625,7 @@ DEPENDENCIES
map_layers (= 0.0.4)
mimemagic
newrelic_rpm
+ paper_trail
pg
phantomjs
poltergeist
diff --git a/db/migrate/20171121142536_create_versions.rb b/db/migrate/20171121142536_create_versions.rb
new file mode 100644
index 000000000..ff794f9e1
--- /dev/null
+++ b/db/migrate/20171121142536_create_versions.rb
@@ -0,0 +1,34 @@
+class CreateVersions < ActiveRecord::Migration
+
+ # The largest text column available in all supported RDBMS is
+ # 1024^3 - 1 bytes, roughly one gibibyte. We specify a size
+ # so that MySQL will use `longtext` instead of `text`. Otherwise,
+ # when serializing very large objects, `text` might not be big enough.
+ TEXT_BYTES = 1_073_741_823
+
+ def change
+ create_table :versions do |t|
+ t.string :item_type, :null => false
+ t.integer :item_id, :null => false
+ t.string :event, :null => false
+ t.string :whodunnit
+ t.text :object, :limit => TEXT_BYTES
+
+ # Known issue in MySQL: fractional second precision
+ # -------------------------------------------------
+ #
+ # MySQL timestamp columns do not support fractional seconds unless
+ # defined with "fractional seconds precision". MySQL users should manually
+ # add fractional seconds precision to this migration, specifically, to
+ # the `created_at` column.
+ # (https://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html)
+ #
+ # MySQL users should also upgrade to rails 4.2, which is the first
+ # version of ActiveRecord with support for fractional seconds in MySQL.
+ # (https://github.com/rails/rails/pull/14359)
+ #
+ t.datetime :created_at
+ end
+ add_index :versions, [:item_type, :item_id]
+ end
+end