minty_scopes 0.9.1
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/.gitmodules +3 -0
- data/README.mkdn +88 -0
- data/Rakefile +32 -0
- data/VERSION +1 -0
- data/init.rb +1 -0
- data/lib/minty_scopes/associations.rb +28 -0
- data/lib/minty_scopes/except.rb +17 -0
- data/lib/minty_scopes/order.rb +23 -0
- data/lib/minty_scopes/timestamps.rb +23 -0
- data/lib/minty_scopes.rb +13 -0
- data/minty_scopes.gemspec +65 -0
- data/test/test_helper.rb +19 -0
- data/test/units/associations_test.rb +39 -0
- data/test/units/except_test.rb +33 -0
- data/test/units/order_test.rb +49 -0
- data/test/units/timestamps_test.rb +32 -0
- metadata +98 -0
data/.gitmodules
ADDED
data/README.mkdn
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
What
|
2
|
+
====
|
3
|
+
|
4
|
+
A collection of handy `named_scope`s that you should be able to use in just about any model.
|
5
|
+
|
6
|
+
Why
|
7
|
+
===
|
8
|
+
|
9
|
+
Named scopes turn ugly finders into pretty ones.
|
10
|
+
|
11
|
+
Howto
|
12
|
+
=====
|
13
|
+
|
14
|
+
Specify the gem dependency in your `environment.rb`:
|
15
|
+
|
16
|
+
config.gem 'mintdigital-minty_scopes',
|
17
|
+
:lib => 'minty_scopes',
|
18
|
+
:source => "http://gems.github.com"
|
19
|
+
|
20
|
+
Then install and unpack the gem:
|
21
|
+
|
22
|
+
rake gems:install
|
23
|
+
rake gems:unpack
|
24
|
+
|
25
|
+
In any model, you can get the scopes by extending the module:
|
26
|
+
|
27
|
+
class Post < ActiveRecord::Base
|
28
|
+
extend MintyScopes
|
29
|
+
end
|
30
|
+
|
31
|
+
Scopes
|
32
|
+
======
|
33
|
+
|
34
|
+
Scopes are grouped into modules by functionality. If you only want some scopes, feel free to extend only the modules you want: `extend MintyScopes::Timestamps`
|
35
|
+
|
36
|
+
### Associations ###
|
37
|
+
|
38
|
+
with(:comments) #=> :joins => :comments, :group => 'posts.id' (only posts with comments)
|
39
|
+
without(:comments) #=> :joins => 'LEFT JOIN comments ON posts.id = comments.post_id',
|
40
|
+
# :conditions => {'comments.id' => nil}
|
41
|
+
including(:comments) #=> :include => [:comments]
|
42
|
+
|
43
|
+
### Except ###
|
44
|
+
|
45
|
+
except(post) #=> [ 'posts.id NOT IN (?)', post ]
|
46
|
+
except(post, post) #=> [ 'posts.id NOT IN (?)', [post, post] ]
|
47
|
+
except(post_collection) #=> [ 'posts.id NOT IN (?)', post_collection ]
|
48
|
+
|
49
|
+
### Order ###
|
50
|
+
|
51
|
+
newest #=> { :order => 'created_at DESC', :limit => per_page || limit }
|
52
|
+
newest(20) #=> { :order => 'created_at DESC', :limit => 20 }
|
53
|
+
oldest #=> { :order => 'created_at ASC', :limit => per_page || limit }
|
54
|
+
oldest(20) #=> { :order => 'created_at ASC', :limit => 20 }
|
55
|
+
|
56
|
+
### Timestamps ###
|
57
|
+
|
58
|
+
created_on(date) #=> :created_at => (date.beginning_of_day..date.end_of_day)
|
59
|
+
modified_on(date) #=> :modified_at => (date.beginning_of_day..date.end_of_day)
|
60
|
+
|
61
|
+
Thanks
|
62
|
+
======
|
63
|
+
|
64
|
+
Big thanks to Ryan Daigle for his [utility_scopes](http://github.com/yfactorial/utility_scope) plugin, the inspiration for this project.
|
65
|
+
|
66
|
+
License
|
67
|
+
=======
|
68
|
+
The MIT License
|
69
|
+
|
70
|
+
Copyright (c) 2009 Dean Strelau, Mint Digital
|
71
|
+
|
72
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
73
|
+
of this software and associated documentation files (the "Software"), to deal
|
74
|
+
in the Software without restriction, including without limitation the rights
|
75
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
76
|
+
copies of the Software, and to permit persons to whom the Software is
|
77
|
+
furnished to do so, subject to the following conditions:
|
78
|
+
|
79
|
+
The above copyright notice and this permission notice shall be included in
|
80
|
+
all copies or substantial portions of the Software.
|
81
|
+
|
82
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
83
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
84
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
85
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
86
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
87
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
88
|
+
THE SOFTWARE.
|
data/Rakefile
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rake/gempackagetask'
|
4
|
+
|
5
|
+
desc 'Default: Run Tests'
|
6
|
+
task :default => :test
|
7
|
+
|
8
|
+
Rake::TestTask.new(:test) do |test|
|
9
|
+
test.libs << 'lib' << 'test'
|
10
|
+
test.pattern = 'test/**/*_test.rb'
|
11
|
+
test.verbose = true
|
12
|
+
end
|
13
|
+
|
14
|
+
begin
|
15
|
+
require 'jeweler'
|
16
|
+
Jeweler::Tasks.new do |gem|
|
17
|
+
gem.name = "minty_scopes"
|
18
|
+
gem.summary = %Q{Useful, reusable named_scopes for ActiveRecord.}
|
19
|
+
gem.email = "philnash@gmail.com"
|
20
|
+
gem.homepage = "https://github.com/mintdigital/minty_scopes"
|
21
|
+
gem.authors = ["Dean Strelau", "Mint Digital"]
|
22
|
+
gem.extra_rdoc_files = ["README.mkdn", 'Rakefile']
|
23
|
+
gem.has_rdoc = false
|
24
|
+
gem.rdoc_options = ["--line-numbers", "--inline-source","--main", "README.txt"]
|
25
|
+
gem.add_dependency "activerecord", ">= 2.1.0"
|
26
|
+
gem.add_dependency "activesupport", ">= 2.1.0"
|
27
|
+
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
28
|
+
end
|
29
|
+
Jeweler::GemcutterTasks.new
|
30
|
+
rescue LoadError
|
31
|
+
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
32
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.9.1
|
data/init.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'minty_scopes'
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module MintyScopes
|
2
|
+
module Associations
|
3
|
+
|
4
|
+
def self.extended(within)
|
5
|
+
within.class_eval do
|
6
|
+
# Only show items that have at least one of the associated items
|
7
|
+
# Meant for has_many associations
|
8
|
+
# Post.with(:comments)
|
9
|
+
named_scope :with, lambda { |assoc|
|
10
|
+
raise "The 'with' named_scope expects a non-nil argument." if assoc.nil?
|
11
|
+
{ :joins => assoc.to_sym, :group => "#{quoted_table_name}.id" }
|
12
|
+
}
|
13
|
+
|
14
|
+
named_scope :without, lambda {|assoc|
|
15
|
+
raise "The 'without' named_scope expects a non-nil argument." if assoc.nil?
|
16
|
+
{ :joins => "LEFT JOIN #{assoc.to_s} "+
|
17
|
+
"ON #{quoted_table_name}.id = #{assoc.to_s}.#{quoted_table_name.singularize}_id",
|
18
|
+
:conditions => {"#{assoc}.id" => nil} }
|
19
|
+
}
|
20
|
+
named_scope :including, lambda {|*assocs|
|
21
|
+
{ :include => assocs.flatten }
|
22
|
+
}
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module MintyScopes
|
2
|
+
module Except
|
3
|
+
|
4
|
+
def self.extended(within)
|
5
|
+
within.class_eval do
|
6
|
+
# Allow easy rejection of items.
|
7
|
+
# Can take an a single id or ActiveRecord object, or an array of them
|
8
|
+
named_scope :except, lambda { |*args|
|
9
|
+
args.flatten!
|
10
|
+
raise "The 'except' named_scope expects no nil values." unless args.all?
|
11
|
+
{ :conditions => ["#{quoted_table_name}.#{primary_key} NOT IN (?)", args] }
|
12
|
+
}
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module MintyScopes
|
2
|
+
module Order
|
3
|
+
|
4
|
+
def self.extended(within)
|
5
|
+
within.class_eval do
|
6
|
+
# Get only the newest items. Limit by given parameter.
|
7
|
+
# Default to per_page if will_paginate is installed or 10
|
8
|
+
named_scope :newest, lambda { |*limit| {
|
9
|
+
:order => "#{quoted_table_name}.created_at DESC",
|
10
|
+
:limit => limit.empty? ? (per_page rescue 10) : limit.first
|
11
|
+
} }
|
12
|
+
|
13
|
+
# Get only the oldest items. Limit by given parameter.
|
14
|
+
# Default to per_page if will_paginate is installed or 10
|
15
|
+
named_scope :oldest, lambda { |*limit| {
|
16
|
+
:order => "#{quoted_table_name}.created_at ASC",
|
17
|
+
:limit => limit.empty? ? (per_page rescue 10) : limit.first
|
18
|
+
} }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module MintyScopes
|
2
|
+
module Timestamps
|
3
|
+
|
4
|
+
def self.extended(within)
|
5
|
+
within.class_eval do
|
6
|
+
# Allow filtering by day of created_on
|
7
|
+
# Argument must be a Date, Time, or DateTime
|
8
|
+
named_scope :created_on, lambda { |date|
|
9
|
+
raise "The 'created_on' named_scope expects a Date, Time or DateTime object" unless date.respond_to? :end_of_day
|
10
|
+
{ :conditions => {:created_at => (date.beginning_of_day..date.end_of_day)} }
|
11
|
+
}
|
12
|
+
|
13
|
+
# Allow filtering by day of modified_on
|
14
|
+
# Argument must be a Date, Time, or DateTime
|
15
|
+
named_scope :modified_on, lambda { |date|
|
16
|
+
raise "The 'modified_on' named_scope expects a Date, Time or DateTime object" unless date.respond_to? :end_of_day
|
17
|
+
{ :conditions => {:modified_on => (date.beginning_of_day..date.end_of_day)} }
|
18
|
+
}
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
data/lib/minty_scopes.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'minty_scopes/associations'
|
2
|
+
require 'minty_scopes/except'
|
3
|
+
require 'minty_scopes/order'
|
4
|
+
require 'minty_scopes/timestamps'
|
5
|
+
|
6
|
+
module MintyScopes
|
7
|
+
def self.extended(within)
|
8
|
+
within.extend MintyScopes::Associations
|
9
|
+
within.extend MintyScopes::Except
|
10
|
+
within.extend MintyScopes::Order
|
11
|
+
within.extend MintyScopes::Timestamps
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{minty_scopes}
|
8
|
+
s.version = "0.9.1"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Dean Strelau", "Mint Digital"]
|
12
|
+
s.date = %q{2009-12-04}
|
13
|
+
s.email = %q{philnash@gmail.com}
|
14
|
+
s.extra_rdoc_files = [
|
15
|
+
"README.mkdn",
|
16
|
+
"Rakefile"
|
17
|
+
]
|
18
|
+
s.files = [
|
19
|
+
".gitmodules",
|
20
|
+
"README.mkdn",
|
21
|
+
"Rakefile",
|
22
|
+
"VERSION",
|
23
|
+
"init.rb",
|
24
|
+
"lib/minty_scopes.rb",
|
25
|
+
"lib/minty_scopes/associations.rb",
|
26
|
+
"lib/minty_scopes/except.rb",
|
27
|
+
"lib/minty_scopes/order.rb",
|
28
|
+
"lib/minty_scopes/timestamps.rb",
|
29
|
+
"minty_scopes.gemspec",
|
30
|
+
"test/test_helper.rb",
|
31
|
+
"test/units/associations_test.rb",
|
32
|
+
"test/units/except_test.rb",
|
33
|
+
"test/units/order_test.rb",
|
34
|
+
"test/units/timestamps_test.rb"
|
35
|
+
]
|
36
|
+
s.homepage = %q{https://github.com/mintdigital/minty_scopes}
|
37
|
+
s.rdoc_options = ["--line-numbers", "--inline-source", "--main", "README.txt"]
|
38
|
+
s.require_paths = ["lib"]
|
39
|
+
s.rubygems_version = %q{1.3.5}
|
40
|
+
s.summary = %q{Useful, reusable named_scopes for ActiveRecord.}
|
41
|
+
s.test_files = [
|
42
|
+
"test/test_helper.rb",
|
43
|
+
"test/units/associations_test.rb",
|
44
|
+
"test/units/except_test.rb",
|
45
|
+
"test/units/order_test.rb",
|
46
|
+
"test/units/timestamps_test.rb"
|
47
|
+
]
|
48
|
+
|
49
|
+
if s.respond_to? :specification_version then
|
50
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
51
|
+
s.specification_version = 3
|
52
|
+
|
53
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
54
|
+
s.add_runtime_dependency(%q<activerecord>, [">= 2.1.0"])
|
55
|
+
s.add_runtime_dependency(%q<activesupport>, [">= 2.1.0"])
|
56
|
+
else
|
57
|
+
s.add_dependency(%q<activerecord>, [">= 2.1.0"])
|
58
|
+
s.add_dependency(%q<activesupport>, [">= 2.1.0"])
|
59
|
+
end
|
60
|
+
else
|
61
|
+
s.add_dependency(%q<activerecord>, [">= 2.1.0"])
|
62
|
+
s.add_dependency(%q<activesupport>, [">= 2.1.0"])
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
2
|
+
require 'minty_scopes'
|
3
|
+
|
4
|
+
require 'test/unit'
|
5
|
+
require 'rubygems'
|
6
|
+
require 'shoulda'
|
7
|
+
require 'active_record'
|
8
|
+
require 'active_support'
|
9
|
+
|
10
|
+
class Post < ActiveRecord::Base
|
11
|
+
def self.quoted_table_name; 'posts'; end
|
12
|
+
def self.primary_key; 'id'; end
|
13
|
+
extend MintyScopes
|
14
|
+
end
|
15
|
+
|
16
|
+
class PaginatedPost < Post
|
17
|
+
def self.per_page; 30; end
|
18
|
+
extend MintyScopes
|
19
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', 'test_helper')
|
2
|
+
|
3
|
+
class AssociationsTest < Test::Unit::TestCase # :nodoc:
|
4
|
+
|
5
|
+
context "with" do
|
6
|
+
should "complain if passed nil" do
|
7
|
+
assert_raise(RuntimeError) { Post.with(nil).proxy_options }
|
8
|
+
end
|
9
|
+
|
10
|
+
should "return all objects with associated items" do
|
11
|
+
assert_equal( { :joins => :comments, :group => 'posts.id' },
|
12
|
+
Post.with(:comments).proxy_options )
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context "without" do
|
17
|
+
should "complain if passed nil" do
|
18
|
+
assert_raise(RuntimeError) { Post.with(nil).proxy_options }
|
19
|
+
end
|
20
|
+
|
21
|
+
should "return all objects without associated items" do
|
22
|
+
assert_equal( { :joins => "LEFT JOIN comments ON posts.id = comments.post_id",
|
23
|
+
:conditions => {"comments.id" => nil} },
|
24
|
+
Post.without(:comments).proxy_options )
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context "including" do
|
29
|
+
should "return objects with given include" do
|
30
|
+
assert_equal( { :include => [:comments] },
|
31
|
+
Post.including(:comments).proxy_options )
|
32
|
+
end
|
33
|
+
|
34
|
+
should "return objects with all of given includes" do
|
35
|
+
assert_equal( { :include => [:comments, {:author => :avator}] },
|
36
|
+
Post.including(:comments, {:author => :avator}).proxy_options )
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', 'test_helper')
|
2
|
+
|
3
|
+
class ExceptTest < Test::Unit::TestCase # :nodoc:
|
4
|
+
|
5
|
+
context "except" do
|
6
|
+
should "complain if passed nil" do
|
7
|
+
assert_raise(RuntimeError){ Post.except(nil).proxy_options }
|
8
|
+
end
|
9
|
+
|
10
|
+
should "complain if passed an array with nil" do
|
11
|
+
assert_raise(RuntimeError) { Post.except([99,nil,101]).proxy_options }
|
12
|
+
end
|
13
|
+
|
14
|
+
should "return all but the given object" do
|
15
|
+
item = 123
|
16
|
+
assert_equal( { :conditions => ["posts.id NOT IN (?)", [item]] },
|
17
|
+
Post.except(item).proxy_options )
|
18
|
+
end
|
19
|
+
|
20
|
+
should "return all but the items in the given list" do
|
21
|
+
list = [123, 456, 7]
|
22
|
+
assert_equal( { :conditions => ["posts.id NOT IN (?)", list] },
|
23
|
+
Post.except(list).proxy_options )
|
24
|
+
end
|
25
|
+
|
26
|
+
should "return all but the given items" do
|
27
|
+
maple, oak = 42, 24
|
28
|
+
assert_equal( { :conditions => ["posts.id NOT IN (?)", [maple, oak]] },
|
29
|
+
Post.except(maple, oak).proxy_options )
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', 'test_helper')
|
2
|
+
|
3
|
+
class OrderTest < Test::Unit::TestCase # :nodoc:
|
4
|
+
|
5
|
+
context "newest" do
|
6
|
+
should "return most recent items" do
|
7
|
+
assert Post.newest.proxy_options[:order] = 'posts.created_at DESC'
|
8
|
+
end
|
9
|
+
|
10
|
+
should "default to 10 items" do
|
11
|
+
assert_equal 10, Post.newest.proxy_options[:limit]
|
12
|
+
end
|
13
|
+
|
14
|
+
should "use the given limit" do
|
15
|
+
assert_equal 20, Post.newest(20).proxy_options[:limit]
|
16
|
+
end
|
17
|
+
|
18
|
+
should "default to per_page if it exists" do
|
19
|
+
assert_equal 30, PaginatedPost.newest.proxy_options[:limit]
|
20
|
+
end
|
21
|
+
|
22
|
+
should "use the given limit over per_page" do
|
23
|
+
assert_equal 15, PaginatedPost.newest(15).proxy_options[:limit]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context "oldest" do
|
28
|
+
should "return oldest items" do
|
29
|
+
assert Post.oldest.proxy_options[:order] = 'posts.created_at ASC'
|
30
|
+
end
|
31
|
+
|
32
|
+
should "default to 10 items" do
|
33
|
+
assert_equal 10, Post.oldest.proxy_options[:limit]
|
34
|
+
end
|
35
|
+
|
36
|
+
should "use the given limit" do
|
37
|
+
assert_equal 20, Post.oldest(20).proxy_options[:limit]
|
38
|
+
end
|
39
|
+
|
40
|
+
should "default to per_page if it exists" do
|
41
|
+
assert_equal 30, PaginatedPost.oldest.proxy_options[:limit]
|
42
|
+
end
|
43
|
+
|
44
|
+
should "use the given limit over per_page" do
|
45
|
+
assert_equal 15, PaginatedPost.oldest(15).proxy_options[:limit]
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', 'test_helper')
|
2
|
+
|
3
|
+
class TimestampsTest < Test::Unit::TestCase # :nodoc:
|
4
|
+
def setup
|
5
|
+
@today = Date.today
|
6
|
+
end
|
7
|
+
|
8
|
+
context "created_on" do
|
9
|
+
should "complain if passed a non date or time" do
|
10
|
+
assert_raise(RuntimeError){ Post.created_on(nil).proxy_options }
|
11
|
+
end
|
12
|
+
|
13
|
+
should "return all objects created on the given date" do
|
14
|
+
assert_equal({:conditions =>
|
15
|
+
{ :created_at => (@today.beginning_of_day..@today.end_of_day) }
|
16
|
+
}, Post.created_on(@today).proxy_options)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context "modified_on" do
|
21
|
+
should "complain if passed a non date or time" do
|
22
|
+
assert_raise(RuntimeError){ Post.modified_on(nil).proxy_options }
|
23
|
+
end
|
24
|
+
|
25
|
+
should "return all objects modified on the given date" do
|
26
|
+
assert_equal({:conditions =>
|
27
|
+
{ :modified_on => (@today.beginning_of_day..@today.end_of_day) }
|
28
|
+
}, Post.modified_on(@today).proxy_options)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
metadata
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: minty_scopes
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.9.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Dean Strelau
|
8
|
+
- Mint Digital
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2009-12-04 00:00:00 +00:00
|
14
|
+
default_executable:
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: activerecord
|
18
|
+
type: :runtime
|
19
|
+
version_requirement:
|
20
|
+
version_requirements: !ruby/object:Gem::Requirement
|
21
|
+
requirements:
|
22
|
+
- - ">="
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: 2.1.0
|
25
|
+
version:
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: activesupport
|
28
|
+
type: :runtime
|
29
|
+
version_requirement:
|
30
|
+
version_requirements: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 2.1.0
|
35
|
+
version:
|
36
|
+
description:
|
37
|
+
email: philnash@gmail.com
|
38
|
+
executables: []
|
39
|
+
|
40
|
+
extensions: []
|
41
|
+
|
42
|
+
extra_rdoc_files:
|
43
|
+
- README.mkdn
|
44
|
+
- Rakefile
|
45
|
+
files:
|
46
|
+
- .gitmodules
|
47
|
+
- README.mkdn
|
48
|
+
- Rakefile
|
49
|
+
- VERSION
|
50
|
+
- init.rb
|
51
|
+
- lib/minty_scopes.rb
|
52
|
+
- lib/minty_scopes/associations.rb
|
53
|
+
- lib/minty_scopes/except.rb
|
54
|
+
- lib/minty_scopes/order.rb
|
55
|
+
- lib/minty_scopes/timestamps.rb
|
56
|
+
- minty_scopes.gemspec
|
57
|
+
- test/test_helper.rb
|
58
|
+
- test/units/associations_test.rb
|
59
|
+
- test/units/except_test.rb
|
60
|
+
- test/units/order_test.rb
|
61
|
+
- test/units/timestamps_test.rb
|
62
|
+
has_rdoc: true
|
63
|
+
homepage: https://github.com/mintdigital/minty_scopes
|
64
|
+
licenses: []
|
65
|
+
|
66
|
+
post_install_message:
|
67
|
+
rdoc_options:
|
68
|
+
- --line-numbers
|
69
|
+
- --inline-source
|
70
|
+
- --main
|
71
|
+
- README.txt
|
72
|
+
require_paths:
|
73
|
+
- lib
|
74
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: "0"
|
79
|
+
version:
|
80
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: "0"
|
85
|
+
version:
|
86
|
+
requirements: []
|
87
|
+
|
88
|
+
rubyforge_project:
|
89
|
+
rubygems_version: 1.3.5
|
90
|
+
signing_key:
|
91
|
+
specification_version: 3
|
92
|
+
summary: Useful, reusable named_scopes for ActiveRecord.
|
93
|
+
test_files:
|
94
|
+
- test/test_helper.rb
|
95
|
+
- test/units/associations_test.rb
|
96
|
+
- test/units/except_test.rb
|
97
|
+
- test/units/order_test.rb
|
98
|
+
- test/units/timestamps_test.rb
|