dm-timestamps 0.9.7 → 0.9.8

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.
@@ -1 +1,6 @@
1
+ === 0.9.8 / 2008-12-07
1
2
 
3
+ * 2 minor enhancements:
4
+
5
+ * Added timestamps helper method
6
+ * Internal refactorings
@@ -9,3 +9,5 @@ lib/dm-timestamps/version.rb
9
9
  spec/integration/timestamps_spec.rb
10
10
  spec/spec.opts
11
11
  spec/spec_helper.rb
12
+ tasks/install.rb
13
+ tasks/spec.rb
data/Rakefile CHANGED
@@ -1,58 +1,25 @@
1
- require 'rubygems'
2
- require 'spec'
3
- require 'spec/rake/spectask'
4
1
  require 'pathname'
2
+ require 'rubygems'
3
+
4
+ ROOT = Pathname(__FILE__).dirname.expand_path
5
+ JRUBY = RUBY_PLATFORM =~ /java/
6
+ WINDOWS = Gem.win_platform?
7
+ SUDO = (WINDOWS || JRUBY) ? '' : ('sudo' unless ENV['SUDOLESS'])
5
8
 
6
- ROOT = Pathname(__FILE__).dirname.expand_path
7
9
  require ROOT + 'lib/dm-timestamps/version'
8
10
 
9
- AUTHOR = "Foy Savas"
10
- EMAIL = "foysavas@gmail.com"
11
- GEM_NAME = "dm-timestamps"
11
+ AUTHOR = 'Foy Savas'
12
+ EMAIL = 'foysavas [a] gmail [d] com'
13
+ GEM_NAME = 'dm-timestamps'
12
14
  GEM_VERSION = DataMapper::Timestamps::VERSION
13
- GEM_DEPENDENCIES = [["dm-core", GEM_VERSION]]
14
- GEM_CLEAN = ["log", "pkg", "coverage"]
15
- GEM_EXTRAS = { :has_rdoc => true, :extra_rdoc_files => %w[ README.txt LICENSE TODO ] }
16
-
17
- PROJECT_NAME = "datamapper"
18
- PROJECT_URL = "http://github.com/sam/dm-more/tree/master/dm-timestamps"
19
- PROJECT_DESCRIPTION = PROJECT_SUMMARY = "DataMapper plugin for magical timestamps"
20
-
21
- require ROOT.parent + 'tasks/hoe'
22
-
23
- task :default => [ :spec ]
24
-
25
- WIN32 = (RUBY_PLATFORM =~ /win32|mingw|cygwin/) rescue nil
26
- SUDO = WIN32 ? '' : ('sudo' unless ENV['SUDOLESS'])
27
-
28
- desc "Install #{GEM_NAME} #{GEM_VERSION} (default ruby)"
29
- task :install => [ :package ] do
30
- sh "#{SUDO} gem install --local pkg/#{GEM_NAME}-#{GEM_VERSION} --no-update-sources", :verbose => false
31
- end
32
-
33
- desc "Uninstall #{GEM_NAME} #{GEM_VERSION} (default ruby)"
34
- task :uninstall => [ :clobber ] do
35
- sh "#{SUDO} gem uninstall #{GEM_NAME} -v#{GEM_VERSION} -I -x", :verbose => false
36
- end
37
-
38
- namespace :jruby do
39
- desc "Install #{GEM_NAME} #{GEM_VERSION} with JRuby"
40
- task :install => [ :package ] do
41
- sh %{#{SUDO} jruby -S gem install --local pkg/#{GEM_NAME}-#{GEM_VERSION} --no-update-sources}, :verbose => false
42
- end
43
- end
15
+ GEM_DEPENDENCIES = [['dm-core', "~>#{GEM_VERSION}"]]
16
+ GEM_CLEAN = %w[ log pkg coverage ]
17
+ GEM_EXTRAS = { :has_rdoc => true, :extra_rdoc_files => %w[ README.txt LICENSE TODO History.txt ] }
44
18
 
45
- desc 'Run specifications'
46
- Spec::Rake::SpecTask.new(:spec) do |t|
47
- t.spec_opts << '--options' << 'spec/spec.opts' if File.exists?('spec/spec.opts')
48
- t.spec_files = Pathname.glob((ROOT + 'spec/**/*_spec.rb').to_s)
19
+ PROJECT_NAME = 'datamapper'
20
+ PROJECT_URL = "http://github.com/sam/dm-more/tree/master/#{GEM_NAME}"
21
+ PROJECT_DESCRIPTION = PROJECT_SUMMARY = 'DataMapper plugin for magical timestamps'
49
22
 
50
- begin
51
- t.rcov = ENV.has_key?('NO_RCOV') ? ENV['NO_RCOV'] != 'true' : true
52
- t.rcov_opts << '--exclude' << 'spec'
53
- t.rcov_opts << '--text-summary'
54
- t.rcov_opts << '--sort' << 'coverage' << '--sort-reverse'
55
- rescue Exception
56
- # rcov not installed
57
- end
23
+ [ ROOT, ROOT.parent ].each do |dir|
24
+ Pathname.glob(dir.join('tasks/**/*.rb').to_s).each { |f| require f }
58
25
  end
data/TODO CHANGED
@@ -1,8 +0,0 @@
1
- TODO
2
- ====
3
-
4
-
5
-
6
- ---
7
- TODO tickets may also be found in the DataMapper Issue Tracker:
8
- http://wm.lighthouseapp.com/projects/4819-datamapper/overview
@@ -1,57 +1,56 @@
1
1
  require 'rubygems'
2
2
 
3
- gem 'dm-core', '~>0.9.7'
3
+ gem 'dm-core', '~>0.9.8'
4
4
  require 'dm-core'
5
5
 
6
6
  module DataMapper
7
7
  module Timestamp
8
+ Resource.append_inclusions self
9
+
8
10
  TIMESTAMP_PROPERTIES = {
9
- :updated_at => lambda { |r| r.updated_at = DateTime.now },
10
- :updated_on => lambda { |r| r.updated_on = Date.today },
11
- :created_at => lambda { |r| r.created_at = DateTime.now if r.new_record? && r.created_at.nil? },
12
- :created_on => lambda { |r| r.created_on = Date.today if r.new_record? && r.created_on.nil?},
13
- }
11
+ :updated_at => [ DateTime, lambda { |r, p| DateTime.now } ],
12
+ :updated_on => [ Date, lambda { |r, p| Date.today } ],
13
+ :created_at => [ DateTime, lambda { |r, p| r.created_at || (DateTime.now if r.new_record?) } ],
14
+ :created_on => [ Date, lambda { |r, p| r.created_on || (Date.today if r.new_record?) } ],
15
+ }.freeze
14
16
 
15
17
  def self.included(model)
16
- model.before :save, :set_timestamp_properties
17
- model.send :extend, ClassMethods
18
+ model.before :create, :set_timestamps
19
+ model.before :update, :set_timestamps
20
+ model.extend ClassMethods
18
21
  end
19
22
 
20
23
  private
21
24
 
22
- def set_timestamp_properties
23
- if dirty?
24
- self.class.properties.slice(*TIMESTAMP_PROPERTIES.keys).compact.each do |property|
25
- TIMESTAMP_PROPERTIES[property.name][self] unless attribute_dirty?(property.name)
25
+ def set_timestamps
26
+ return unless dirty?
27
+ TIMESTAMP_PROPERTIES.each do |name,(_type,proc)|
28
+ if model.properties.has_property?(name)
29
+ model.properties[name].set(self, proc.call(self, model.properties[name])) unless attribute_dirty?(name)
26
30
  end
27
31
  end
28
32
  end
29
33
 
30
34
  module ClassMethods
31
- def timestamps(*args)
32
- if args.empty? then raise ArgumentError, "You need to pass at least one argument." end
33
-
34
- args.each do |ts|
35
- case ts
36
- when :at
37
- property :created_at, DateTime
38
- property :updated_at, DateTime
39
- when :on
40
- property :created_on, Date
41
- property :updated_on, Date
42
- else
43
- unless TIMESTAMP_PROPERTIES.keys.include?(ts)
44
- raise InvalidTimestampName, "Invalid timestamp property '#{ts}'."
45
- end
46
-
47
- property ts, DateTime
35
+ def timestamps(*names)
36
+ raise ArgumentError, 'You need to pass at least one argument' if names.empty?
37
+
38
+ names.each do |name|
39
+ case name
40
+ when *TIMESTAMP_PROPERTIES.keys
41
+ type = TIMESTAMP_PROPERTIES[name].first
42
+ property name, type, :nullable => false
43
+ when :at
44
+ timestamps(:created_at, :updated_at)
45
+ when :on
46
+ timestamps(:created_on, :updated_on)
47
+ else
48
+ raise InvalidTimestampName, "Invalid timestamp property name '#{name}'"
48
49
  end
49
50
  end
50
51
  end
51
- end
52
+ end # module ClassMethods
52
53
 
53
54
  class InvalidTimestampName < RuntimeError; end
54
55
  end # module Timestamp
55
-
56
- Resource::append_inclusions Timestamp
57
- end
56
+ end # module DataMapper
@@ -1,5 +1,5 @@
1
1
  module DataMapper
2
2
  module Timestamps
3
- VERSION = "0.9.7"
3
+ VERSION = '0.9.8'
4
4
  end
5
5
  end
@@ -3,152 +3,175 @@ require Pathname(__FILE__).dirname.expand_path.parent + 'spec_helper'
3
3
 
4
4
  if HAS_SQLITE3 || HAS_MYSQL || HAS_POSTGRES
5
5
  describe 'DataMapper::Timestamp' do
6
- before :all do
7
- class GreenSmoothie
8
- include DataMapper::Resource
9
-
10
- property :id, Integer, :serial => true
11
- property :name, String
12
- property :created_at, DateTime
13
- property :created_on, Date
14
- property :updated_at, DateTime
15
- property :updated_on, Date
16
-
17
- auto_migrate!(:default)
6
+ describe "Timestamp (shared behavior)", :shared => true do
7
+ it "should not set the created_at/on fields if they're already set" do
8
+ repository(:default) do
9
+ green_smoothie = GreenSmoothie.new(:name => 'Banana')
10
+ time = (DateTime.now - 100)
11
+ green_smoothie.created_at = time
12
+ green_smoothie.created_on = time
13
+ green_smoothie.save
14
+ green_smoothie.created_at.should == time
15
+ green_smoothie.created_on.should == time
16
+ green_smoothie.created_at.should be_a_kind_of(DateTime)
17
+ green_smoothie.created_on.should be_a_kind_of(Date)
18
+ end
18
19
  end
19
- end
20
20
 
21
- after do
22
- repository(:default).adapter.execute('DELETE from green_smoothies');
23
- end
24
-
25
- it "should not set the created_at/on fields if they're already set" do
26
- repository(:default) do
27
- green_smoothie = GreenSmoothie.new(:name => 'Banana')
28
- time = (DateTime.now - 100)
29
- green_smoothie.created_at = time
30
- green_smoothie.created_on = time
31
- green_smoothie.save
32
- green_smoothie.created_at.should == time
33
- green_smoothie.created_on.should == time
34
- green_smoothie.created_at.should be_a_kind_of(DateTime)
35
- green_smoothie.created_on.should be_a_kind_of(Date)
21
+ it "should set the created_at/on fields on creation" do
22
+ repository(:default) do
23
+ green_smoothie = GreenSmoothie.new(:name => 'Banana')
24
+ green_smoothie.created_at.should be_nil
25
+ green_smoothie.created_on.should be_nil
26
+ green_smoothie.save
27
+ green_smoothie.created_at.should be_a_kind_of(DateTime)
28
+ green_smoothie.created_on.should be_a_kind_of(Date)
29
+ end
36
30
  end
37
- end
38
31
 
39
- it "should set the created_at/on fields on creation" do
40
- repository(:default) do
41
- green_smoothie = GreenSmoothie.new(:name => 'Banana')
42
- green_smoothie.created_at.should be_nil
43
- green_smoothie.created_on.should be_nil
44
- green_smoothie.save
45
- green_smoothie.created_at.should be_a_kind_of(DateTime)
46
- green_smoothie.created_on.should be_a_kind_of(Date)
32
+ it "should not alter the create_at/on fields on model updates" do
33
+ repository(:default) do
34
+ green_smoothie = GreenSmoothie.new(:id => 2, :name => 'Berry')
35
+ green_smoothie.created_at.should be_nil
36
+ green_smoothie.created_on.should be_nil
37
+ green_smoothie.save
38
+ original_created_at = green_smoothie.created_at
39
+ original_created_on = green_smoothie.created_on
40
+ green_smoothie.name = 'Strawberry'
41
+ green_smoothie.save
42
+ green_smoothie.created_at.should eql(original_created_at)
43
+ green_smoothie.created_on.should eql(original_created_on)
44
+ end
47
45
  end
48
- end
49
46
 
50
- it "should not alter the create_at/on fields on model updates" do
51
- repository(:default) do
52
- green_smoothie = GreenSmoothie.new(:id => 2, :name => 'Berry')
53
- green_smoothie.created_at.should be_nil
54
- green_smoothie.created_on.should be_nil
55
- green_smoothie.save
56
- original_created_at = green_smoothie.created_at
57
- original_created_on = green_smoothie.created_on
58
- green_smoothie.name = 'Strawberry'
59
- green_smoothie.save
60
- green_smoothie.created_at.should eql(original_created_at)
61
- green_smoothie.created_on.should eql(original_created_on)
47
+ it "should set the updated_at/on fields on creation and on update" do
48
+ repository(:default) do
49
+ green_smoothie = GreenSmoothie.new(:name => 'Mango')
50
+ green_smoothie.updated_at.should be_nil
51
+ green_smoothie.updated_on.should be_nil
52
+ green_smoothie.save
53
+ green_smoothie.updated_at.should be_a_kind_of(DateTime)
54
+ green_smoothie.updated_on.should be_a_kind_of(Date)
55
+ original_updated_at = green_smoothie.updated_at
56
+ original_updated_on = green_smoothie.updated_on
57
+ time_tomorrow = DateTime.now + 1
58
+ date_tomorrow = Date.today + 1
59
+ DateTime.stub!(:now).and_return { time_tomorrow }
60
+ Date.stub!(:today).and_return { date_tomorrow }
61
+ green_smoothie.name = 'Cranberry Mango'
62
+ green_smoothie.save
63
+ green_smoothie.updated_at.should_not eql(original_updated_at)
64
+ green_smoothie.updated_on.should_not eql(original_updated_on)
65
+ green_smoothie.updated_at.should eql(time_tomorrow)
66
+ green_smoothie.updated_on.should eql(date_tomorrow)
67
+ end
62
68
  end
63
- end
64
69
 
65
- it "should set the updated_at/on fields on creation and on update" do
66
- repository(:default) do
67
- green_smoothie = GreenSmoothie.new(:name => 'Mango')
68
- green_smoothie.updated_at.should be_nil
69
- green_smoothie.updated_on.should be_nil
70
- green_smoothie.save
71
- green_smoothie.updated_at.should be_a_kind_of(DateTime)
72
- green_smoothie.updated_on.should be_a_kind_of(Date)
73
- original_updated_at = green_smoothie.updated_at
74
- original_updated_on = green_smoothie.updated_on
75
- time_tomorrow = DateTime.now + 1
76
- date_tomorrow = Date.today + 1
77
- DateTime.stub!(:now).and_return { time_tomorrow }
78
- Date.stub!(:today).and_return { date_tomorrow }
79
- green_smoothie.name = 'Cranberry Mango'
80
- green_smoothie.save
81
- green_smoothie.updated_at.should_not eql(original_updated_at)
82
- green_smoothie.updated_on.should_not eql(original_updated_on)
83
- green_smoothie.updated_at.should eql(time_tomorrow)
84
- green_smoothie.updated_on.should eql(date_tomorrow)
70
+ it "should only set the updated_at/on fields on dirty objects" do
71
+ repository(:default) do
72
+ green_smoothie = GreenSmoothie.new(:name => 'Mango')
73
+ green_smoothie.updated_at.should be_nil
74
+ green_smoothie.updated_on.should be_nil
75
+ green_smoothie.save
76
+ green_smoothie.updated_at.should be_a_kind_of(DateTime)
77
+ green_smoothie.updated_on.should be_a_kind_of(Date)
78
+ original_updated_at = green_smoothie.updated_at
79
+ original_updated_on = green_smoothie.updated_on
80
+ time_tomorrow = DateTime.now + 1
81
+ date_tomorrow = Date.today + 1
82
+ DateTime.stub!(:now).and_return { time_tomorrow }
83
+ Date.stub!(:today).and_return { date_tomorrow }
84
+ green_smoothie.save
85
+ green_smoothie.updated_at.should_not eql(time_tomorrow)
86
+ green_smoothie.updated_on.should_not eql(date_tomorrow)
87
+ green_smoothie.updated_at.should eql(original_updated_at)
88
+ green_smoothie.updated_on.should eql(original_updated_on)
89
+ end
85
90
  end
86
91
  end
87
92
 
88
- it "should only set the updated_at/on fields on dirty objects" do
89
- repository(:default) do
90
- green_smoothie = GreenSmoothie.new(:name => 'Mango')
91
- green_smoothie.updated_at.should be_nil
92
- green_smoothie.updated_on.should be_nil
93
- green_smoothie.save
94
- green_smoothie.updated_at.should be_a_kind_of(DateTime)
95
- green_smoothie.updated_on.should be_a_kind_of(Date)
96
- original_updated_at = green_smoothie.updated_at
97
- original_updated_on = green_smoothie.updated_on
98
- time_tomorrow = DateTime.now + 1
99
- date_tomorrow = Date.today + 1
100
- DateTime.stub!(:now).and_return { time_tomorrow }
101
- Date.stub!(:today).and_return { date_tomorrow }
102
- green_smoothie.save
103
- green_smoothie.updated_at.should_not eql(time_tomorrow)
104
- green_smoothie.updated_on.should_not eql(date_tomorrow)
105
- green_smoothie.updated_at.should eql(original_updated_at)
106
- green_smoothie.updated_on.should eql(original_updated_on)
93
+ describe "explicit property declaration" do
94
+ before do
95
+ Object.send(:remove_const, :GreenSmoothie) if defined?(GreenSmoothie)
96
+ class GreenSmoothie
97
+ include DataMapper::Resource
98
+
99
+ property :id, Integer, :serial => true
100
+ property :name, String
101
+ property :created_at, DateTime
102
+ property :created_on, Date
103
+ property :updated_at, DateTime
104
+ property :updated_on, Date
105
+
106
+ auto_migrate!(:default)
107
+ end
107
108
  end
109
+
110
+ it_should_behave_like "Timestamp (shared behavior)"
108
111
  end
109
112
 
110
- describe "inclusion" do
111
- before :each do
112
- @klass = Class.new do
113
- include DataMapper::Resource
113
+ describe "timestamps helper" do
114
+ describe "inclusion" do
115
+ before :each do
116
+ @klass = Class.new do
117
+ include DataMapper::Resource
118
+ end
114
119
  end
115
- end
116
120
 
117
- it "should provide #timestamps" do
118
- @klass.should respond_to(:timestamps)
119
- end
121
+ it "should provide #timestamps" do
122
+ @klass.should respond_to(:timestamps)
123
+ end
120
124
 
121
- it "should set the *at properties" do
122
- @klass.timestamps :at
125
+ it "should set the *at properties" do
126
+ @klass.timestamps :at
123
127
 
124
- @klass.properties.should have_property(:created_at)
125
- @klass.properties[:created_at].type.should == DateTime
126
- @klass.properties.should have_property(:updated_at)
127
- @klass.properties[:updated_at].type.should == DateTime
128
- end
128
+ @klass.properties.should have_property(:created_at)
129
+ @klass.properties[:created_at].type.should == DateTime
130
+ @klass.properties.should have_property(:updated_at)
131
+ @klass.properties[:updated_at].type.should == DateTime
132
+ end
129
133
 
130
- it "should set the *on properties" do
131
- @klass.timestamps :on
134
+ it "should set the *on properties" do
135
+ @klass.timestamps :on
132
136
 
133
- @klass.properties.should have_property(:created_on)
134
- @klass.properties[:created_on].type.should == Date
135
- @klass.properties.should have_property(:updated_on)
136
- @klass.properties[:updated_on].type.should == Date
137
- end
137
+ @klass.properties.should have_property(:created_on)
138
+ @klass.properties[:created_on].type.should == Date
139
+ @klass.properties.should have_property(:updated_on)
140
+ @klass.properties[:updated_on].type.should == Date
141
+ end
138
142
 
139
- it "should set multiple properties" do
140
- @klass.timestamps :created_at, :updated_on
143
+ it "should set multiple properties" do
144
+ @klass.timestamps :created_at, :updated_on
141
145
 
142
- @klass.properties.should have_property(:created_at)
143
- @klass.properties.should have_property(:updated_on)
144
- end
146
+ @klass.properties.should have_property(:created_at)
147
+ @klass.properties.should have_property(:updated_on)
148
+ end
145
149
 
146
- it "should fail on unknown property name" do
147
- lambda { @klass.timestamps :wowee }.should raise_error(DataMapper::Timestamp::InvalidTimestampName)
150
+ it "should fail on unknown property name" do
151
+ lambda { @klass.timestamps :wowee }.should raise_error(DataMapper::Timestamp::InvalidTimestampName)
152
+ end
153
+
154
+ it "should fail on empty arguments" do
155
+ lambda { @klass.timestamps }.should raise_error(ArgumentError)
156
+ end
148
157
  end
149
158
 
150
- it "should fail on empty arguments" do
151
- lambda { @klass.timestamps }.should raise_error(ArgumentError)
159
+ describe "behavior" do
160
+ before do
161
+ Object.send(:remove_const, :GreenSmoothie) if defined?(GreenSmoothie)
162
+ class GreenSmoothie
163
+ include DataMapper::Resource
164
+
165
+ property :id, Integer, :serial => true
166
+ property :name, String
167
+
168
+ timestamps :at, :on
169
+
170
+ auto_migrate!(:default)
171
+ end
172
+ end
173
+
174
+ it_should_behave_like "Timestamp (shared behavior)"
152
175
  end
153
176
  end
154
177
  end
@@ -1,2 +1 @@
1
- --format specdoc
2
1
  --colour
@@ -1,22 +1,20 @@
1
+ require 'pathname'
1
2
  require 'rubygems'
2
- gem 'rspec', '>=1.1.3'
3
+
4
+ gem 'rspec', '~>1.1.11'
3
5
  require 'spec'
4
- require 'pathname'
6
+
5
7
  require Pathname(__FILE__).dirname.parent.expand_path + 'lib/dm-timestamps'
6
8
 
7
9
  def load_driver(name, default_uri)
8
10
  return false if ENV['ADAPTER'] != name.to_s
9
11
 
10
- lib = "do_#{name}"
11
-
12
12
  begin
13
- gem lib, '~>0.9.7'
14
- require lib
15
13
  DataMapper.setup(name, ENV["#{name.to_s.upcase}_SPEC_URI"] || default_uri)
16
14
  DataMapper::Repository.adapters[:default] = DataMapper::Repository.adapters[name]
17
15
  true
18
- rescue Gem::LoadError => e
19
- warn "Could not load #{lib}: #{e}"
16
+ rescue LoadError => e
17
+ warn "Could not load do_#{name}: #{e}"
20
18
  false
21
19
  end
22
20
  end
@@ -0,0 +1,13 @@
1
+ def sudo_gem(cmd)
2
+ sh "#{SUDO} #{RUBY} -S gem #{cmd}", :verbose => false
3
+ end
4
+
5
+ desc "Install #{GEM_NAME} #{GEM_VERSION}"
6
+ task :install => [ :package ] do
7
+ sudo_gem "install --local pkg/#{GEM_NAME}-#{GEM_VERSION} --no-update-sources"
8
+ end
9
+
10
+ desc "Uninstall #{GEM_NAME} #{GEM_VERSION}"
11
+ task :uninstall => [ :clobber ] do
12
+ sudo_gem "uninstall #{GEM_NAME} -v#{GEM_VERSION} -Ix"
13
+ end
@@ -0,0 +1,25 @@
1
+ begin
2
+ gem 'rspec', '~>1.1.11'
3
+ require 'spec'
4
+ require 'spec/rake/spectask'
5
+
6
+ task :default => [ :spec ]
7
+
8
+ desc 'Run specifications'
9
+ Spec::Rake::SpecTask.new(:spec) do |t|
10
+ t.spec_opts << '--options' << 'spec/spec.opts' if File.exists?('spec/spec.opts')
11
+ t.spec_files = Pathname.glob((ROOT + 'spec/**/*_spec.rb').to_s)
12
+
13
+ begin
14
+ gem 'rcov', '~>0.8'
15
+ t.rcov = JRUBY ? false : (ENV.has_key?('NO_RCOV') ? ENV['NO_RCOV'] != 'true' : true)
16
+ t.rcov_opts << '--exclude' << 'spec'
17
+ t.rcov_opts << '--text-summary'
18
+ t.rcov_opts << '--sort' << 'coverage' << '--sort-reverse'
19
+ rescue LoadError
20
+ # rcov not installed
21
+ end
22
+ end
23
+ rescue LoadError
24
+ # rspec not installed
25
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dm-timestamps
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.7
4
+ version: 0.9.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Foy Savas
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-11-18 00:00:00 -08:00
12
+ date: 2008-12-07 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -18,23 +18,13 @@ dependencies:
18
18
  version_requirement:
19
19
  version_requirements: !ruby/object:Gem::Requirement
20
20
  requirements:
21
- - - "="
21
+ - - ~>
22
22
  - !ruby/object:Gem::Version
23
- version: 0.9.7
24
- version:
25
- - !ruby/object:Gem::Dependency
26
- name: hoe
27
- type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: 1.8.2
23
+ version: 0.9.8
34
24
  version:
35
25
  description: DataMapper plugin for magical timestamps
36
26
  email:
37
- - foysavas@gmail.com
27
+ - foysavas [a] gmail [d] com
38
28
  executables: []
39
29
 
40
30
  extensions: []
@@ -43,6 +33,7 @@ extra_rdoc_files:
43
33
  - README.txt
44
34
  - LICENSE
45
35
  - TODO
36
+ - History.txt
46
37
  files:
47
38
  - History.txt
48
39
  - LICENSE
@@ -55,6 +46,8 @@ files:
55
46
  - spec/integration/timestamps_spec.rb
56
47
  - spec/spec.opts
57
48
  - spec/spec_helper.rb
49
+ - tasks/install.rb
50
+ - tasks/spec.rb
58
51
  has_rdoc: true
59
52
  homepage: http://github.com/sam/dm-more/tree/master/dm-timestamps
60
53
  post_install_message: