paper_trail 4.2.0 → 7.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (171) hide show
  1. checksums.yaml +4 -4
  2. data/lib/generators/paper_trail/install_generator.rb +91 -17
  3. data/lib/generators/paper_trail/templates/add_object_changes_to_versions.rb.erb +12 -0
  4. data/lib/generators/paper_trail/templates/{add_transaction_id_column_to_versions.rb → add_transaction_id_column_to_versions.rb.erb} +3 -1
  5. data/lib/generators/paper_trail/templates/create_version_associations.rb.erb +22 -0
  6. data/lib/generators/paper_trail/templates/{create_versions.rb → create_versions.rb.erb} +9 -7
  7. data/lib/paper_trail.rb +180 -148
  8. data/lib/paper_trail/attribute_serializers/README.md +10 -0
  9. data/lib/paper_trail/attribute_serializers/cast_attribute_serializer.rb +80 -0
  10. data/lib/paper_trail/attribute_serializers/legacy_active_record_shim.rb +48 -0
  11. data/lib/paper_trail/attribute_serializers/object_attribute.rb +39 -0
  12. data/lib/paper_trail/attribute_serializers/object_changes_attribute.rb +42 -0
  13. data/lib/paper_trail/cleaner.rb +16 -10
  14. data/lib/paper_trail/config.rb +28 -27
  15. data/lib/paper_trail/frameworks/active_record/models/paper_trail/version.rb +5 -1
  16. data/lib/paper_trail/frameworks/active_record/models/paper_trail/version_association.rb +6 -2
  17. data/lib/paper_trail/frameworks/cucumber.rb +1 -0
  18. data/lib/paper_trail/frameworks/rails.rb +2 -7
  19. data/lib/paper_trail/frameworks/rails/controller.rb +20 -18
  20. data/lib/paper_trail/frameworks/rails/engine.rb +6 -1
  21. data/lib/paper_trail/frameworks/rspec.rb +17 -6
  22. data/lib/paper_trail/frameworks/rspec/helpers.rb +3 -1
  23. data/lib/paper_trail/has_paper_trail.rb +25 -503
  24. data/lib/paper_trail/model_config.rb +207 -0
  25. data/lib/paper_trail/queries/versions/where_object.rb +60 -0
  26. data/lib/paper_trail/queries/versions/where_object_changes.rb +68 -0
  27. data/lib/paper_trail/record_history.rb +2 -12
  28. data/lib/paper_trail/record_trail.rb +573 -0
  29. data/lib/paper_trail/reifier.rb +164 -215
  30. data/lib/paper_trail/reifiers/belongs_to.rb +48 -0
  31. data/lib/paper_trail/reifiers/has_and_belongs_to_many.rb +50 -0
  32. data/lib/paper_trail/reifiers/has_many.rb +110 -0
  33. data/lib/paper_trail/reifiers/has_many_through.rb +90 -0
  34. data/lib/paper_trail/reifiers/has_one.rb +76 -0
  35. data/lib/paper_trail/serializers/json.rb +16 -7
  36. data/lib/paper_trail/serializers/yaml.rb +9 -13
  37. data/lib/paper_trail/version_association_concern.rb +3 -5
  38. data/lib/paper_trail/version_concern.rb +138 -111
  39. data/lib/paper_trail/version_number.rb +10 -9
  40. metadata +95 -327
  41. data/.gitignore +0 -22
  42. data/.rspec +0 -2
  43. data/.travis.yml +0 -41
  44. data/CHANGELOG.md +0 -362
  45. data/CONTRIBUTING.md +0 -84
  46. data/Gemfile +0 -2
  47. data/MIT-LICENSE +0 -20
  48. data/README.md +0 -1535
  49. data/Rakefile +0 -30
  50. data/doc/bug_report_template.rb +0 -65
  51. data/gemfiles/ar3.gemfile +0 -61
  52. data/lib/generators/paper_trail/templates/add_object_changes_to_versions.rb +0 -10
  53. data/lib/generators/paper_trail/templates/create_version_associations.rb +0 -17
  54. data/lib/paper_trail/attributes_serialization.rb +0 -89
  55. data/lib/paper_trail/frameworks/sinatra.rb +0 -38
  56. data/paper_trail.gemspec +0 -59
  57. data/spec/generators/install_generator_spec.rb +0 -67
  58. data/spec/models/animal_spec.rb +0 -36
  59. data/spec/models/boolit_spec.rb +0 -48
  60. data/spec/models/callback_modifier_spec.rb +0 -96
  61. data/spec/models/fluxor_spec.rb +0 -19
  62. data/spec/models/gadget_spec.rb +0 -70
  63. data/spec/models/joined_version_spec.rb +0 -47
  64. data/spec/models/json_version_spec.rb +0 -103
  65. data/spec/models/kitchen/banana_spec.rb +0 -14
  66. data/spec/models/not_on_update_spec.rb +0 -19
  67. data/spec/models/post_with_status_spec.rb +0 -17
  68. data/spec/models/skipper_spec.rb +0 -46
  69. data/spec/models/thing_spec.rb +0 -11
  70. data/spec/models/version_spec.rb +0 -239
  71. data/spec/models/widget_spec.rb +0 -298
  72. data/spec/modules/paper_trail_spec.rb +0 -27
  73. data/spec/modules/version_concern_spec.rb +0 -32
  74. data/spec/modules/version_number_spec.rb +0 -44
  75. data/spec/paper_trail/config_spec.rb +0 -52
  76. data/spec/paper_trail_spec.rb +0 -66
  77. data/spec/rails_helper.rb +0 -34
  78. data/spec/requests/articles_spec.rb +0 -30
  79. data/spec/spec_helper.rb +0 -95
  80. data/spec/support/alt_db_init.rb +0 -59
  81. data/test/custom_json_serializer.rb +0 -13
  82. data/test/dummy/Rakefile +0 -7
  83. data/test/dummy/app/controllers/application_controller.rb +0 -20
  84. data/test/dummy/app/controllers/articles_controller.rb +0 -17
  85. data/test/dummy/app/controllers/test_controller.rb +0 -5
  86. data/test/dummy/app/controllers/widgets_controller.rb +0 -31
  87. data/test/dummy/app/helpers/application_helper.rb +0 -2
  88. data/test/dummy/app/models/animal.rb +0 -6
  89. data/test/dummy/app/models/article.rb +0 -16
  90. data/test/dummy/app/models/authorship.rb +0 -5
  91. data/test/dummy/app/models/book.rb +0 -9
  92. data/test/dummy/app/models/boolit.rb +0 -4
  93. data/test/dummy/app/models/callback_modifier.rb +0 -45
  94. data/test/dummy/app/models/cat.rb +0 -2
  95. data/test/dummy/app/models/chapter.rb +0 -9
  96. data/test/dummy/app/models/citation.rb +0 -5
  97. data/test/dummy/app/models/customer.rb +0 -4
  98. data/test/dummy/app/models/document.rb +0 -4
  99. data/test/dummy/app/models/dog.rb +0 -2
  100. data/test/dummy/app/models/editor.rb +0 -4
  101. data/test/dummy/app/models/editorship.rb +0 -5
  102. data/test/dummy/app/models/elephant.rb +0 -3
  103. data/test/dummy/app/models/fluxor.rb +0 -3
  104. data/test/dummy/app/models/foo_widget.rb +0 -2
  105. data/test/dummy/app/models/fruit.rb +0 -5
  106. data/test/dummy/app/models/gadget.rb +0 -3
  107. data/test/dummy/app/models/kitchen/banana.rb +0 -5
  108. data/test/dummy/app/models/legacy_widget.rb +0 -4
  109. data/test/dummy/app/models/line_item.rb +0 -4
  110. data/test/dummy/app/models/not_on_update.rb +0 -4
  111. data/test/dummy/app/models/order.rb +0 -5
  112. data/test/dummy/app/models/paragraph.rb +0 -5
  113. data/test/dummy/app/models/person.rb +0 -38
  114. data/test/dummy/app/models/post.rb +0 -3
  115. data/test/dummy/app/models/post_with_status.rb +0 -8
  116. data/test/dummy/app/models/protected_widget.rb +0 -3
  117. data/test/dummy/app/models/quotation.rb +0 -5
  118. data/test/dummy/app/models/section.rb +0 -6
  119. data/test/dummy/app/models/skipper.rb +0 -6
  120. data/test/dummy/app/models/song.rb +0 -32
  121. data/test/dummy/app/models/thing.rb +0 -3
  122. data/test/dummy/app/models/translation.rb +0 -4
  123. data/test/dummy/app/models/whatchamajigger.rb +0 -4
  124. data/test/dummy/app/models/widget.rb +0 -15
  125. data/test/dummy/app/models/wotsit.rb +0 -8
  126. data/test/dummy/app/versions/joined_version.rb +0 -5
  127. data/test/dummy/app/versions/json_version.rb +0 -3
  128. data/test/dummy/app/versions/kitchen/banana_version.rb +0 -5
  129. data/test/dummy/app/versions/post_version.rb +0 -3
  130. data/test/dummy/app/views/layouts/application.html.erb +0 -14
  131. data/test/dummy/config.ru +0 -4
  132. data/test/dummy/config/application.rb +0 -69
  133. data/test/dummy/config/boot.rb +0 -10
  134. data/test/dummy/config/database.mysql.yml +0 -19
  135. data/test/dummy/config/database.postgres.yml +0 -15
  136. data/test/dummy/config/database.sqlite.yml +0 -15
  137. data/test/dummy/config/environment.rb +0 -5
  138. data/test/dummy/config/environments/development.rb +0 -40
  139. data/test/dummy/config/environments/production.rb +0 -73
  140. data/test/dummy/config/environments/test.rb +0 -41
  141. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  142. data/test/dummy/config/initializers/inflections.rb +0 -10
  143. data/test/dummy/config/initializers/mime_types.rb +0 -5
  144. data/test/dummy/config/initializers/paper_trail.rb +0 -10
  145. data/test/dummy/config/initializers/secret_token.rb +0 -7
  146. data/test/dummy/config/initializers/session_store.rb +0 -8
  147. data/test/dummy/config/locales/en.yml +0 -5
  148. data/test/dummy/config/routes.rb +0 -4
  149. data/test/dummy/db/migrate/20110208155312_set_up_test_tables.rb +0 -287
  150. data/test/dummy/db/schema.rb +0 -246
  151. data/test/dummy/script/rails +0 -6
  152. data/test/functional/controller_test.rb +0 -91
  153. data/test/functional/enabled_for_controller_test.rb +0 -29
  154. data/test/functional/modular_sinatra_test.rb +0 -48
  155. data/test/functional/sinatra_test.rb +0 -49
  156. data/test/functional/thread_safety_test.rb +0 -48
  157. data/test/paper_trail_test.rb +0 -38
  158. data/test/test_helper.rb +0 -105
  159. data/test/time_travel_helper.rb +0 -15
  160. data/test/unit/associations_test.rb +0 -726
  161. data/test/unit/cleaner_test.rb +0 -182
  162. data/test/unit/inheritance_column_test.rb +0 -43
  163. data/test/unit/model_test.rb +0 -1373
  164. data/test/unit/protected_attrs_test.rb +0 -47
  165. data/test/unit/serializer_test.rb +0 -117
  166. data/test/unit/serializers/json_test.rb +0 -88
  167. data/test/unit/serializers/mixin_json_test.rb +0 -36
  168. data/test/unit/serializers/mixin_yaml_test.rb +0 -49
  169. data/test/unit/serializers/yaml_test.rb +0 -52
  170. data/test/unit/timestamp_test.rb +0 -43
  171. data/test/unit/version_test.rb +0 -119
data/Rakefile DELETED
@@ -1,30 +0,0 @@
1
- require 'bundler'
2
- Bundler::GemHelper.install_tasks
3
-
4
- desc 'Set a relevant database.yml for testing'
5
- task :prepare do
6
- ENV["DB"] ||= "sqlite"
7
- if RUBY_VERSION >= '1.9'
8
- FileUtils.cp "test/dummy/config/database.#{ENV["DB"]}.yml", "test/dummy/config/database.yml"
9
- else
10
- require 'ftools'
11
- File.cp "test/dummy/config/database.#{ENV["DB"]}.yml", "test/dummy/config/database.yml"
12
- end
13
- end
14
-
15
-
16
- require 'rake/testtask'
17
- desc 'Run tests on PaperTrail with Test::Unit.'
18
- Rake::TestTask.new(:test) do |t|
19
- t.libs << 'lib'
20
- t.libs << 'test'
21
- t.pattern = 'test/**/*_test.rb'
22
- t.verbose = false
23
- end
24
-
25
- require 'rspec/core/rake_task'
26
- desc 'Run tests on PaperTrail with RSpec'
27
- RSpec::Core::RakeTask.new(:spec)
28
-
29
- desc 'Default: run all available test suites'
30
- task :default => [:prepare, :test, :spec]
@@ -1,65 +0,0 @@
1
- # Use this template to report PaperTrail bugs.
2
- # It is based on the ActiveRecord template.
3
- # https://github.com/rails/rails/blob/master/guides/bug_report_templates/active_record_gem.rb
4
- begin
5
- require 'bundler/inline'
6
- rescue LoadError => e
7
- $stderr.puts 'Bundler version 1.10 or later is required. Please update your Bundler'
8
- raise e
9
- end
10
-
11
- gemfile(true) do
12
- ruby '2.2.3'
13
- source 'https://rubygems.org'
14
- gem 'activerecord', '4.2.0'
15
- gem 'minitest', '5.8.3'
16
- gem 'paper_trail', '4.0.0', require: false
17
- gem 'sqlite3'
18
- end
19
-
20
- require 'active_record'
21
- require 'minitest/autorun'
22
- require 'logger'
23
- ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:')
24
- ActiveRecord::Base.logger = Logger.new(STDOUT)
25
- require 'paper_trail'
26
-
27
- ActiveRecord::Schema.define do
28
- create_table :users, force: true do |t|
29
- t.text :first_name, null: false
30
- t.timestamps null: false
31
- end
32
- create_table :versions do |t|
33
- t.string :item_type, null: false
34
- t.integer :item_id, null: false
35
- t.string :event, null: false
36
- t.string :whodunnit
37
- t.text :object, limit: 1_073_741_823
38
- t.text :object_changes, limit: 1_073_741_823
39
- t.integer :transaction_id
40
- t.datetime :created_at
41
- end
42
- add_index :versions, [:item_type, :item_id]
43
- add_index :versions, [:transaction_id]
44
-
45
- create_table :version_associations do |t|
46
- t.integer :version_id
47
- t.string :foreign_key_name, null: false
48
- t.integer :foreign_key_id
49
- end
50
- add_index :version_associations, [:version_id]
51
- add_index :version_associations, [:foreign_key_name, :foreign_key_id],
52
- name: 'index_version_associations_on_foreign_key'
53
- end
54
-
55
- class User < ActiveRecord::Base
56
- has_paper_trail
57
- end
58
-
59
- class BugTest < ActiveSupport::TestCase
60
- def test_1
61
- assert_difference(-> { PaperTrail::Version.count }, +1) {
62
- User.create(first_name: "Jane")
63
- }
64
- end
65
- end
data/gemfiles/ar3.gemfile DELETED
@@ -1,61 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gem 'activerecord', '3.2.22.2'
4
- gem 'request_store', '~> 1.1.0'
5
-
6
- # i18n 0.7 requires ruby >= 1.9.3, but we still support 1.8.7
7
- gem 'i18n', '< 0.7'
8
-
9
- # actionpack 3 depends on rack-cache ~> 1.2, but bundler seems to ignore that.
10
- # Also rack-cache 1.3 dropped support for ruby 1.8.7. The simplest thing for now
11
- # was to specify rack-cache ~> 1.2 here, though it should be unnecessary given
12
- # the actionpack 3 dependency.
13
- gem 'rack-cache', '~> 1.2.0'
14
-
15
- group :development, :test do
16
- gem 'rake', '~> 10.1.1'
17
- gem 'shoulda', '~> 3.5'
18
- gem 'ffaker', '<= 1.31.0'
19
-
20
- # Testing of Sinatra
21
- gem 'sinatra', '~> 1.1.4'
22
-
23
- # RSpec testing
24
- gem 'rspec-rails', '~> 3.4.2'
25
- gem 'generator_spec'
26
-
27
- # To do proper transactional testing with ActiveSupport::TestCase on MySQL
28
- gem 'database_cleaner', '~> 1.2.0'
29
-
30
- # Allow time travel in testing. timecop is only supported after 1.9.2 but does a better cleanup at 'return'
31
- if RUBY_VERSION < "1.9.2"
32
- gem 'delorean'
33
- else
34
- gem 'timecop'
35
- end
36
-
37
- platforms :ruby do
38
- gem 'sqlite3', '~> 1.2'
39
-
40
- # We would prefer to only constrain mysql2 to '~> 0.3',
41
- # but a rails bug (https://github.com/rails/rails/issues/21544)
42
- # requires us to constrain to '~> 0.3.20' for now.
43
- gem 'mysql2', '~> 0.3.20'
44
-
45
- gem 'pg', '~> 0.17.1'
46
- end
47
-
48
- platforms :jruby, :ruby_18 do
49
- # shoulda-matchers > 2.0 is not compatible with Ruby18.
50
- # Since we can't specify difference between JRuby 18/19, we need to use shoulda-matchers 1.5 for all JRuby testing.
51
- gem 'shoulda-matchers', '~> 1.5'
52
- end
53
-
54
- platforms :jruby do
55
- # Use jRuby's sqlite3 adapter for jRuby
56
- gem 'activerecord-jdbcsqlite3-adapter', '~> 1.3'
57
- gem 'activerecord-jdbcpostgresql-adapter', '~> 1.3'
58
- gem 'activerecord-jdbcmysql-adapter', '~> 1.3'
59
- gem 'activerecord-jdbc-adapter', '1.3.15'
60
- end
61
- end
@@ -1,10 +0,0 @@
1
- class AddObjectChangesToVersions < ActiveRecord::Migration
2
-
3
- # The largest text column available in all supported RDBMS.
4
- # See `create_versions.rb` for details.
5
- TEXT_BYTES = 1_073_741_823
6
-
7
- def change
8
- add_column :versions, :object_changes, :text, :limit => TEXT_BYTES
9
- end
10
- end
@@ -1,17 +0,0 @@
1
- class CreateVersionAssociations < ActiveRecord::Migration
2
- def self.up
3
- create_table :version_associations do |t|
4
- t.integer :version_id
5
- t.string :foreign_key_name, :null => false
6
- t.integer :foreign_key_id
7
- end
8
- add_index :version_associations, [:version_id]
9
- add_index :version_associations, [:foreign_key_name, :foreign_key_id], :name => 'index_version_associations_on_foreign_key'
10
- end
11
-
12
- def self.down
13
- remove_index :version_associations, [:version_id]
14
- remove_index :version_associations, :name => 'index_version_associations_on_foreign_key'
15
- drop_table :version_associations
16
- end
17
- end
@@ -1,89 +0,0 @@
1
- module PaperTrail
2
- module AttributesSerialization
3
- class NoOpAttribute
4
- def type_cast_for_database(value)
5
- value
6
- end
7
-
8
- def type_cast_from_database(data)
9
- data
10
- end
11
- end
12
- NO_OP_ATTRIBUTE = NoOpAttribute.new
13
-
14
- class SerializedAttribute
15
- def initialize(coder)
16
- @coder = coder.respond_to?(:dump) ? coder : PaperTrail.serializer
17
- end
18
-
19
- def type_cast_for_database(value)
20
- @coder.dump(value)
21
- end
22
-
23
- def type_cast_from_database(data)
24
- @coder.load(data)
25
- end
26
- end
27
-
28
- SERIALIZE, DESERIALIZE =
29
- if ::ActiveRecord::VERSION::MAJOR >= 5
30
- [:serialize, :deserialize]
31
- else
32
- [:type_cast_for_database, :type_cast_from_database]
33
- end
34
-
35
- if ::ActiveRecord::VERSION::STRING < '4.2'
36
- # Backport Rails 4.2 and later's `type_for_attribute` to build
37
- # on a common interface.
38
- def type_for_attribute(attr_name)
39
- serialized_attribute_types[attr_name.to_s] || NO_OP_ATTRIBUTE
40
- end
41
-
42
- def serialized_attribute_types
43
- @attribute_types ||= Hash[serialized_attributes.map do |attr_name, coder|
44
- [attr_name, SerializedAttribute.new(coder)]
45
- end]
46
- end
47
- private :serialized_attribute_types
48
- end
49
-
50
- # Used for `Version#object` attribute.
51
- def serialize_attributes_for_paper_trail!(attributes)
52
- alter_attributes_for_paper_trail!(SERIALIZE, attributes)
53
- end
54
-
55
- def unserialize_attributes_for_paper_trail!(attributes)
56
- alter_attributes_for_paper_trail!(DESERIALIZE, attributes)
57
- end
58
-
59
- def alter_attributes_for_paper_trail!(serializer, attributes)
60
- # Don't serialize before values before inserting into columns of type
61
- # `JSON` on `PostgreSQL` databases.
62
- return attributes if paper_trail_version_class.object_col_is_json?
63
-
64
- attributes.each do |key, value|
65
- attributes[key] = type_for_attribute(key).send(serializer, value)
66
- end
67
- end
68
-
69
- # Used for Version#object_changes attribute.
70
- def serialize_attribute_changes_for_paper_trail!(changes)
71
- alter_attribute_changes_for_paper_trail!(SERIALIZE, changes)
72
- end
73
-
74
- def unserialize_attribute_changes_for_paper_trail!(changes)
75
- alter_attribute_changes_for_paper_trail!(DESERIALIZE, changes)
76
- end
77
-
78
- def alter_attribute_changes_for_paper_trail!(serializer, changes)
79
- # Don't serialize before values before inserting into columns of type
80
- # `JSON` on `PostgreSQL` databases.
81
- return changes if paper_trail_version_class.object_changes_col_is_json?
82
-
83
- changes.clone.each do |key, change|
84
- type = type_for_attribute(key)
85
- changes[key] = Array(change).map { |value| type.send(serializer, value) }
86
- end
87
- end
88
- end
89
- end
@@ -1,38 +0,0 @@
1
- require 'active_support/core_ext/object' # provides the `try` method
2
-
3
- module PaperTrail
4
- module Sinatra
5
-
6
- # Register this module inside your Sinatra application to gain access to
7
- # controller-level methods used by PaperTrail.
8
- def self.registered(app)
9
- app.use RequestStore::Middleware
10
- app.helpers self
11
- app.before { set_paper_trail_whodunnit }
12
- end
13
-
14
- protected
15
-
16
- # Returns the user who is responsible for any changes that occur.
17
- # By default this calls `current_user` and returns the result.
18
- #
19
- # Override this method in your controller to call a different
20
- # method, e.g. `current_person`, or anything you like.
21
- def user_for_paper_trail
22
- return unless defined?(current_user)
23
- ActiveSupport::VERSION::MAJOR >= 4 ? current_user.try!(:id) : current_user.try(:id)
24
- rescue NoMethodError
25
- current_user
26
- end
27
-
28
- private
29
-
30
- # Tells PaperTrail who is responsible for any changes that occur.
31
- def set_paper_trail_whodunnit
32
- ::PaperTrail.whodunnit = user_for_paper_trail if ::PaperTrail.enabled?
33
- end
34
-
35
- end
36
-
37
- ::Sinatra.register PaperTrail::Sinatra if defined?(::Sinatra)
38
- end
data/paper_trail.gemspec DELETED
@@ -1,59 +0,0 @@
1
- $LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
2
- require 'paper_trail/version_number'
3
-
4
- Gem::Specification.new do |s|
5
- s.name = 'paper_trail'
6
- s.version = PaperTrail.version
7
- s.platform = Gem::Platform::RUBY
8
- s.summary = "Track changes to your models' data. Good for auditing or versioning."
9
- s.description = s.summary
10
- s.homepage = 'https://github.com/airblade/paper_trail'
11
- s.authors = ['Andy Stewart', 'Ben Atkins']
12
- s.email = 'batkinz@gmail.com'
13
- s.license = 'MIT'
14
-
15
- s.files = `git ls-files`.split("\n")
16
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
- s.require_paths = ['lib']
19
-
20
- s.required_rubygems_version = '>= 1.3.6'
21
-
22
- s.add_dependency 'activerecord', ['>= 3.0', '< 6.0']
23
- s.add_dependency 'activesupport', ['>= 3.0', '< 6.0']
24
- s.add_dependency 'request_store', '~> 1.1'
25
-
26
- s.add_development_dependency 'rake', '~> 10.1.1'
27
- s.add_development_dependency 'shoulda', '~> 3.5'
28
- # s.add_development_dependency 'shoulda-matchers', '~> 1.5' # needed for ActiveRecord < 4
29
- s.add_development_dependency 'ffaker', '<= 1.31.0'
30
- s.add_development_dependency 'railties', ['>= 3.0', '< 5.0']
31
- s.add_development_dependency 'sinatra', '~> 1.0'
32
- s.add_development_dependency 'rack-test', '>= 0.6'
33
- s.add_development_dependency 'rspec-rails', '~> 3.1.0'
34
- s.add_development_dependency 'generator_spec'
35
- s.add_development_dependency 'database_cleaner', '~> 1.2'
36
- s.add_development_dependency 'pry-nav'
37
-
38
- # Allow time travel in testing. timecop is only supported after 1.9.2 but does a better cleanup at 'return'
39
- if RUBY_VERSION < "1.9.2"
40
- s.add_development_dependency 'delorean'
41
- else
42
- s.add_development_dependency 'timecop'
43
- end
44
-
45
- if defined?(JRUBY_VERSION)
46
- s.add_development_dependency 'activerecord-jdbcsqlite3-adapter', '~> 1.3'
47
- s.add_development_dependency 'activerecord-jdbcpostgresql-adapter', '~> 1.3'
48
- s.add_development_dependency 'activerecord-jdbcmysql-adapter', '~> 1.3'
49
- else
50
- s.add_development_dependency 'sqlite3', '~> 1.2'
51
-
52
- # We would prefer to only constrain mysql2 to '~> 0.3',
53
- # but a rails bug (https://github.com/rails/rails/issues/21544)
54
- # requires us to constrain to '~> 0.3.20' for now.
55
- s.add_development_dependency 'mysql2', '~> 0.3.20'
56
-
57
- s.add_development_dependency 'pg', '~> 0.17'
58
- end
59
- end
@@ -1,67 +0,0 @@
1
- require 'rails_helper'
2
- require 'generator_spec/test_case'
3
- require File.expand_path('../../../lib/generators/paper_trail/install_generator', __FILE__)
4
-
5
- describe PaperTrail::InstallGenerator, :type => :generator do
6
- include GeneratorSpec::TestCase
7
- destination File.expand_path('../tmp', __FILE__)
8
-
9
- after(:all) { prepare_destination } # cleanup the tmp directory
10
-
11
- describe "no options" do
12
- before(:all) do
13
- prepare_destination
14
- run_generator
15
- end
16
-
17
- it "generates a migration for creating the 'versions' table" do
18
- expect(destination_root).to have_structure {
19
- directory 'db' do
20
- directory 'migrate' do
21
- migration 'create_versions' do
22
- contains 'class CreateVersions'
23
- contains 'def change'
24
- contains 'create_table :versions do |t|'
25
- end
26
- end
27
- end
28
- }
29
- end
30
- end
31
-
32
- describe "`--with-changes` option set to `true`" do
33
- before(:all) do
34
- prepare_destination
35
- run_generator %w(--with-changes)
36
- end
37
-
38
- it "generates a migration for creating the 'versions' table" do
39
- expect(destination_root).to have_structure {
40
- directory 'db' do
41
- directory 'migrate' do
42
- migration 'create_versions' do
43
- contains 'class CreateVersions'
44
- contains 'def change'
45
- contains 'create_table :versions do |t|'
46
- end
47
- end
48
- end
49
- }
50
- end
51
-
52
- it "generates a migration for adding the 'object_changes' column to the 'versions' table" do
53
- expect(destination_root).to have_structure {
54
- directory 'db' do
55
- directory 'migrate' do
56
- migration 'add_object_changes_to_versions' do
57
- contains 'class AddObjectChangesToVersions'
58
- contains 'def change'
59
- contains 'add_column :versions, :object_changes, :text'
60
- end
61
- end
62
- end
63
- }
64
- end
65
- end
66
-
67
- end