listable 0.1.3 → 0.1.4
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/Gemfile +6 -1
- data/Gemfile.lock +21 -0
- data/Rakefile +0 -8
- data/VERSION +1 -1
- data/lib/listable.rb +18 -9
- data/lib/listable/railtie.rb +0 -4
- data/lib/listable/view_manager.rb +5 -1
- data/listable.gemspec +24 -3
- data/test/database.yml +14 -0
- data/test/helper.rb +28 -0
- data/test/models.rb +49 -0
- data/test/schema.rb +23 -0
- data/test/test_listable.rb +42 -2
- metadata +138 -14
data/Gemfile
CHANGED
@@ -1,14 +1,19 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
# Add dependencies required to use your gem here.
|
3
3
|
# Example:
|
4
|
-
|
4
|
+
gem "activesupport", ">= 3.2"
|
5
|
+
gem "activerecord", ">= 3.2"
|
5
6
|
|
6
7
|
# Add dependencies to develop your gem here.
|
7
8
|
# Include everything needed to run rake, tests, features, etc.
|
8
9
|
group :development do
|
10
|
+
gem "test-unit", "~> 2.5.4"
|
9
11
|
gem "shoulda", ">= 0"
|
10
12
|
gem "rdoc", "~> 3.12"
|
11
13
|
gem "bundler", "~> 1.2.3"
|
12
14
|
gem "jeweler", "~> 1.8.4"
|
13
15
|
gem "simplecov", ">= 0"
|
16
|
+
gem "sqlite3"
|
17
|
+
gem "pg"
|
18
|
+
gem "mysql2"
|
14
19
|
end
|
data/Gemfile.lock
CHANGED
@@ -1,11 +1,21 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
+
activemodel (3.2.11)
|
5
|
+
activesupport (= 3.2.11)
|
6
|
+
builder (~> 3.0.0)
|
7
|
+
activerecord (3.2.11)
|
8
|
+
activemodel (= 3.2.11)
|
9
|
+
activesupport (= 3.2.11)
|
10
|
+
arel (~> 3.0.2)
|
11
|
+
tzinfo (~> 0.3.29)
|
4
12
|
activesupport (3.2.11)
|
5
13
|
i18n (~> 0.6)
|
6
14
|
multi_json (~> 1.0)
|
15
|
+
arel (3.0.2)
|
7
16
|
bourne (1.1.2)
|
8
17
|
mocha (= 0.10.5)
|
18
|
+
builder (3.0.4)
|
9
19
|
git (1.2.5)
|
10
20
|
i18n (0.6.1)
|
11
21
|
jeweler (1.8.4)
|
@@ -18,6 +28,8 @@ GEM
|
|
18
28
|
mocha (0.10.5)
|
19
29
|
metaclass (~> 0.0.1)
|
20
30
|
multi_json (1.5.0)
|
31
|
+
mysql2 (0.3.11)
|
32
|
+
pg (0.14.1)
|
21
33
|
rake (10.0.3)
|
22
34
|
rdoc (3.12)
|
23
35
|
json (~> 1.4)
|
@@ -32,13 +44,22 @@ GEM
|
|
32
44
|
multi_json (~> 1.0)
|
33
45
|
simplecov-html (~> 0.7.1)
|
34
46
|
simplecov-html (0.7.1)
|
47
|
+
sqlite3 (1.3.7)
|
48
|
+
test-unit (2.5.4)
|
49
|
+
tzinfo (0.3.35)
|
35
50
|
|
36
51
|
PLATFORMS
|
37
52
|
ruby
|
38
53
|
|
39
54
|
DEPENDENCIES
|
55
|
+
activerecord (>= 3.2)
|
56
|
+
activesupport (>= 3.2)
|
40
57
|
bundler (~> 1.2.3)
|
41
58
|
jeweler (~> 1.8.4)
|
59
|
+
mysql2
|
60
|
+
pg
|
42
61
|
rdoc (~> 3.12)
|
43
62
|
shoulda
|
44
63
|
simplecov
|
64
|
+
sqlite3
|
65
|
+
test-unit (~> 2.5.4)
|
data/Rakefile
CHANGED
@@ -34,14 +34,6 @@ Rake::TestTask.new(:test) do |test|
|
|
34
34
|
test.verbose = true
|
35
35
|
end
|
36
36
|
|
37
|
-
# require 'simplecov/rcovtask'
|
38
|
-
# Rcov::RcovTask.new do |test|
|
39
|
-
# test.libs << 'test'
|
40
|
-
# test.pattern = 'test/**/test_*.rb'
|
41
|
-
# test.verbose = true
|
42
|
-
# test.rcov_opts << '--exclude "gems/*"'
|
43
|
-
# end
|
44
|
-
|
45
37
|
task :default => :test
|
46
38
|
|
47
39
|
require 'rdoc/task'
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.4
|
data/lib/listable.rb
CHANGED
@@ -38,13 +38,22 @@ module Listable
|
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
|
-
|
42
|
-
|
43
|
-
|
41
|
+
ActiveRecord::Base.send :include, Listable
|
42
|
+
ActiveRecord::Base.send :include, Listable::Querying
|
43
|
+
|
44
|
+
ActiveRecord::ConnectionAdapters::AbstractAdapter.send :include, Listable::ConnectionAdapters::SchemaStatements
|
45
|
+
|
46
|
+
if defined?(Rails)
|
47
|
+
# Extending connection adapters when lazily loaded by Rails
|
48
|
+
require 'listable/railtie'
|
49
|
+
else
|
50
|
+
require 'active_record/connection_adapters/sqlite_adapter'
|
51
|
+
require 'active_record/connection_adapters/postgresql_adapter'
|
52
|
+
require 'active_record/connection_adapters/mysql2_adapter'
|
53
|
+
|
54
|
+
# Extending connection adapters
|
55
|
+
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.send(:include, Listable::ConnectionAdapters::PostgreSQLExtensions)
|
56
|
+
ActiveRecord::ConnectionAdapters::SQLiteAdapter.send(:include, Listable::ConnectionAdapters::SQLiteExtensions)
|
57
|
+
ActiveRecord::ConnectionAdapters::Mysql2Adapter.send(:include, Listable::ConnectionAdapters::MySQLExtensions)
|
44
58
|
end
|
45
|
-
|
46
|
-
class ActiveRecord::ConnectionAdapters::AbstractAdapter
|
47
|
-
include Listable::ConnectionAdapters::SchemaStatements
|
48
|
-
end
|
49
|
-
|
50
|
-
|
59
|
+
|
data/lib/listable/railtie.rb
CHANGED
@@ -11,10 +11,6 @@ module Listable
|
|
11
11
|
ActiveRecord::ConnectionAdapters::SQLiteAdapter.send(:include, Listable::ConnectionAdapters::SQLiteExtensions)
|
12
12
|
end
|
13
13
|
|
14
|
-
if ActiveRecord::ConnectionAdapters.const_defined?(:MysqlAdapter)
|
15
|
-
ActiveRecord::ConnectionAdapters::MysqlAdapter.send(:include, Listable::ConnectionAdapters::MySQLExtensions)
|
16
|
-
end
|
17
|
-
|
18
14
|
if ActiveRecord::ConnectionAdapters.const_defined?(:Mysql2Adapter)
|
19
15
|
ActiveRecord::ConnectionAdapters::Mysql2Adapter.send(:include, Listable::ConnectionAdapters::MySQLExtensions)
|
20
16
|
end
|
@@ -1,6 +1,5 @@
|
|
1
1
|
module Listable
|
2
2
|
class ViewManager
|
3
|
-
cattr_reader :listables
|
4
3
|
|
5
4
|
class << self
|
6
5
|
def prefixed_view_name(name)
|
@@ -11,6 +10,10 @@ module Listable
|
|
11
10
|
'lstble_'
|
12
11
|
end
|
13
12
|
|
13
|
+
def listables
|
14
|
+
@@listables
|
15
|
+
end
|
16
|
+
|
14
17
|
def add_listable(view_name, model_name, model_scope_name)
|
15
18
|
@@listables ||= {}
|
16
19
|
@@listables[view_name] ||= {}
|
@@ -22,6 +25,7 @@ module Listable
|
|
22
25
|
end
|
23
26
|
|
24
27
|
def create_views
|
28
|
+
return if listables.nil?
|
25
29
|
ActiveRecord::Base.transaction do
|
26
30
|
drop_views # First drop all listable views to get a fresh start
|
27
31
|
listables.each do |view_name, query_info|
|
data/listable.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "listable"
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Johannes Baldursson"]
|
12
|
-
s.date = "2013-
|
12
|
+
s.date = "2013-02-03"
|
13
13
|
s.description = "With listable you can consolidate fields from several models into one, backed up by a database view.\n It is perfect for e.g. a front page where you may want to display the most recent additions to your site in a joint list.\n By providing scopes for each model you wish to include in a view, Listable will automatically create the database view for you."
|
14
14
|
s.email = "johannes.baldursson@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -31,37 +31,58 @@ Gem::Specification.new do |s|
|
|
31
31
|
"lib/listable/view_manager.rb",
|
32
32
|
"lib/tasks/listable.rake",
|
33
33
|
"listable.gemspec",
|
34
|
+
"test/database.yml",
|
34
35
|
"test/helper.rb",
|
36
|
+
"test/models.rb",
|
37
|
+
"test/schema.rb",
|
35
38
|
"test/test_listable.rb"
|
36
39
|
]
|
37
40
|
s.homepage = "http://github.com/baldursson/listable"
|
38
41
|
s.licenses = ["MIT"]
|
39
42
|
s.require_paths = ["lib"]
|
40
|
-
s.rubygems_version = "1.8.
|
43
|
+
s.rubygems_version = "1.8.19"
|
41
44
|
s.summary = "Rails extension that makes it easy to list and query several models through a single view backed model."
|
42
45
|
|
43
46
|
if s.respond_to? :specification_version then
|
44
47
|
s.specification_version = 3
|
45
48
|
|
46
49
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
50
|
+
s.add_runtime_dependency(%q<activesupport>, [">= 3.2"])
|
51
|
+
s.add_runtime_dependency(%q<activerecord>, [">= 3.2"])
|
52
|
+
s.add_development_dependency(%q<test-unit>, ["~> 2.5.4"])
|
47
53
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
48
54
|
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
49
55
|
s.add_development_dependency(%q<bundler>, ["~> 1.2.3"])
|
50
56
|
s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
|
51
57
|
s.add_development_dependency(%q<simplecov>, [">= 0"])
|
58
|
+
s.add_development_dependency(%q<sqlite3>, [">= 0"])
|
59
|
+
s.add_development_dependency(%q<pg>, [">= 0"])
|
60
|
+
s.add_development_dependency(%q<mysql2>, [">= 0"])
|
52
61
|
else
|
62
|
+
s.add_dependency(%q<activesupport>, [">= 3.2"])
|
63
|
+
s.add_dependency(%q<activerecord>, [">= 3.2"])
|
64
|
+
s.add_dependency(%q<test-unit>, ["~> 2.5.4"])
|
53
65
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
54
66
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
55
67
|
s.add_dependency(%q<bundler>, ["~> 1.2.3"])
|
56
68
|
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
57
69
|
s.add_dependency(%q<simplecov>, [">= 0"])
|
70
|
+
s.add_dependency(%q<sqlite3>, [">= 0"])
|
71
|
+
s.add_dependency(%q<pg>, [">= 0"])
|
72
|
+
s.add_dependency(%q<mysql2>, [">= 0"])
|
58
73
|
end
|
59
74
|
else
|
75
|
+
s.add_dependency(%q<activesupport>, [">= 3.2"])
|
76
|
+
s.add_dependency(%q<activerecord>, [">= 3.2"])
|
77
|
+
s.add_dependency(%q<test-unit>, ["~> 2.5.4"])
|
60
78
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
61
79
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
62
80
|
s.add_dependency(%q<bundler>, ["~> 1.2.3"])
|
63
81
|
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
64
82
|
s.add_dependency(%q<simplecov>, [">= 0"])
|
83
|
+
s.add_dependency(%q<sqlite3>, [">= 0"])
|
84
|
+
s.add_dependency(%q<pg>, [">= 0"])
|
85
|
+
s.add_dependency(%q<mysql2>, [">= 0"])
|
65
86
|
end
|
66
87
|
end
|
67
88
|
|
data/test/database.yml
ADDED
data/test/helper.rb
CHANGED
@@ -1,5 +1,9 @@
|
|
1
|
+
require 'simplecov'
|
2
|
+
SimpleCov.start
|
3
|
+
|
1
4
|
require 'rubygems'
|
2
5
|
require 'bundler'
|
6
|
+
|
3
7
|
begin
|
4
8
|
Bundler.setup(:default, :development)
|
5
9
|
rescue Bundler::BundlerError => e
|
@@ -9,10 +13,34 @@ rescue Bundler::BundlerError => e
|
|
9
13
|
end
|
10
14
|
require 'test/unit'
|
11
15
|
require 'shoulda'
|
16
|
+
require 'active_record'
|
17
|
+
require 'active_support'
|
12
18
|
|
13
19
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
14
20
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
15
21
|
require 'listable'
|
16
22
|
|
23
|
+
|
17
24
|
class Test::Unit::TestCase
|
18
25
|
end
|
26
|
+
|
27
|
+
adapter = ENV["DB"] || "sqlite"
|
28
|
+
config = YAML::load_file(File.dirname(__FILE__) + "/database.yml")[adapter]
|
29
|
+
|
30
|
+
if ['postgres', 'mysql'].include? adapter
|
31
|
+
ActiveRecord::Base.establish_connection(config.merge('database' => nil))
|
32
|
+
ActiveRecord::Base.connection.create_database config['database']
|
33
|
+
ActiveRecord::Base.establish_connection(config)
|
34
|
+
end
|
35
|
+
|
36
|
+
ActiveRecord::Base.establish_connection(config)
|
37
|
+
|
38
|
+
Test::Unit.at_exit do
|
39
|
+
if ['postgres', 'mysql'].include? adapter
|
40
|
+
ActiveRecord::Base.establish_connection(config.merge('database' => nil))
|
41
|
+
ActiveRecord::Base.connection.drop_database config['database']
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
load File.dirname(__FILE__) + "/schema.rb"
|
46
|
+
load File.dirname(__FILE__) + "/models.rb"
|
data/test/models.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
class TopicalItems < ActiveRecord::Base
|
2
|
+
acts_as_listable_view
|
3
|
+
end
|
4
|
+
|
5
|
+
class Page < ActiveRecord::Base
|
6
|
+
listable_through :topical_items, :listables
|
7
|
+
scope :listables, select([:title, :body])
|
8
|
+
end
|
9
|
+
|
10
|
+
class Employee < ActiveRecord::Base
|
11
|
+
listable_through :topical_items, :listables
|
12
|
+
scope :listables, concat_select([:first_name, ' ', :last_name], :title).select(:biography)
|
13
|
+
end
|
14
|
+
|
15
|
+
class NewsArticle < ActiveRecord::Base
|
16
|
+
listable_through :topical_items, :listables
|
17
|
+
scope :listables, select_as(headline: 'title').select(:body)
|
18
|
+
end
|
19
|
+
|
20
|
+
# Seeding pages
|
21
|
+
Page.create(title: "I'm serious as a heart attack",
|
22
|
+
body: "Well, the way they make shows is, they make one show.
|
23
|
+
That show's called a pilot. Then they show that show to the people who make shows,
|
24
|
+
and on the strength of that one show they decide if they're going to make more shows.
|
25
|
+
Some pilots get picked and become television programs. Some don't, become nothing.
|
26
|
+
She starred in one of the ones that became nothing.")
|
27
|
+
|
28
|
+
Page.create(title: "Are you ready for the truth?",
|
29
|
+
body: "Look, just because I don't be givin' no man a foot massage don't make it right
|
30
|
+
for Marsellus to throw Antwone into a glass motherfuckin' house, fuckin' up
|
31
|
+
the way the nigger talks. Motherfucker do that shit to me, he better paralyze my ass,
|
32
|
+
'cause I'll kill the motherfucker, know what I'm sayin'?")
|
33
|
+
|
34
|
+
# Seeding employees
|
35
|
+
Employee.create(first_name: 'Johannes',
|
36
|
+
last_name: 'Baldursson',
|
37
|
+
biography: "Normally, both your asses would be dead as fucking fried chicken,
|
38
|
+
but you happen to pull this shit while I'm in a transitional period so
|
39
|
+
I don't wanna kill you, I wanna help you. But I can't give you this case,
|
40
|
+
it don't belong to me. Besides, I've already been through too much shit
|
41
|
+
this morning over this case to hand it over to your dumb ass.")
|
42
|
+
|
43
|
+
|
44
|
+
NewsArticle.create(headline: 'Is she dead, yes or no?',
|
45
|
+
body: "Do you see any Teletubbies in here? Do you see a slender plastic tag clipped
|
46
|
+
to my shirt with my name printed on it? Do you see a little Asian child with
|
47
|
+
a blank expression on his face sitting outside on a mechanical helicopter that
|
48
|
+
shakes when you put quarters in it? No? Well, that's what you see at a toy store.
|
49
|
+
And you must think you're in a toy store, because you're here shopping for an infant named Jeb.")
|
data/test/schema.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
ActiveRecord::Schema.define do
|
2
|
+
self.verbose = false
|
3
|
+
|
4
|
+
create_table :pages, :force => true do |t|
|
5
|
+
t.string :title
|
6
|
+
t.text :body
|
7
|
+
t.timestamps
|
8
|
+
end
|
9
|
+
|
10
|
+
create_table :employees, :force => true do |t|
|
11
|
+
t.string :first_name
|
12
|
+
t.string :last_name
|
13
|
+
t.text :biography
|
14
|
+
t.timestamps
|
15
|
+
end
|
16
|
+
|
17
|
+
create_table :news_articles, :force => true do |t|
|
18
|
+
t.string :headline
|
19
|
+
t.text :body
|
20
|
+
t.timestamps
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
data/test/test_listable.rb
CHANGED
@@ -1,7 +1,47 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
3
|
class TestListable < Test::Unit::TestCase
|
4
|
-
|
5
|
-
|
4
|
+
|
5
|
+
context "a listable view model" do
|
6
|
+
def setup
|
7
|
+
Listable::ViewManager.create_views
|
8
|
+
end
|
9
|
+
|
10
|
+
def topical_items_count
|
11
|
+
TopicalItems.count
|
12
|
+
end
|
13
|
+
|
14
|
+
def listable_items_count
|
15
|
+
Page.listables.count + Employee.listables.count + NewsArticle.listables.count
|
16
|
+
end
|
17
|
+
|
18
|
+
should "have as many rows as the models it lists" do
|
19
|
+
assert_equal listable_items_count, topical_items_count
|
20
|
+
end
|
21
|
+
|
22
|
+
should "raise a read only exception when trying to write to" do
|
23
|
+
assert_raise(ActiveRecord::ReadOnlyRecord) do
|
24
|
+
TopicalItems.first.update_attribute(:title, 'New title')
|
25
|
+
end
|
26
|
+
end
|
6
27
|
end
|
28
|
+
|
29
|
+
context "the query method concat_select" do
|
30
|
+
should "select arguments as a concatenated string" do
|
31
|
+
concatenated_name = Employee.concat_select([:first_name, ' ', :last_name], :full_name).first.full_name
|
32
|
+
assert_equal 'Johannes Baldursson', concatenated_name
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context "the query method select_as" do
|
37
|
+
should "select fields as new names" do
|
38
|
+
renamed_selection = Employee.select_as(first_name: 'fname', last_name: 'lname').first
|
39
|
+
normal_selection = Employee.select([:first_name, :last_name]).first
|
40
|
+
renamed_values = [renamed_selection.fname, renamed_selection.lname]
|
41
|
+
normal_values = [normal_selection.first_name, normal_selection.last_name]
|
42
|
+
|
43
|
+
assert_equal normal_values, renamed_values
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
7
47
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: listable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,59 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-02-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: activesupport
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '3.2'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3.2'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: activerecord
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '3.2'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '3.2'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: test-unit
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 2.5.4
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 2.5.4
|
14
62
|
- !ruby/object:Gem::Dependency
|
15
63
|
name: shoulda
|
16
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
17
65
|
none: false
|
18
66
|
requirements:
|
19
67
|
- - ! '>='
|
@@ -21,10 +69,15 @@ dependencies:
|
|
21
69
|
version: '0'
|
22
70
|
type: :development
|
23
71
|
prerelease: false
|
24
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
25
78
|
- !ruby/object:Gem::Dependency
|
26
79
|
name: rdoc
|
27
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
28
81
|
none: false
|
29
82
|
requirements:
|
30
83
|
- - ~>
|
@@ -32,10 +85,15 @@ dependencies:
|
|
32
85
|
version: '3.12'
|
33
86
|
type: :development
|
34
87
|
prerelease: false
|
35
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '3.12'
|
36
94
|
- !ruby/object:Gem::Dependency
|
37
95
|
name: bundler
|
38
|
-
requirement:
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
39
97
|
none: false
|
40
98
|
requirements:
|
41
99
|
- - ~>
|
@@ -43,10 +101,15 @@ dependencies:
|
|
43
101
|
version: 1.2.3
|
44
102
|
type: :development
|
45
103
|
prerelease: false
|
46
|
-
version_requirements:
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 1.2.3
|
47
110
|
- !ruby/object:Gem::Dependency
|
48
111
|
name: jeweler
|
49
|
-
requirement:
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
50
113
|
none: false
|
51
114
|
requirements:
|
52
115
|
- - ~>
|
@@ -54,10 +117,31 @@ dependencies:
|
|
54
117
|
version: 1.8.4
|
55
118
|
type: :development
|
56
119
|
prerelease: false
|
57
|
-
version_requirements:
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ~>
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: 1.8.4
|
58
126
|
- !ruby/object:Gem::Dependency
|
59
127
|
name: simplecov
|
60
|
-
requirement:
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
- !ruby/object:Gem::Dependency
|
143
|
+
name: sqlite3
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
61
145
|
none: false
|
62
146
|
requirements:
|
63
147
|
- - ! '>='
|
@@ -65,7 +149,44 @@ dependencies:
|
|
65
149
|
version: '0'
|
66
150
|
type: :development
|
67
151
|
prerelease: false
|
68
|
-
version_requirements:
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
158
|
+
- !ruby/object:Gem::Dependency
|
159
|
+
name: pg
|
160
|
+
requirement: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
162
|
+
requirements:
|
163
|
+
- - ! '>='
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: '0'
|
166
|
+
type: :development
|
167
|
+
prerelease: false
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
170
|
+
requirements:
|
171
|
+
- - ! '>='
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
- !ruby/object:Gem::Dependency
|
175
|
+
name: mysql2
|
176
|
+
requirement: !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
178
|
+
requirements:
|
179
|
+
- - ! '>='
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '0'
|
182
|
+
type: :development
|
183
|
+
prerelease: false
|
184
|
+
version_requirements: !ruby/object:Gem::Requirement
|
185
|
+
none: false
|
186
|
+
requirements:
|
187
|
+
- - ! '>='
|
188
|
+
- !ruby/object:Gem::Version
|
189
|
+
version: '0'
|
69
190
|
description: ! "With listable you can consolidate fields from several models into
|
70
191
|
one, backed up by a database view.\n It is perfect for e.g.
|
71
192
|
a front page where you may want to display the most recent additions to your site
|
@@ -93,7 +214,10 @@ files:
|
|
93
214
|
- lib/listable/view_manager.rb
|
94
215
|
- lib/tasks/listable.rake
|
95
216
|
- listable.gemspec
|
217
|
+
- test/database.yml
|
96
218
|
- test/helper.rb
|
219
|
+
- test/models.rb
|
220
|
+
- test/schema.rb
|
97
221
|
- test/test_listable.rb
|
98
222
|
homepage: http://github.com/baldursson/listable
|
99
223
|
licenses:
|
@@ -110,7 +234,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
110
234
|
version: '0'
|
111
235
|
segments:
|
112
236
|
- 0
|
113
|
-
hash:
|
237
|
+
hash: 1761110371856318284
|
114
238
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
239
|
none: false
|
116
240
|
requirements:
|
@@ -119,7 +243,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
119
243
|
version: '0'
|
120
244
|
requirements: []
|
121
245
|
rubyforge_project:
|
122
|
-
rubygems_version: 1.8.
|
246
|
+
rubygems_version: 1.8.19
|
123
247
|
signing_key:
|
124
248
|
specification_version: 3
|
125
249
|
summary: Rails extension that makes it easy to list and query several models through
|