diff options
| -rw-r--r-- | Gemfile | 3 | ||||
| -rw-r--r-- | Gemfile.lock | 5 | ||||
| -rw-r--r-- | db/migrate/20171121142536_create_versions.rb | 34 | 
3 files changed, 42 insertions, 0 deletions
| @@ -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 | 
