saver 0.0.2 → 0.1.0

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 CHANGED
@@ -1,4 +1,5 @@
1
1
  *.gem
2
2
  .bundle
3
3
  Gemfile.lock
4
+ coverage
4
5
  pkg/*
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Saver
2
2
 
3
+ [![Build Status](http://travis-ci.org/Kelsin/saver.png)](http://travis-ci.org/Kelsin/saver)
4
+
3
5
  This gem lets you easily add text columns to your mongo mapper (only for now)
4
6
  models. We use this gem to save logging information for one of our web apps. In
5
7
  the future if the associations break, you'll still have a text version of the
@@ -35,7 +37,3 @@ Now when we save our model we get data like this:
35
37
  :card_id => 2,
36
38
  :card_saver => 'Card 45 with $50.00 on it'
37
39
  }
38
-
39
- ## Todo
40
-
41
- * Add in tests
data/Rakefile CHANGED
@@ -1 +1,11 @@
1
1
  require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ desc 'Default: run specs.'
5
+ task :default => :spec
6
+
7
+ desc "Run all specs"
8
+ RSpec::Core::RakeTask.new(:spec) do |t|
9
+ t.pattern = "spec/**/*_spec.rb"
10
+ end
11
+
@@ -1,4 +1,5 @@
1
1
  require "saver/version"
2
+ require "active_support"
2
3
 
3
4
  module Saver
4
5
  extend ActiveSupport::Concern
@@ -24,11 +25,9 @@ module Saver
24
25
  end
25
26
  end
26
27
 
27
- module InstanceMethods
28
- def save_savers
29
- self.class.savers.each do |attribute, method|
30
- self.send("#{attribute}_saver=", self.send(attribute).send(method))
31
- end
28
+ def save_savers
29
+ self.class.savers.each do |attribute, method|
30
+ self.send("#{attribute}_saver=", self.send(attribute).send(method))
32
31
  end
33
32
  end
34
33
  end
@@ -1,3 +1,3 @@
1
1
  module Saver
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -18,5 +18,10 @@ Gem::Specification.new do |s|
18
18
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
19
  s.require_paths = ["lib"]
20
20
 
21
- s.add_dependency 'activesupport', '~> 3.0.0'
21
+ s.add_dependency 'activesupport', '~> 3.0'
22
+ s.add_dependency 'mongo_mapper'
23
+
24
+ s.add_development_dependency 'rspec', '~> 2.6.0'
25
+ s.add_development_dependency 'rake'
26
+ s.add_development_dependency 'simplecov'
22
27
  end
@@ -0,0 +1,8 @@
1
+ require 'simplecov'
2
+ SimpleCov.start
3
+
4
+ require 'saver'
5
+ require 'mongo_mapper'
6
+ MongoMapper.connection = Mongo::Connection.new
7
+ MongoMapper.database = 'saver_test'
8
+
@@ -0,0 +1,67 @@
1
+ require 'spec_helper'
2
+
3
+ describe Saver do
4
+ class SingleTest
5
+ include MongoMapper::Document
6
+ include Saver
7
+
8
+ key :data, Integer
9
+
10
+ save_attribute :data
11
+
12
+ def to_s
13
+ "Number #{self.data}"
14
+ end
15
+
16
+ def long_string
17
+ "OMG LONG Number #{self.data}"
18
+ end
19
+ end
20
+
21
+ class DoubleTest
22
+ include MongoMapper::Document
23
+ include Saver
24
+
25
+ key :data, Integer
26
+ belongs_to :single_test
27
+
28
+ save_attributes :data, :single_test
29
+ end
30
+
31
+ class MethodTest
32
+ include MongoMapper::Document
33
+ include Saver
34
+
35
+ belongs_to :single_test
36
+
37
+ save_attribute :single_test, :method => :long_string
38
+ end
39
+
40
+ let(:single_test) { SingleTest.create(:data => 5) }
41
+ let(:double_test) { DoubleTest.create(:data => 5, :single_test => single_test) }
42
+ let(:method_test) { MethodTest.create(:single_test => single_test) }
43
+
44
+ describe '#savers' do
45
+ it "should accurately save array of savers" do
46
+ single_test.class.savers.should == { :data => :to_s }
47
+ double_test.class.savers.should == { :data => :to_s, :single_test => :to_s }
48
+ end
49
+ end
50
+
51
+ describe '#save_attribute' do
52
+ it "should work" do
53
+ single_test.data_saver.should == '5'
54
+ end
55
+
56
+ it "should work with custom method" do
57
+ method_test.single_test_saver.should == 'OMG LONG Number 5'
58
+ end
59
+ end
60
+
61
+ describe '#save_attributes' do
62
+ it "should work" do
63
+ double_test.data_saver.should == '5'
64
+ double_test.single_test_saver.should == 'Number 5'
65
+ end
66
+ end
67
+ end
metadata CHANGED
@@ -1,35 +1,82 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: saver
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.2
3
+ version: !ruby/object:Gem::Version
5
4
  prerelease:
5
+ version: 0.1.0
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Christopher Giroir
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-08-17 00:00:00.000000000 -04:00
13
- default_executable:
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+
13
+ date: 2012-05-14 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
16
  name: activesupport
17
- requirement: &2164956240 !ruby/object:Gem::Requirement
17
+ prerelease: false
18
+ requirement: &id001 !ruby/object:Gem::Requirement
18
19
  none: false
19
- requirements:
20
+ requirements:
20
21
  - - ~>
21
- - !ruby/object:Gem::Version
22
- version: 3.0.0
22
+ - !ruby/object:Gem::Version
23
+ version: "3.0"
23
24
  type: :runtime
25
+ version_requirements: *id001
26
+ - !ruby/object:Gem::Dependency
27
+ name: mongo_mapper
28
+ prerelease: false
29
+ requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: "0"
35
+ type: :runtime
36
+ version_requirements: *id002
37
+ - !ruby/object:Gem::Dependency
38
+ name: rspec
39
+ prerelease: false
40
+ requirement: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 2.6.0
46
+ type: :development
47
+ version_requirements: *id003
48
+ - !ruby/object:Gem::Dependency
49
+ name: rake
24
50
  prerelease: false
25
- version_requirements: *2164956240
51
+ requirement: &id004 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: "0"
57
+ type: :development
58
+ version_requirements: *id004
59
+ - !ruby/object:Gem::Dependency
60
+ name: simplecov
61
+ prerelease: false
62
+ requirement: &id005 !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: "0"
68
+ type: :development
69
+ version_requirements: *id005
26
70
  description: Save a string version of columns automatically
27
- email:
71
+ email:
28
72
  - kelsin@valefor.com
29
73
  executables: []
74
+
30
75
  extensions: []
76
+
31
77
  extra_rdoc_files: []
32
- files:
78
+
79
+ files:
33
80
  - .gitignore
34
81
  - .rvmrc
35
82
  - Gemfile
@@ -38,29 +85,35 @@ files:
38
85
  - lib/saver.rb
39
86
  - lib/saver/version.rb
40
87
  - saver.gemspec
41
- has_rdoc: true
88
+ - spec/spec_helper.rb
89
+ - spec/unit/saver_spec.rb
42
90
  homepage: http://kelsin.github.com/saver/
43
91
  licenses: []
92
+
44
93
  post_install_message:
45
94
  rdoc_options: []
46
- require_paths:
95
+
96
+ require_paths:
47
97
  - lib
48
- required_ruby_version: !ruby/object:Gem::Requirement
98
+ required_ruby_version: !ruby/object:Gem::Requirement
49
99
  none: false
50
- requirements:
51
- - - ! '>='
52
- - !ruby/object:Gem::Version
53
- version: '0'
54
- required_rubygems_version: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: "0"
104
+ required_rubygems_version: !ruby/object:Gem::Requirement
55
105
  none: false
56
- requirements:
57
- - - ! '>='
58
- - !ruby/object:Gem::Version
59
- version: '0'
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: "0"
60
110
  requirements: []
111
+
61
112
  rubyforge_project: saver
62
- rubygems_version: 1.6.2
113
+ rubygems_version: 1.8.17
63
114
  signing_key:
64
115
  specification_version: 3
65
116
  summary: Save a string version of columns automatically
66
- test_files: []
117
+ test_files:
118
+ - spec/spec_helper.rb
119
+ - spec/unit/saver_spec.rb