listable 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
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
- # gem "activesupport", ">= 2.3.5"
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
@@ -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.3
1
+ 0.1.4
@@ -38,13 +38,22 @@ module Listable
38
38
  end
39
39
  end
40
40
 
41
- class ActiveRecord::Base
42
- include Listable
43
- include Listable::Querying
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
+
@@ -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|
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "listable"
8
- s.version = "0.1.3"
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-01-30"
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.10"
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
 
@@ -0,0 +1,14 @@
1
+ sqlite:
2
+ adapter: sqlite3
3
+ database: listable.sqlite3
4
+
5
+ postgres:
6
+ adapter: postgresql
7
+ database: listable_test
8
+ encoding: unicode
9
+ host: localhost
10
+
11
+ mysql:
12
+ adapter: mysql2
13
+ database: listable_test
14
+ encoding: utf8
@@ -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"
@@ -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.")
@@ -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
@@ -1,7 +1,47 @@
1
1
  require 'helper'
2
2
 
3
3
  class TestListable < Test::Unit::TestCase
4
- should "probably rename this file and start testing for real" do
5
- flunk "hey buddy, you should probably rename this file and start testing for real"
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.3
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-01-30 00:00:00.000000000 Z
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: &2152705160 !ruby/object:Gem::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: *2152705160
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: &2152704300 !ruby/object:Gem::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: *2152704300
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: &2152702520 !ruby/object:Gem::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: *2152702520
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: &2152701680 !ruby/object:Gem::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: *2152701680
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: &2152700700 !ruby/object:Gem::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: *2152700700
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: -1337354255169009245
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.10
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