acts_as_singleton 0.0.3 → 0.0.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/History.rdoc +7 -0
- data/README.rdoc +2 -2
- data/lib/acts_as_singleton.rb +8 -0
- data/test/acts_as_singleton_test.rb +18 -2
- metadata +17 -9
data/History.rdoc
CHANGED
data/README.rdoc
CHANGED
@@ -61,7 +61,7 @@ Configure:
|
|
61
61
|
|
62
62
|
And install:
|
63
63
|
|
64
|
-
% rake gems:install
|
64
|
+
% [sudo] rake gems:install
|
65
65
|
|
66
66
|
|
67
67
|
=== As a plugin
|
@@ -81,7 +81,7 @@ Or, as a submodule:
|
|
81
81
|
|
82
82
|
(The MIT License)
|
83
83
|
|
84
|
-
(c) 2009
|
84
|
+
(c) 2009-2010 Stephen Celis, stephen@stephencelis.com.
|
85
85
|
|
86
86
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
87
87
|
of this software and associated documentation files (the "Software"), to deal
|
data/lib/acts_as_singleton.rb
CHANGED
@@ -46,6 +46,14 @@ module ActiveRecord
|
|
46
46
|
def inspect
|
47
47
|
super.sub(/id: .+?, /) {} # Irrelevant.
|
48
48
|
end
|
49
|
+
|
50
|
+
def find(*args)
|
51
|
+
unless caller.first.include?("lib/active_record")
|
52
|
+
raise NoMethodError,
|
53
|
+
"private method `find' called for #{inspect}"
|
54
|
+
end
|
55
|
+
super # (:first) || create
|
56
|
+
end
|
49
57
|
end
|
50
58
|
|
51
59
|
def clone
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'test/unit'
|
2
|
-
require 'rubygems'
|
3
2
|
require 'active_record'
|
4
3
|
require "#{File.dirname(__FILE__)}/../init"
|
5
4
|
require 'active_support'
|
@@ -14,6 +13,10 @@ def setup_db
|
|
14
13
|
t.text :welcome_message
|
15
14
|
t.timestamp :published_at, :expired_at
|
16
15
|
end
|
16
|
+
|
17
|
+
create_table :cottages do |t|
|
18
|
+
t.belongs_to :home_away_from_home, :polymorphic => true
|
19
|
+
end
|
17
20
|
end
|
18
21
|
end
|
19
22
|
|
@@ -26,11 +29,17 @@ end
|
|
26
29
|
setup_db
|
27
30
|
class HomepageSettings < ActiveRecord::Base
|
28
31
|
acts_as_singleton
|
32
|
+
has_many :cottages, :as => :home_away_from_home
|
29
33
|
end
|
30
34
|
|
31
35
|
class LoggedInSettings < HomepageSettings
|
32
36
|
end
|
33
37
|
|
38
|
+
class Cottage < ActiveRecord::Base
|
39
|
+
belongs_to :home_away_from_home, :polymorphic => true
|
40
|
+
validates_associated :home_away_from_home
|
41
|
+
end
|
42
|
+
|
34
43
|
class ActsAsSingletonTest < ActiveSupport::TestCase
|
35
44
|
setup do
|
36
45
|
setup_db
|
@@ -38,6 +47,10 @@ class ActsAsSingletonTest < ActiveSupport::TestCase
|
|
38
47
|
|
39
48
|
teardown do
|
40
49
|
teardown_db
|
50
|
+
|
51
|
+
HomepageSettings.instance_eval do
|
52
|
+
remove_instance_variable :@instance if defined? @instance
|
53
|
+
end
|
41
54
|
end
|
42
55
|
|
43
56
|
test "should be provocative" do
|
@@ -78,7 +91,6 @@ class ActsAsSingletonTest < ActiveSupport::TestCase
|
|
78
91
|
end
|
79
92
|
|
80
93
|
test "should honor STI" do
|
81
|
-
ActiveRecord::Base.logger = STDOUT
|
82
94
|
ActiveRecord::Base.clear_active_connections!
|
83
95
|
HomepageSettings.instance # Fetch parent.
|
84
96
|
LoggedInSettings.instance # Fetch child.
|
@@ -86,4 +98,8 @@ class ActsAsSingletonTest < ActiveSupport::TestCase
|
|
86
98
|
LoggedInSettings.instance # Fetch again.
|
87
99
|
end
|
88
100
|
end
|
101
|
+
|
102
|
+
test "should honor polymorphism" do
|
103
|
+
HomepageSettings.instance.cottages.create
|
104
|
+
end
|
89
105
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_singleton
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen Celis
|
@@ -9,13 +9,21 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-01-21 00:00:00 -06:00
|
13
13
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: activerecord
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
version:
|
25
|
+
description: "It just makes sense to store mutable, site-wide, admin-level settings in the database. Right? A key-value table may be more flexible, but maybe we don't want to be flexible! If you truly want that flexibility: http://github.com/stephencelis/kvc"
|
26
|
+
email: stephen@stephencelis.com
|
19
27
|
executables: []
|
20
28
|
|
21
29
|
extensions: []
|
@@ -56,10 +64,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
56
64
|
version:
|
57
65
|
requirements: []
|
58
66
|
|
59
|
-
rubyforge_project:
|
67
|
+
rubyforge_project:
|
60
68
|
rubygems_version: 1.3.5
|
61
69
|
signing_key:
|
62
70
|
specification_version: 3
|
63
|
-
summary: A lightweight singleton library for your Active Record models
|
71
|
+
summary: A lightweight singleton library for your Active Record models.
|
64
72
|
test_files: []
|
65
73
|
|