acts_as_versionable 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.rdoc ADDED
@@ -0,0 +1,55 @@
1
+ = Acts As Versionable
2
+
3
+ Minimalist versionable engine
4
+
5
+ === Installation
6
+
7
+ gem 'acts_as_versionable'
8
+
9
+ === Generator
10
+
11
+ rails g versionable MODEL
12
+
13
+ rails g model Document title:string body:text
14
+ rake db:migrate
15
+
16
+ _generate versionable table_
17
+
18
+ rails g versionable Document
19
+ create db/migrate/20120119150513_create_documents_versions.rb
20
+
21
+ class CreateDocumentsVersions < ActiveRecord::Migration
22
+ def self.up
23
+ create_table :documents_versions do |t|
24
+ t.column :title, :string
25
+ t.column :body, :text
26
+ t.column :current_version, :integer
27
+ t.integer :document_id
28
+ t.integer :versioned_as
29
+ t.timestamps
30
+ end
31
+ add_index :documents_versions, :versioned_as
32
+ add_column :documents, :current_version, :integer
33
+ end
34
+
35
+ def self.down
36
+ drop_table :documents_versions
37
+ remove_column :documents, :current_version
38
+ end
39
+ end
40
+
41
+ === Example
42
+
43
+ class Document < ActiveRecord::Base
44
+ acts_as_versionable :limit => 3
45
+ end
46
+
47
+ document = Document.create(:title => 'title', :body => 'body')
48
+ document.version => 1
49
+
50
+ document.title = 'new title'
51
+ document.save => true
52
+ document.version => 2
53
+ document.versions => Array(2)
54
+ document.revert_to(1) => #<Document ...>
55
+
@@ -1,3 +1,3 @@
1
1
  module ActsAsVersionable
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
@@ -1,6 +1,5 @@
1
1
  require 'acts_as_versionable/version'
2
2
 
3
- # ActsAsVersionable
4
3
  module ActsAsVersionable
5
4
 
6
5
  class NoSuchVersionError < Exception
@@ -21,7 +20,7 @@ module ActsAsVersionable
21
20
  def acts_as_versionable options={}
22
21
  options.symbolize_keys!
23
22
 
24
- has_many :versions, :class_name => "#{self.name.pluralize}Versions", :dependent => :destroy
23
+ has_many :versions, :class_name => "#{self.name}Versions", :dependent => :destroy
25
24
  after_save :apply_versioning
26
25
  after_save :clear_old_versions
27
26
 
@@ -30,7 +29,7 @@ module ActsAsVersionable
30
29
 
31
30
  self.max_versions = options[:limit].to_i
32
31
 
33
- class << create_class("#{self.name.pluralize}Versions", ActiveRecord::Base)
32
+ class << create_class("#{self.name}Versions", ActiveRecord::Base)
34
33
  def actual_columns
35
34
  content_columns.reject { |c| c.type == :datetime || c.name == 'versioned_as' }
36
35
  end
@@ -95,38 +94,3 @@ module ActsAsVersionable
95
94
  end
96
95
 
97
96
  ActiveRecord::Base.class_eval { include ActsAsVersionable }
98
-
99
- #def self.included(base)
100
- # base.extend ClassMethods
101
- #end
102
-
103
- #module ClassMethods
104
-
105
- # def create_class(name, superclass, &block)
106
- # klass = Class.new superclass, &block
107
- # Object.const_set name, klass
108
- # end
109
-
110
- # def acts_as_versionable(opts = {})
111
-
112
- # has_many :versions, :class_name => "#{self}Version", :dependent => :destroy
113
- # after_save :apply_versioning
114
- # after_save :clear_old_versions
115
-
116
- # attr_accessor :local_changes
117
-
118
- # class << create_class("#{self}Version", ActiveRecord::Base)
119
- # def actual_columns
120
- # content_columns.reject { |c| c.type == :datetime || c.name == 'versioned_as' }
121
- # end
122
- # end
123
-
124
- #include InstanceMethods
125
- # end
126
-
127
- #end
128
-
129
-
130
-
131
- #end
132
-
@@ -1,5 +1,5 @@
1
1
  <%
2
- versions_table = "#{@model_name.pluralize}_versions".downcase
2
+ versions_table = "#{@model_name}_versions".downcase
3
3
  columns = @model.classify.constantize.content_columns.reject { |c| c.type == :datetime }
4
4
  %>
5
5
  class <%= migration_name %> < ActiveRecord::Migration
@@ -1,7 +1,7 @@
1
1
  require 'rails/generators'
2
2
  require 'rails/generators/migration'
3
3
 
4
- class VersionableGenerator < Rails::Generators::NamedBase
4
+ class VersionableGenerator < Rails::Generators::Base
5
5
  include Rails::Generators::Migration
6
6
  source_root File.expand_path('../templates', __FILE__)
7
7
  argument :klass, :type => :string, :description => "Model to versionate"
@@ -15,23 +15,8 @@ class VersionableGenerator < Rails::Generators::NamedBase
15
15
  def create_model_file
16
16
  @model_name = klass.downcase
17
17
  @model = klass
18
- puts @model
19
- @migration_name = "create_#{@model_name}_versions".camelize
20
- puts @migration_name
18
+ @migration_name = "create_#{@model_name}_versions".camelize
21
19
  migration_template "migration.rb.erb", "db/migrate/create_#{@model_name}_versions.rb"
22
20
  end
23
-
24
-
25
- #def manifest
26
- #
27
- # record do |m|
28
- # m.migration_template('migration.rb', 'db/migrate',
29
- # :assigns => {
30
- # :model_name => @model_name,
31
- # :migration_name => "CreateVersionsFor#{@model_name.pluralize}"
32
- # },
33
- # :migration_file_name => "create_versions_for_#{model_name_for_migration}")
34
- # end
35
- #end
36
21
 
37
22
  end
@@ -104,7 +104,7 @@ class VersionableTest < Test::Unit::TestCase
104
104
 
105
105
  def test_dependent_destroy
106
106
  Article.destroy_all
107
- assert_equal [], ArticleVersion.all
107
+ assert_equal [], ArticleVersions.all
108
108
  end
109
109
  end
110
110
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_versionable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -20,9 +20,9 @@ extra_rdoc_files: []
20
20
  files:
21
21
  - .gitignore
22
22
  - Gemfile
23
+ - README.rdoc
23
24
  - Rakefile
24
25
  - acts_as_versionable.gemspec
25
- - init.rb
26
26
  - lib/acts_as_versionable.rb
27
27
  - lib/acts_as_versionable/version.rb
28
28
  - lib/generators/versionable/templates/migration.rb.erb
data/init.rb DELETED
@@ -1,2 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'lib', 'acts_as_versionable')
2
- ActiveRecord::Base.class_eval { include ActsAsVersionable }