by_star 0.7.1 → 0.7.2
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/README.markdown +8 -1
- data/Rakefile +1 -0
- data/VERSION +1 -1
- data/by_star.gemspec +5 -4
- data/lib/by_star.rb +6 -0
- data/lib/neighbours.rb +6 -4
- data/lib/shared.rb +3 -2
- data/lib/vanilla.rb +1 -1
- data/spec/by_star_spec.rb +4 -0
- data/spec/fixtures/models.rb +1 -0
- data/spec/spec_helper.rb +4 -3
- metadata +3 -3
data/README.markdown
CHANGED
@@ -391,8 +391,14 @@ You can specify a field also:
|
|
391
391
|
If your database uses something other than `created_at` for storing a timestamp, you can specify the field option like this:
|
392
392
|
|
393
393
|
Post.by_month("January", :field => :something_else)
|
394
|
-
|
394
|
+
|
395
395
|
All methods support this extra option.
|
396
|
+
|
397
|
+
Or if you're doing it all the time on your model, then it's best to use `by_star_field` at the top of your model:
|
398
|
+
|
399
|
+
class Post < ActiveRecord::Base
|
400
|
+
by_star_field :something_else
|
401
|
+
end
|
396
402
|
|
397
403
|
## Ordering records
|
398
404
|
|
@@ -415,6 +421,7 @@ Unfortunately I forget who exactly prompted me to write the plugin, but I would
|
|
415
421
|
* Thomase Sinclair (anathematic)
|
416
422
|
* Sam Elliott (lenaryg)
|
417
423
|
* The dude(s) & gal(s) who created Chronic
|
424
|
+
* Erik Fonselius
|
418
425
|
|
419
426
|
## Suggestions?
|
420
427
|
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.7.
|
1
|
+
0.7.2
|
data/by_star.gemspec
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{by_star}
|
8
|
-
s.version = "0.7.
|
8
|
+
s.version = "0.7.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Ryan Bigg", "Mislav Marohni\304\207"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-05-05}
|
13
13
|
s.description = %q{ActiveRecord extension for easier date scopes and time ranges}
|
14
14
|
s.email = %q{radarlistener@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -69,3 +69,4 @@ Gem::Specification.new do |s|
|
|
69
69
|
s.add_dependency(%q<chronic>, ["~> 0.2.3"])
|
70
70
|
end
|
71
71
|
end
|
72
|
+
|
data/lib/by_star.rb
CHANGED
@@ -12,6 +12,12 @@ module ByStar
|
|
12
12
|
def self.included(base)
|
13
13
|
base.extend ClassMethods
|
14
14
|
base.send(:include, InstanceMethods)
|
15
|
+
base.class_eval do
|
16
|
+
def self.by_star_field(value=nil)
|
17
|
+
@by_star_field ||= value
|
18
|
+
@by_star_field || "#{self.table_name}.created_at"
|
19
|
+
end
|
20
|
+
end
|
15
21
|
end
|
16
22
|
|
17
23
|
module ClassMethods
|
data/lib/neighbours.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
module ByStar
|
2
2
|
module Neighbours
|
3
3
|
# Find the previous record to this.
|
4
|
-
def previous(field=
|
5
|
-
|
4
|
+
def previous(field=nil)
|
5
|
+
field = field || self.class.by_star_field
|
6
|
+
self.class.past(self.send(field.split(".").last)) { { :order => "#{field} DESC" }}.first
|
6
7
|
end
|
7
8
|
|
8
9
|
# Find the next record to this.
|
9
|
-
def next(field=
|
10
|
-
|
10
|
+
def next(field=nil)
|
11
|
+
field = field || self.class.by_star_field
|
12
|
+
self.class.future(self.send(field.split(".").last)) { { :order => "#{field} ASC" }}.first
|
11
13
|
end
|
12
14
|
end
|
13
15
|
end
|
data/lib/shared.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module Shared
|
2
|
-
def conditions_for_range(start_time, end_time, field=
|
3
|
-
field = table_name << '.' <<
|
2
|
+
def conditions_for_range(start_time, end_time, field=nil)
|
3
|
+
field = table_name << '.' << field.to_s if field
|
4
|
+
field ||= by_star_field
|
4
5
|
["#{field} >= ? AND #{field} <= ?", start_time.utc, end_time.utc]
|
5
6
|
end
|
6
7
|
|
data/lib/vanilla.rb
CHANGED
@@ -186,7 +186,7 @@ module ByStar
|
|
186
186
|
private
|
187
187
|
|
188
188
|
def by_direction(condition, time, options = {}, &block)
|
189
|
-
field = options.delete(:field) ||
|
189
|
+
field = options.delete(:field) || by_star_field
|
190
190
|
ensure_valid_options(options)
|
191
191
|
result = scoped({ :conditions => ["#{field} #{condition} ?", time.utc] }.merge(options))
|
192
192
|
result = result.scoped(block.call) if block_given?
|
data/spec/by_star_spec.rb
CHANGED
@@ -79,6 +79,10 @@ describe Post do
|
|
79
79
|
it "should be able to use an alternative field (symbol)" do
|
80
80
|
Event.by_year(nil, :field => :start_time).size.should eql(8)
|
81
81
|
end
|
82
|
+
|
83
|
+
it "should not have to specify the field when using by_star_field" do
|
84
|
+
Event.by_year.size.should eql(8)
|
85
|
+
end
|
82
86
|
|
83
87
|
it "should be able to use an alternative field (symbol) with directional searching" do
|
84
88
|
stub_time
|
data/spec/fixtures/models.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -16,15 +16,16 @@ zone = "UTC"
|
|
16
16
|
Time.zone = zone
|
17
17
|
ActiveRecord::Base.default_timezone = zone
|
18
18
|
|
19
|
+
# bootstraping the plugin through init.rb
|
20
|
+
# tests how it would load in a real application
|
21
|
+
load File.dirname(__FILE__) + "/../rails/init.rb"
|
22
|
+
|
19
23
|
YAML::load_file(File.dirname(__FILE__) + "/database.yml").each do |key, connection|
|
20
24
|
ActiveRecord::Base.establish_connection(connection)
|
21
25
|
load File.dirname(__FILE__) + "/fixtures/schema.rb"
|
22
26
|
load File.dirname(__FILE__) + "/fixtures/models.rb"
|
23
27
|
end
|
24
28
|
|
25
|
-
# bootstraping the plugin through init.rb
|
26
|
-
# tests how it would load in a real application
|
27
|
-
load File.dirname(__FILE__) + "/../rails/init.rb"
|
28
29
|
# Print the location of puts/p calls so you can find them later
|
29
30
|
# def puts str
|
30
31
|
# super caller.first if caller.first.index("shoulda.rb") == -1
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 7
|
8
|
-
-
|
9
|
-
version: 0.7.
|
8
|
+
- 2
|
9
|
+
version: 0.7.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Ryan Bigg
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-05-05 00:00:00 +10:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|