memento 0.3.2 → 0.3.3
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/.gitignore +6 -0
- data/Gemfile +8 -0
- data/Gemfile.lock +62 -0
- data/Rakefile +4 -26
- data/lib/memento/action/update.rb +1 -1
- data/lib/memento/version.rb +3 -0
- data/memento.gemspec +16 -55
- data/spec/memento/action/update_spec.rb +2 -2
- data/spec/memento/session_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -2
- metadata +85 -43
- data/VERSION.yml +0 -5
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
memento (0.3.3)
|
5
|
+
actionpack (>= 3.0.0)
|
6
|
+
activerecord (>= 3.0.0)
|
7
|
+
|
8
|
+
GEM
|
9
|
+
remote: http://rubygems.org/
|
10
|
+
specs:
|
11
|
+
abstract (1.0.0)
|
12
|
+
actionpack (3.0.9)
|
13
|
+
activemodel (= 3.0.9)
|
14
|
+
activesupport (= 3.0.9)
|
15
|
+
builder (~> 2.1.2)
|
16
|
+
erubis (~> 2.6.6)
|
17
|
+
i18n (~> 0.5.0)
|
18
|
+
rack (~> 1.2.1)
|
19
|
+
rack-mount (~> 0.6.14)
|
20
|
+
rack-test (~> 0.5.7)
|
21
|
+
tzinfo (~> 0.3.23)
|
22
|
+
activemodel (3.0.9)
|
23
|
+
activesupport (= 3.0.9)
|
24
|
+
builder (~> 2.1.2)
|
25
|
+
i18n (~> 0.5.0)
|
26
|
+
activerecord (3.0.9)
|
27
|
+
activemodel (= 3.0.9)
|
28
|
+
activesupport (= 3.0.9)
|
29
|
+
arel (~> 2.0.10)
|
30
|
+
tzinfo (~> 0.3.23)
|
31
|
+
activesupport (3.0.9)
|
32
|
+
arel (2.0.10)
|
33
|
+
builder (2.1.2)
|
34
|
+
diff-lcs (1.1.2)
|
35
|
+
erubis (2.6.6)
|
36
|
+
abstract (>= 1.0.0)
|
37
|
+
i18n (0.5.0)
|
38
|
+
rack (1.2.3)
|
39
|
+
rack-mount (0.6.14)
|
40
|
+
rack (>= 1.0.0)
|
41
|
+
rack-test (0.5.7)
|
42
|
+
rack (>= 1.0)
|
43
|
+
rake (0.9.2)
|
44
|
+
rspec (2.6.0)
|
45
|
+
rspec-core (~> 2.6.0)
|
46
|
+
rspec-expectations (~> 2.6.0)
|
47
|
+
rspec-mocks (~> 2.6.0)
|
48
|
+
rspec-core (2.6.4)
|
49
|
+
rspec-expectations (2.6.0)
|
50
|
+
diff-lcs (~> 1.1.2)
|
51
|
+
rspec-mocks (2.6.0)
|
52
|
+
sqlite3 (1.3.3)
|
53
|
+
tzinfo (0.3.29)
|
54
|
+
|
55
|
+
PLATFORMS
|
56
|
+
ruby
|
57
|
+
|
58
|
+
DEPENDENCIES
|
59
|
+
memento!
|
60
|
+
rake
|
61
|
+
rspec (>= 2.4.0)
|
62
|
+
sqlite3 (>= 1.3.3)
|
data/Rakefile
CHANGED
@@ -1,31 +1,9 @@
|
|
1
|
-
require '
|
2
|
-
|
3
|
-
require "rspec/core/rake_task"
|
1
|
+
require 'bundler'
|
2
|
+
Bundler::GemHelper.install_tasks
|
4
3
|
|
5
|
-
|
6
|
-
spec.pattern = 'spec/**/*_spec.rb'
|
7
|
-
end
|
4
|
+
require 'rspec/core/rake_task'
|
8
5
|
|
9
|
-
RSpec::Core::RakeTask.new(:
|
10
|
-
spec.pattern = 'spec/**/*_spec.rb'
|
11
|
-
spec.rcov = true
|
12
|
-
end
|
6
|
+
RSpec::Core::RakeTask.new(:spec)
|
13
7
|
|
14
8
|
task :default => :spec
|
15
9
|
|
16
|
-
begin
|
17
|
-
require 'jeweler'
|
18
|
-
Jeweler::Tasks.new do |gem|
|
19
|
-
gem.name = "memento"
|
20
|
-
gem.summary = %Q{Undo for Rails/ActiveRecord - covers destroy, update and create}
|
21
|
-
gem.email = "sebastian@yo.lk"
|
22
|
-
gem.homepage = "http://github.com/yolk/memento"
|
23
|
-
gem.authors = ["Yolk Sebastian Munz & Julia Soergel GbR"]
|
24
|
-
|
25
|
-
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
26
|
-
end
|
27
|
-
Jeweler::GemcutterTasks.new
|
28
|
-
rescue LoadError
|
29
|
-
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
30
|
-
end
|
31
|
-
|
@@ -35,7 +35,7 @@ class Memento::Action::Update < Memento::Action::Base
|
|
35
35
|
values = values.map{|v| v.is_a?(Time) ? v.to_s(:db) : v }
|
36
36
|
current_value = record.send(:"#{attribute}")
|
37
37
|
current_value = current_value.utc.to_s(:db) if current_value.is_a?(Time)
|
38
|
-
values.include?(current_value)
|
38
|
+
values.include?(current_value) || (current_value.is_a?(String) && values.include?(current_value.gsub(/\r\n/, "\n")))
|
39
39
|
end || record_data.size.zero?
|
40
40
|
end
|
41
41
|
|
data/memento.gemspec
CHANGED
@@ -1,65 +1,26 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "memento/version"
|
5
4
|
|
6
5
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version =
|
9
|
-
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
6
|
+
s.name = "memento"
|
7
|
+
s.version = Memento::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
11
9
|
s.authors = ["Yolk Sebastian Munz & Julia Soergel GbR"]
|
12
|
-
s.date = %q{2011-07-12}
|
13
10
|
s.email = %q{sebastian@yo.lk}
|
14
|
-
s.extra_rdoc_files = [
|
15
|
-
"LICENSE",
|
16
|
-
"README.rdoc",
|
17
|
-
"TODO"
|
18
|
-
]
|
19
|
-
s.files = [
|
20
|
-
"LICENSE",
|
21
|
-
"README.rdoc",
|
22
|
-
"Rakefile",
|
23
|
-
"TODO",
|
24
|
-
"VERSION.yml",
|
25
|
-
"generators/memento_migration/memento_migration_generator.rb",
|
26
|
-
"generators/memento_migration/templates/migration.rb",
|
27
|
-
"init.rb",
|
28
|
-
"lib/memento.rb",
|
29
|
-
"lib/memento/action.rb",
|
30
|
-
"lib/memento/action/create.rb",
|
31
|
-
"lib/memento/action/destroy.rb",
|
32
|
-
"lib/memento/action/update.rb",
|
33
|
-
"lib/memento/action_controller_methods.rb",
|
34
|
-
"lib/memento/active_record_methods.rb",
|
35
|
-
"lib/memento/result.rb",
|
36
|
-
"lib/memento/session.rb",
|
37
|
-
"lib/memento/state.rb",
|
38
|
-
"memento.gemspec",
|
39
|
-
"spec/memento/action/create_spec.rb",
|
40
|
-
"spec/memento/action/destroy_spec.rb",
|
41
|
-
"spec/memento/action/update_spec.rb",
|
42
|
-
"spec/memento/action_controller_methods_spec.rb",
|
43
|
-
"spec/memento/active_record_methods_spec.rb",
|
44
|
-
"spec/memento/result_spec.rb",
|
45
|
-
"spec/memento/session_spec.rb",
|
46
|
-
"spec/memento/state_spec.rb",
|
47
|
-
"spec/memento_spec.rb",
|
48
|
-
"spec/spec_helper.rb"
|
49
|
-
]
|
50
11
|
s.homepage = %q{http://github.com/yolk/memento}
|
51
|
-
s.require_paths = ["lib"]
|
52
|
-
s.rubygems_version = %q{1.3.7}
|
53
12
|
s.summary = %q{Undo for Rails/ActiveRecord - covers destroy, update and create}
|
13
|
+
s.description = %q{Undo for Rails/ActiveRecord - covers destroy, update and create}
|
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.add_dependency 'activerecord', '>= 3.0.0'
|
21
|
+
s.add_dependency 'actionpack', '>= 3.0.0'
|
54
22
|
|
55
|
-
|
56
|
-
|
57
|
-
s.specification_version = 3
|
58
|
-
|
59
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
60
|
-
else
|
61
|
-
end
|
62
|
-
else
|
63
|
-
end
|
23
|
+
s.add_development_dependency 'rspec', '>= 2.4.0'
|
24
|
+
s.add_development_dependency 'sqlite3', '>= 1.3.3'
|
64
25
|
end
|
65
26
|
|
@@ -89,7 +89,7 @@ describe Memento::Action::Update do
|
|
89
89
|
describe "with mergeable recorded changes" do
|
90
90
|
before do
|
91
91
|
Memento.instance.memento(@user) do
|
92
|
-
@project.update_attributes({:notes => "Bla!"})
|
92
|
+
@project.update_attributes({:notes => "Bla\nBla!"})
|
93
93
|
end
|
94
94
|
Memento::State.last.update_attribute(:created_at, 1.minute.from_now)
|
95
95
|
@result = Memento::Session.first.undo.first
|
@@ -105,7 +105,7 @@ describe Memento::Action::Update do
|
|
105
105
|
@object.name.should eql("P1")
|
106
106
|
@object.customer.should be_nil
|
107
107
|
@object.closed_at.to_s.should eql(@time1.to_s)
|
108
|
-
@object.notes.should eql("Bla!")
|
108
|
+
@object.notes.should eql("Bla\nBla!")
|
109
109
|
end
|
110
110
|
|
111
111
|
describe "when second state is undone" do
|
@@ -94,7 +94,7 @@ describe Memento::Session do
|
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
97
|
-
it "should undo states in order of creation (newest first)" do
|
97
|
+
it "should undo states in reverse order of creation (newest first)" do
|
98
98
|
@session.undo.map(&:state).map(&:id).should eql([@state2.id, @state1.id])
|
99
99
|
end
|
100
100
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'rubygems'
|
2
1
|
require 'active_support'
|
3
2
|
require 'active_record'
|
4
3
|
require 'action_controller'
|
@@ -22,7 +21,7 @@ def setup_db
|
|
22
21
|
create_table :projects do |t|
|
23
22
|
t.column :name, :string
|
24
23
|
t.column :closed_at, :datetime
|
25
|
-
t.column :notes, :
|
24
|
+
t.column :notes, :text
|
26
25
|
t.references :customer
|
27
26
|
t.integer :ignore_this
|
28
27
|
t.timestamps
|
metadata
CHANGED
@@ -1,39 +1,73 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: memento
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 3
|
8
|
-
- 2
|
9
|
-
version: 0.3.2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.3
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Yolk Sebastian Munz & Julia Soergel GbR
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
12
|
+
date: 2011-09-13 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: activerecord
|
16
|
+
requirement: &2151919320 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 3.0.0
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *2151919320
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: actionpack
|
27
|
+
requirement: &2151918240 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 3.0.0
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *2151918240
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rspec
|
38
|
+
requirement: &2151916880 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 2.4.0
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *2151916880
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: sqlite3
|
49
|
+
requirement: &2151915560 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.3.3
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *2151915560
|
58
|
+
description: Undo for Rails/ActiveRecord - covers destroy, update and create
|
22
59
|
email: sebastian@yo.lk
|
23
60
|
executables: []
|
24
|
-
|
25
61
|
extensions: []
|
26
|
-
|
27
|
-
|
28
|
-
-
|
29
|
-
-
|
30
|
-
-
|
31
|
-
files:
|
62
|
+
extra_rdoc_files: []
|
63
|
+
files:
|
64
|
+
- .gitignore
|
65
|
+
- Gemfile
|
66
|
+
- Gemfile.lock
|
32
67
|
- LICENSE
|
33
68
|
- README.rdoc
|
34
69
|
- Rakefile
|
35
70
|
- TODO
|
36
|
-
- VERSION.yml
|
37
71
|
- generators/memento_migration/memento_migration_generator.rb
|
38
72
|
- generators/memento_migration/templates/migration.rb
|
39
73
|
- init.rb
|
@@ -47,6 +81,7 @@ files:
|
|
47
81
|
- lib/memento/result.rb
|
48
82
|
- lib/memento/session.rb
|
49
83
|
- lib/memento/state.rb
|
84
|
+
- lib/memento/version.rb
|
50
85
|
- memento.gemspec
|
51
86
|
- spec/memento/action/create_spec.rb
|
52
87
|
- spec/memento/action/destroy_spec.rb
|
@@ -58,37 +93,44 @@ files:
|
|
58
93
|
- spec/memento/state_spec.rb
|
59
94
|
- spec/memento_spec.rb
|
60
95
|
- spec/spec_helper.rb
|
61
|
-
has_rdoc: true
|
62
96
|
homepage: http://github.com/yolk/memento
|
63
97
|
licenses: []
|
64
|
-
|
65
98
|
post_install_message:
|
66
99
|
rdoc_options: []
|
67
|
-
|
68
|
-
require_paths:
|
100
|
+
require_paths:
|
69
101
|
- lib
|
70
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
102
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
71
103
|
none: false
|
72
|
-
requirements:
|
73
|
-
- -
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
|
104
|
+
requirements:
|
105
|
+
- - ! '>='
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: '0'
|
108
|
+
segments:
|
76
109
|
- 0
|
77
|
-
|
78
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
|
+
hash: -3434226907778954075
|
111
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
79
112
|
none: false
|
80
|
-
requirements:
|
81
|
-
- -
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
|
113
|
+
requirements:
|
114
|
+
- - ! '>='
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '0'
|
117
|
+
segments:
|
84
118
|
- 0
|
85
|
-
|
119
|
+
hash: -3434226907778954075
|
86
120
|
requirements: []
|
87
|
-
|
88
121
|
rubyforge_project:
|
89
|
-
rubygems_version: 1.
|
122
|
+
rubygems_version: 1.8.10
|
90
123
|
signing_key:
|
91
124
|
specification_version: 3
|
92
125
|
summary: Undo for Rails/ActiveRecord - covers destroy, update and create
|
93
|
-
test_files:
|
94
|
-
|
126
|
+
test_files:
|
127
|
+
- spec/memento/action/create_spec.rb
|
128
|
+
- spec/memento/action/destroy_spec.rb
|
129
|
+
- spec/memento/action/update_spec.rb
|
130
|
+
- spec/memento/action_controller_methods_spec.rb
|
131
|
+
- spec/memento/active_record_methods_spec.rb
|
132
|
+
- spec/memento/result_spec.rb
|
133
|
+
- spec/memento/session_spec.rb
|
134
|
+
- spec/memento/state_spec.rb
|
135
|
+
- spec/memento_spec.rb
|
136
|
+
- spec/spec_helper.rb
|