acts_as_versionable 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
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 }