ismasan-ar_publish_control 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -72,6 +72,13 @@ Adds published, unpublished and published_only(boolean) named_scopes to your mod
72
72
 
73
73
  # You can access the ones marked as "published" but with a publish date in the future
74
74
  @upcoming_post = Post.upcoming
75
+ @upcoming_post.first.upcoming? # => true
76
+
77
+ # Finally, you can fetch objects that have expired (ie. they have an unpublish_at date set in the past)
78
+ @expired_posts = Post.expired
79
+ @expired_posts.first.expired? # => true
80
+
81
+ All of these named_scopes can be chain with other finder conditions and paginated with will_paginate
75
82
 
76
83
  == REQUIREMENTS:
77
84
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{ar_publish_control}
5
- s.version = "0.0.3"
5
+ s.version = "0.0.4"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Ismael Celis"]
@@ -2,7 +2,7 @@ $:.unshift(File.dirname(__FILE__)) unless
2
2
  $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
3
 
4
4
  module ArPublishControl
5
- VERSION = '0.0.3'
5
+ VERSION = '0.0.4'
6
6
  # This is a gem version of http://github.com/avdgaag/acts_as_publishable ( a Rails plugin)
7
7
  # Thanks to Avdaag for his awesome, super readable code which I ripped off for this gem.
8
8
  #
@@ -94,6 +94,7 @@ module ArPublishControl
94
94
  named_scope :published, lambda{{:conditions => published_conditions}}
95
95
  named_scope :unpublished, lambda{{:conditions => unpublished_conditions}}
96
96
  named_scope :upcoming, lambda{{:conditions => upcoming_conditions}}
97
+ named_scope :expired, lambda {{:conditions => expired_conditions}}
97
98
 
98
99
  named_scope :published_only, lambda {|*args|
99
100
  bool = (args.first.nil? ? true : (args.first)) # nil = true by default
@@ -135,6 +136,11 @@ module ArPublishControl
135
136
  t = Time.now
136
137
  ["(#{table_name}.is_published = ? AND #{table_name}.publish_at > ?)",true,t]
137
138
  end
139
+
140
+ def expired_conditions
141
+ t = Time.now
142
+ ["(#{table_name}.unpublish_at IS NOT NULL AND #{table_name}.unpublish_at < ?)",t]
143
+ end
138
144
  end
139
145
 
140
146
  module InstanceMethods
@@ -170,6 +176,10 @@ module ArPublishControl
170
176
  (is_published? && publish_at > Time.now)
171
177
  end
172
178
 
179
+ def expired?
180
+ (!unpublish_at.nil? && unpublish_at < Time.now)
181
+ end
182
+
173
183
  # Indefinitely publish the current object right now
174
184
  def publish
175
185
  return if published?
@@ -144,3 +144,19 @@ describe Post, 'upcoming' do
144
144
  Post.upcoming.size.should == 2
145
145
  end
146
146
  end
147
+
148
+ describe Post, 'expired' do
149
+ before(:each) do
150
+ Post.destroy_all
151
+ @p1 = Post.create(:title => 'p1',:is_published => true,:publish_at => 2.weeks.ago) #published
152
+ @p2 = Post.create(:title => 'p2',:is_published => true,:publish_at => 2.weeks.ago,:unpublish_at => 1.day.ago)#expired
153
+ @p3 = Post.create(:title => 'p3',:is_published => false,:publish_at => 3.days.ago,:unpublish_at => 2.hours.ago)#unpublished and expired
154
+ end
155
+
156
+ it "should have expired" do
157
+ @p1.expired?.should be_false
158
+ @p2.expired?.should be_true
159
+ @p3.expired?.should be_true
160
+ Post.expired.size.should == 2
161
+ end
162
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ismasan-ar_publish_control
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ismael Celis