rails-ext 0.2.15 → 0.2.16
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/.git/index +0 -0
- data/.git/logs/HEAD +2 -0
- data/.git/logs/refs/heads/master +2 -0
- data/.git/logs/refs/remotes/origin/master +2 -0
- data/.git/objects/0d/b63ec7380f5132ca02be93c82f5295e33c10a9 +0 -0
- data/.git/objects/1b/83175202b0bdd9e8aac50c186533c1730aa220 +5 -0
- data/.git/objects/28/8e20f19c6662b1425e0a0797ae443f7eddcc4a +0 -0
- data/.git/objects/3e/f23cf310c5eebac930a19d36a0561dd362d3ee +0 -0
- data/.git/objects/47/28fde4426b545c73552bd5e0f79296a2b4be19 +0 -0
- data/.git/objects/52/5fcb274029ec36780b264166ea3d487d968997 +0 -0
- data/.git/objects/5c/95be85f2a2a984454fed4941a5ae00062634c5 +0 -0
- data/.git/objects/67/2396778b142df8b0b7ab212b7564039c48cf39 +0 -0
- data/.git/objects/73/667b7ae341d478513ba0bd6ec8af0aa1f62f0d +0 -0
- data/.git/objects/85/fd531f7352ad8f5ac030eed2204a662dd10a66 +0 -0
- data/.git/objects/8e/a47de58a27dd343b3ecd3dd5e0fab88e268a72 +0 -0
- data/.git/objects/a3/84715546f6a11dc7d56a32784dbdd5d7d92e8e +0 -0
- data/.git/objects/ab/6b7d6c5c5fee246e184a58448682b73b574d6b +0 -0
- data/.git/objects/b5/33c1c1bca9eae5b7e75c639fff8ec2c2f9fea1 +1 -0
- data/.git/objects/c5/208dea612df35fb84ceeda0649c103c32e2240 +2 -0
- data/.git/objects/c5/3b27c9641ea1c2aed192672b67ba8c4034b2ad +0 -0
- data/.git/objects/c6/9db405143490c407206cf8afd7537a49ea30b2 +0 -0
- data/.git/objects/ca/a9edd4de82aa3abec99946e92da9225efb83bc +0 -0
- data/.git/objects/e6/4d9b4d86a001e4f882a9842a8dd4368001c470 +0 -0
- data/.git/objects/f6/0fd8c2582e0f7688877f12f78ddb97a291046c +0 -0
- data/.git/objects/f7/b177b2c6b25dd886d23d6be87bcf802af9b513 +0 -0
- data/.git/objects/fa/854db299be87a6e6a65d906e7c2f9b122d9980 +0 -0
- data/.git/objects/fc/022a0a2ed82b2361292833c0cb90f996aae858 +0 -0
- data/.git/objects/fc/bf66b949d823f884d1aff2f3e192943cb195a2 +0 -0
- data/.git/refs/heads/master +1 -1
- data/.git/refs/remotes/origin/master +1 -1
- data/Rakefile +1 -1
- data/lib/mongo_mapper_ext/fixes.rb +9 -0
- data/lib/mongo_mapper_ext/migration.rb +109 -0
- data/lib/mongo_mapper_ext/mongo_mapper.rb +160 -0
- data/lib/mongo_mapper_ext/multitenant.rb +8 -0
- data/lib/mongo_mapper_ext/object_id.rb +12 -0
- data/lib/mongo_mapper_ext/spec_helper.rb +14 -0
- data/lib/mongo_mapper_ext/view_helpers.rb +20 -0
- data/lib/mongo_mapper_ext.rb +5 -0
- data/lib/rails_ext/config_files.rb +1 -1
- data/lib/rails_ext.rb +1 -1
- data/spec/mongo_mapper_migration_spec.rb +137 -0
- metadata +35 -4
- data/lib/rails_ext/mongo_mapper.rb +0 -48
- data/lib/rails_ext/mongo_mapper_spec_helper.rb +0 -8
data/.git/index
CHANGED
|
Binary file
|
data/.git/logs/HEAD
CHANGED
|
@@ -29,3 +29,5 @@ fec19d13244f6b439e234e1af2e2e6d1f886b2fb 5f483b0c41645f8882f549c1c6d0274bb592140
|
|
|
29
29
|
a0d595c78f280787659a2a4400f5d63578b53dce e7e790ff7c580a636d0de69956834c9b47ad771b alex <alex@amac.local> 1266000303 +0300 commit: upd
|
|
30
30
|
e7e790ff7c580a636d0de69956834c9b47ad771b a59472e8ecb5d06647adeec11ae931b956508191 alex <alex@amac.local> 1266630067 +0300 commit: upd
|
|
31
31
|
a59472e8ecb5d06647adeec11ae931b956508191 08f5dafa9123b7f8d1f22a796c4cba4a4063ad0d alex <alex@amac.local> 1266772739 +0300 commit: upd
|
|
32
|
+
08f5dafa9123b7f8d1f22a796c4cba4a4063ad0d b533c1c1bca9eae5b7e75c639fff8ec2c2f9fea1 alex <alex@amac.local> 1267048597 +0300 commit: refactor mongo connections and add multitenant migration with specs
|
|
33
|
+
b533c1c1bca9eae5b7e75c639fff8ec2c2f9fea1 288e20f19c6662b1425e0a0797ae443f7eddcc4a alex <alex@amac.local> 1267051247 +0300 commit: upd
|
data/.git/logs/refs/heads/master
CHANGED
|
@@ -29,3 +29,5 @@ fec19d13244f6b439e234e1af2e2e6d1f886b2fb 5f483b0c41645f8882f549c1c6d0274bb592140
|
|
|
29
29
|
a0d595c78f280787659a2a4400f5d63578b53dce e7e790ff7c580a636d0de69956834c9b47ad771b alex <alex@amac.local> 1266000303 +0300 commit: upd
|
|
30
30
|
e7e790ff7c580a636d0de69956834c9b47ad771b a59472e8ecb5d06647adeec11ae931b956508191 alex <alex@amac.local> 1266630067 +0300 commit: upd
|
|
31
31
|
a59472e8ecb5d06647adeec11ae931b956508191 08f5dafa9123b7f8d1f22a796c4cba4a4063ad0d alex <alex@amac.local> 1266772739 +0300 commit: upd
|
|
32
|
+
08f5dafa9123b7f8d1f22a796c4cba4a4063ad0d b533c1c1bca9eae5b7e75c639fff8ec2c2f9fea1 alex <alex@amac.local> 1267048597 +0300 commit: refactor mongo connections and add multitenant migration with specs
|
|
33
|
+
b533c1c1bca9eae5b7e75c639fff8ec2c2f9fea1 288e20f19c6662b1425e0a0797ae443f7eddcc4a alex <alex@amac.local> 1267051247 +0300 commit: upd
|
|
@@ -27,3 +27,5 @@ fec19d13244f6b439e234e1af2e2e6d1f886b2fb 5f483b0c41645f8882f549c1c6d0274bb592140
|
|
|
27
27
|
a0d595c78f280787659a2a4400f5d63578b53dce e7e790ff7c580a636d0de69956834c9b47ad771b alex <alex@amac.local> 1266000307 +0300 update by push
|
|
28
28
|
e7e790ff7c580a636d0de69956834c9b47ad771b a59472e8ecb5d06647adeec11ae931b956508191 alex <alex@amac.local> 1266630072 +0300 update by push
|
|
29
29
|
a59472e8ecb5d06647adeec11ae931b956508191 08f5dafa9123b7f8d1f22a796c4cba4a4063ad0d alex <alex@amac.local> 1266772749 +0300 update by push
|
|
30
|
+
08f5dafa9123b7f8d1f22a796c4cba4a4063ad0d b533c1c1bca9eae5b7e75c639fff8ec2c2f9fea1 alex <alex@amac.local> 1267048616 +0300 update by push
|
|
31
|
+
b533c1c1bca9eae5b7e75c639fff8ec2c2f9fea1 288e20f19c6662b1425e0a0797ae443f7eddcc4a alex <alex@amac.local> 1267051254 +0300 update by push
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
x��Aj�0E��)f_(cY�%�W���%[�=~������<��^kd<��C��D�ip�� k�͚l�3����7�qh�!���8�e[sHs6k�be��e� q���~v��ˋ_�����O��_�Wz�y�����7�C3d<?jo�N�[S����!%��}��
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
data/.git/refs/heads/master
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
288e20f19c6662b1425e0a0797ae443f7eddcc4a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
288e20f19c6662b1425e0a0797ae443f7eddcc4a
|
data/Rakefile
CHANGED
|
@@ -18,7 +18,7 @@ require 'fileutils'
|
|
|
18
18
|
|
|
19
19
|
spec = Gem::Specification.new do |s|
|
|
20
20
|
s.name = "rails-ext"
|
|
21
|
-
s.version = "0.2.
|
|
21
|
+
s.version = "0.2.16"
|
|
22
22
|
s.summary = "Set of common Ruby on Rails extensions"
|
|
23
23
|
s.description = "Set of common Ruby on Rails extensions"
|
|
24
24
|
s.author = "Alexey Petrushin"
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
module MongoMapper::Migration
|
|
2
|
+
class MigrationDefinition
|
|
3
|
+
def upgrade &block
|
|
4
|
+
if block
|
|
5
|
+
@upgrade = block
|
|
6
|
+
else
|
|
7
|
+
@upgrade
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
alias_method :up, :upgrade
|
|
11
|
+
|
|
12
|
+
def downgrade &block
|
|
13
|
+
if block
|
|
14
|
+
@downgrade = block
|
|
15
|
+
else
|
|
16
|
+
@downgrade
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
alias_method :down, :downgrade
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
class << self
|
|
23
|
+
def define_migration version, &block
|
|
24
|
+
version.should! :be_a, Integer
|
|
25
|
+
definition = MigrationDefinition.new
|
|
26
|
+
block.call definition
|
|
27
|
+
migration_definitions[version] = definition
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def define_global_migration version, &block
|
|
31
|
+
version.should! :be_a, Integer
|
|
32
|
+
definition = MigrationDefinition.new
|
|
33
|
+
block.call definition
|
|
34
|
+
global_migration_definitions[version] = definition
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def update_global_database_to version
|
|
38
|
+
puts "Migration for Global Database:"
|
|
39
|
+
update_database MongoMapper.global_database, global_migration_definitions, version
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def update_database_to version
|
|
43
|
+
puts "Migration for Accounts Databases:"
|
|
44
|
+
results = {}
|
|
45
|
+
MongoMapper.accounts_names.each do |account_name|
|
|
46
|
+
MongoMapper.account_database account_name do |db|
|
|
47
|
+
result = update_database db, migration_definitions, version
|
|
48
|
+
results[db.name] = result
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
results
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def metadata db
|
|
55
|
+
col = db.collection 'db_metadata'
|
|
56
|
+
metadata = (col.find_one || {:version => 0}).to_openobject
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def global_migration_definitions; @global_migration_definitions ||= [] end
|
|
60
|
+
def migration_definitions; @migration_definitions ||= [] end
|
|
61
|
+
|
|
62
|
+
protected
|
|
63
|
+
def increase_db_version migration_definitions, db
|
|
64
|
+
m = metadata(db)
|
|
65
|
+
migration = migration_definitions[m.version + 1]
|
|
66
|
+
raise "No upgrade for version #{m.version + 1}" unless migration and migration.up
|
|
67
|
+
|
|
68
|
+
migration.up.call
|
|
69
|
+
|
|
70
|
+
m.version += 1
|
|
71
|
+
update_metadata db, m
|
|
72
|
+
|
|
73
|
+
puts "Database #{db.name} upgraded to version #{m.version}"
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def decrease_db_version migration_definitions, db
|
|
77
|
+
m = metadata(db)
|
|
78
|
+
migration = migration_definitions[m.version]
|
|
79
|
+
raise "No downgrade for version #{m.version}" unless migration and migration.down
|
|
80
|
+
|
|
81
|
+
migration.down.call
|
|
82
|
+
|
|
83
|
+
m.version -= 1
|
|
84
|
+
update_metadata db, m
|
|
85
|
+
|
|
86
|
+
puts "Database #{db.name} downgraded to version #{m.version}"
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def update_database db, migrations, version
|
|
90
|
+
if metadata(db).version == version
|
|
91
|
+
puts "Database #{db.name} already is of #{version} version, no migration needed"
|
|
92
|
+
return false
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
increase_db_version migrations, db while metadata(db).version < version
|
|
96
|
+
decrease_db_version migrations, db while metadata(db).version > version
|
|
97
|
+
true
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def update_metadata db, metadata
|
|
101
|
+
col = db.collection 'db_metadata'
|
|
102
|
+
col.save metadata.to_hash
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def reset
|
|
106
|
+
[global_migration_definitions, migration_definitions].every.clear
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
MongoMapper.class_eval do
|
|
2
|
+
const_set :ACCOUNT_TOKEN, ':account'
|
|
3
|
+
class << self
|
|
4
|
+
#
|
|
5
|
+
# Config
|
|
6
|
+
#
|
|
7
|
+
attr_accessor :custom_config
|
|
8
|
+
|
|
9
|
+
def config
|
|
10
|
+
unless @config
|
|
11
|
+
@config = if defined?(Rails)
|
|
12
|
+
global_database = DATABASE["#{Rails.env}!"].global_database!
|
|
13
|
+
accounts_database = DATABASE["#{Rails.env}!"].accounts_database!
|
|
14
|
+
config = {
|
|
15
|
+
:global_database => {
|
|
16
|
+
:name => global_database.name!,
|
|
17
|
+
:host => global_database.host(nil),
|
|
18
|
+
:port => global_database.port(nil)
|
|
19
|
+
}.to_openobject,
|
|
20
|
+
:accounts_database => {
|
|
21
|
+
:name => accounts_database.name!,
|
|
22
|
+
:host => accounts_database.host(nil),
|
|
23
|
+
:port => accounts_database.port(nil)
|
|
24
|
+
}.to_openobject
|
|
25
|
+
}.to_openobject
|
|
26
|
+
else
|
|
27
|
+
raise "If you don't using Rails you must override this method and provide your own custom_config!" if custom_config.blank?
|
|
28
|
+
custom_config
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Global database should't looks the same as Account database. We need to distinguish it by names!
|
|
32
|
+
db_pattern = accounts_database.name
|
|
33
|
+
re = Regexp.new(db_pattern.gsub(MongoMapper::ACCOUNT_TOKEN, '.+'))
|
|
34
|
+
raise "Global Database Name shouldn't be similar to Account Database Name!" if global_database.name =~ re
|
|
35
|
+
end
|
|
36
|
+
@config
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
#
|
|
40
|
+
# Global Database
|
|
41
|
+
#
|
|
42
|
+
def global_connection
|
|
43
|
+
unless @global_connection
|
|
44
|
+
@global_connection = Mongo::Connection.new(config.global_database.host, config.global_database.port, :logger => logger)
|
|
45
|
+
|
|
46
|
+
if defined?(PhusionPassenger)
|
|
47
|
+
PhusionPassenger.on_event(:starting_worker_process) do |forked|
|
|
48
|
+
@global_connection.connect_to_master if forked
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
@global_connection
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def global_database
|
|
56
|
+
@global_database ||= global_connection.db config.global_database.name
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def current_global_database
|
|
60
|
+
global_database
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
#
|
|
65
|
+
# Accounts Database
|
|
66
|
+
#
|
|
67
|
+
def account_connection
|
|
68
|
+
unless @account_connection
|
|
69
|
+
@account_connection = Mongo::Connection.new(config.accounts_database.host, config.accounts_database.port, :logger => logger)
|
|
70
|
+
|
|
71
|
+
if defined?(PhusionPassenger)
|
|
72
|
+
PhusionPassenger.on_event(:starting_worker_process) do |forked|
|
|
73
|
+
@account_connection.connect_to_master if forked
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
@account_connection
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
attr_accessor :multitenant_mode
|
|
81
|
+
def multitenant_mode?; !!@multitenant_mode end
|
|
82
|
+
|
|
83
|
+
def account_database_name account_name
|
|
84
|
+
db_name_template = config.accounts_database.name
|
|
85
|
+
db_name_template.should! :include, MongoMapper::ACCOUNT_TOKEN
|
|
86
|
+
db_name = db_name_template.gsub(MongoMapper::ACCOUNT_TOKEN, account_name)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def account_database account_name, &block
|
|
90
|
+
self.logger.warn "Previous database #{self.database.name} has note be closed!" if multitenant_mode?
|
|
91
|
+
|
|
92
|
+
db_name = account_database_name account_name
|
|
93
|
+
|
|
94
|
+
begin
|
|
95
|
+
self.connection = account_connection
|
|
96
|
+
self.database = db_name
|
|
97
|
+
self.multitenant_mode = true
|
|
98
|
+
block.call self.database if block
|
|
99
|
+
ensure
|
|
100
|
+
if block
|
|
101
|
+
self.multitenant_mode = false
|
|
102
|
+
self.database = nil
|
|
103
|
+
self.connection = nil
|
|
104
|
+
else
|
|
105
|
+
self.logger.warn "Account Database #{self.database.name} will not be closed automatically!"
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def current_account_database
|
|
111
|
+
multitenant_mode? ? database : nil
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def logger
|
|
115
|
+
return @logger ||= Logger.new(nil) if defined?(Spec)
|
|
116
|
+
|
|
117
|
+
@logger ||= ("irb" == $0) ? Logger.new(STDOUT) : (defined?(Rails) ? Rails.logger : Logger.new(STDOUT))
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def accounts_names
|
|
121
|
+
accounts_names = []
|
|
122
|
+
db_pattern = MongoMapper.config.accounts_database.name
|
|
123
|
+
re = Regexp.new(db_pattern.gsub(MongoMapper::ACCOUNT_TOKEN, '.+'))
|
|
124
|
+
|
|
125
|
+
token_start = db_pattern.index MongoMapper::ACCOUNT_TOKEN
|
|
126
|
+
token_size = MongoMapper::ACCOUNT_TOKEN.size
|
|
127
|
+
|
|
128
|
+
prefix_size = token_start
|
|
129
|
+
postfix_size = db_pattern.size - prefix_size - token_size
|
|
130
|
+
|
|
131
|
+
MongoMapper.account_connection.database_names.each do |name|
|
|
132
|
+
if name =~ re
|
|
133
|
+
account_name = name[prefix_size..-(postfix_size + 1)]
|
|
134
|
+
accounts_names << account_name
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
accounts_names
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
#
|
|
144
|
+
# cache
|
|
145
|
+
#
|
|
146
|
+
MongoMapper::Document::InstanceMethods.class_eval do
|
|
147
|
+
def cache
|
|
148
|
+
@cache ||= {}
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
def clear_cache
|
|
152
|
+
@cache = {}
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
def reload_with_cache
|
|
156
|
+
@cache.clear if @cache
|
|
157
|
+
reload_without_cache
|
|
158
|
+
end
|
|
159
|
+
alias_method_chain :reload, :cache
|
|
160
|
+
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
[MongoMapper::EmbeddedDocument::ClassMethods, MongoMapper::Document::ClassMethods].each do |aclass|
|
|
2
|
+
aclass.class_eval do
|
|
3
|
+
def connect_to_global_database!
|
|
4
|
+
self.connection MongoMapper.global_connection
|
|
5
|
+
self.set_database_name MongoMapper.config.global_database.name
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
MongoMapper.account_database 'development'
|
|
2
|
+
|
|
3
|
+
Spec::Runner.configure do |config|
|
|
4
|
+
config.before(:each) do
|
|
5
|
+
dbs = [MongoMapper.current_global_database]
|
|
6
|
+
dbs << MongoMapper.current_account_database unless MongoMapper.current_account_database.blank?
|
|
7
|
+
|
|
8
|
+
dbs.each do |db|
|
|
9
|
+
db.collection_names.each do |name|
|
|
10
|
+
db.collection(name).drop
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#
|
|
2
|
+
# HTML helpers
|
|
3
|
+
#
|
|
4
|
+
[MongoMapper::EmbeddedDocument::InstanceMethods, MongoMapper::Document::InstanceMethods].each do |aclass|
|
|
5
|
+
aclass.class_eval do
|
|
6
|
+
def original_id; id end
|
|
7
|
+
|
|
8
|
+
def dom_id
|
|
9
|
+
new_record? ? "new_#{self.class.original_class.name.underscore}" : original_id.to_s
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def to_param; original_id.to_s end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
[MongoMapper::EmbeddedDocument::ClassMethods, MongoMapper::Document::ClassMethods].each do |aclass|
|
|
17
|
+
aclass.class_eval do
|
|
18
|
+
def original_class; self end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Converts any non standart fname.yml file in /config folder into FNAME constant with loaded YAML content wrapped into SafeHash.
|
|
2
2
|
config_dir = "#{RAILS_ROOT}/config/"
|
|
3
3
|
files = Dir.glob("#{config_dir}*.yml")
|
|
4
|
-
ignore = ["asset_packages\\.yml", "
|
|
4
|
+
ignore = ["asset_packages\\.yml", "\\..+\\."].collect{|expr| Regexp.new expr}
|
|
5
5
|
files.delete_if{|fname| ignore.any?{|template| template =~ fname}}
|
|
6
6
|
files.delete_if{|fname| /^[a-zA-Z0-9_]+\.yml$/ !~ fname.sub(config_dir, '')}
|
|
7
7
|
|
data/lib/rails_ext.rb
CHANGED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
require 'spec'
|
|
2
|
+
require 'ruby_ext'
|
|
3
|
+
require "#{File.dirname __FILE__}/../lib/mongo_mapper_ext"
|
|
4
|
+
|
|
5
|
+
MongoMapper.custom_config = {
|
|
6
|
+
:global_database => {
|
|
7
|
+
:name => 'global_development_test'
|
|
8
|
+
}.to_openobject,
|
|
9
|
+
:accounts_database => {
|
|
10
|
+
:name => "accounts_#{MongoMapper::ACCOUNT_TOKEN}_test"
|
|
11
|
+
}.to_openobject
|
|
12
|
+
}.to_openobject
|
|
13
|
+
require "#{File.dirname __FILE__}/../lib/mongo_mapper_ext/spec_helper"
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
describe "MongoMapper Migration" do
|
|
17
|
+
Migration = MongoMapper::Migration
|
|
18
|
+
|
|
19
|
+
before :each do
|
|
20
|
+
Migration.send :reset
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe "Global Database" do
|
|
24
|
+
before :all do
|
|
25
|
+
class GlobalSample
|
|
26
|
+
include MongoMapper::Document
|
|
27
|
+
connect_to_global_database!
|
|
28
|
+
|
|
29
|
+
key :name, String
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
after :all do
|
|
34
|
+
Object.send :remove_const, :GlobalSample if defined?(GlobalSample)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it "Shouldn't update if versions are the same" do
|
|
38
|
+
Migration.update_global_database_to(0).should be_false
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "increase_db_version" do
|
|
42
|
+
GlobalSample.count.should == 0
|
|
43
|
+
Migration.define_global_migration 1 do |m|
|
|
44
|
+
m.up{GlobalSample.create :name => 'name'}
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
Migration.update_global_database_to(1).should be_true
|
|
48
|
+
GlobalSample.count.should == 1
|
|
49
|
+
Migration.metadata(MongoMapper.global_database).should == 1
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it "decrease_db_version" do
|
|
53
|
+
Migration.define_global_migration 1 do |m|
|
|
54
|
+
m.up{GlobalSample.create :name => 'name'}
|
|
55
|
+
m.down{GlobalSample.destroy_all}
|
|
56
|
+
end
|
|
57
|
+
Migration.update_global_database_to(1).should be_true
|
|
58
|
+
GlobalSample.count.should == 1
|
|
59
|
+
|
|
60
|
+
Migration.update_global_database_to(0).should be_true
|
|
61
|
+
GlobalSample.count.should == 0
|
|
62
|
+
Migration.metadata(MongoMapper.global_database).should == 0
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
describe "Acccounts Database" do
|
|
67
|
+
before :all do
|
|
68
|
+
class Sample
|
|
69
|
+
include MongoMapper::Document
|
|
70
|
+
|
|
71
|
+
key :name, String
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
after :all do
|
|
76
|
+
Object.send :remove_const, :Sample if defined?(Sample)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
before :each do
|
|
80
|
+
@account_db_name = 'accounts_development_test'
|
|
81
|
+
MongoMapper.accounts_names.each do |acccount_name|
|
|
82
|
+
next if acccount_name == 'development'
|
|
83
|
+
MongoMapper.account_connection.drop_database MongoMapper.account_database_name(acccount_name)
|
|
84
|
+
end
|
|
85
|
+
MongoMapper.current_account_database.collection('stub').save('a' => 'b') # Creating empty database
|
|
86
|
+
MongoMapper.accounts_names.should == ['development']
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
after :each do
|
|
90
|
+
MongoMapper.account_database 'development'
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
it "Shouldn't update if versions are the same" do
|
|
94
|
+
results = Migration.update_database_to(0)
|
|
95
|
+
results[@account_db_name].should be_false
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it "increase_db_version" do
|
|
99
|
+
Sample.count.should == 0
|
|
100
|
+
Migration.define_migration 1 do |m|
|
|
101
|
+
m.up{Sample.create :name => 'name'}
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
results = Migration.update_database_to(1)
|
|
105
|
+
results.size.should == 1
|
|
106
|
+
results[@account_db_name].should be_true
|
|
107
|
+
|
|
108
|
+
MongoMapper.account_database 'development'
|
|
109
|
+
Sample.count.should == 1
|
|
110
|
+
Migration.metadata(MongoMapper.current_account_database).should == 1
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
it "decrease_db_version" do
|
|
114
|
+
Migration.define_migration 1 do |m|
|
|
115
|
+
m.up{Sample.create :name => 'name'}
|
|
116
|
+
m.down{Sample.destroy_all}
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
# Up
|
|
120
|
+
results = Migration.update_database_to(1)
|
|
121
|
+
results.size.should == 1
|
|
122
|
+
results[@account_db_name].should be_true
|
|
123
|
+
|
|
124
|
+
MongoMapper.account_database 'development'
|
|
125
|
+
Sample.count.should == 1
|
|
126
|
+
|
|
127
|
+
# Down
|
|
128
|
+
results = Migration.update_database_to(0)
|
|
129
|
+
results.size.should == 1
|
|
130
|
+
results[@account_db_name].should be_true
|
|
131
|
+
|
|
132
|
+
MongoMapper.account_database 'development'
|
|
133
|
+
Sample.count.should == 0
|
|
134
|
+
Migration.metadata(MongoMapper.database).should == 0
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rails-ext
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.16
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Alexey Petrushin
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date: 2010-02-
|
|
12
|
+
date: 2010-02-25 00:00:00 +03:00
|
|
13
13
|
default_executable:
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
@@ -66,6 +66,7 @@ files:
|
|
|
66
66
|
- .git/objects/0b/3b3d1048f25fdc0de3f680cdbbd867a42b5a95
|
|
67
67
|
- .git/objects/0b/e101a0586410212b4ee5905881ad726b7b4907
|
|
68
68
|
- .git/objects/0d/aa3468e187093eff222b8094a6e702dea9ba4e
|
|
69
|
+
- .git/objects/0d/b63ec7380f5132ca02be93c82f5295e33c10a9
|
|
69
70
|
- .git/objects/0f/92cb7ae358323d43d026b83f7d1a4969cf7568
|
|
70
71
|
- .git/objects/0f/d3ac42b07c2d3102263bd939704f5633db304e
|
|
71
72
|
- .git/objects/10/1f52d83027dfe5798f87aec1118f02d19e5cf8
|
|
@@ -80,6 +81,7 @@ files:
|
|
|
80
81
|
- .git/objects/18/77033b90ed3dd55a3034b7e3ca1c5c9f66868d
|
|
81
82
|
- .git/objects/18/adbbbcd043a3ef3e19854df8476b02d69544d0
|
|
82
83
|
- .git/objects/19/1f68644a3646d774f2546c4cd49ac7d66f4cc2
|
|
84
|
+
- .git/objects/1b/83175202b0bdd9e8aac50c186533c1730aa220
|
|
83
85
|
- .git/objects/1c/65c12ac1816d1b56c7c3892acc61512696c673
|
|
84
86
|
- .git/objects/1c/7fd48742e76d2cd6605e1a569e65e79ddd8f92
|
|
85
87
|
- .git/objects/1d/d49713de2942dc974e55adc3684f55b2b817e2
|
|
@@ -87,6 +89,7 @@ files:
|
|
|
87
89
|
- .git/objects/1f/1be5b8e4dce8787367b3a607b0695ca70d4e82
|
|
88
90
|
- .git/objects/21/e143c036491275aaa7d6e45ed4683f5defdae2
|
|
89
91
|
- .git/objects/23/926daa53cee50268bd329a8b4cbd853cb3a45b
|
|
92
|
+
- .git/objects/28/8e20f19c6662b1425e0a0797ae443f7eddcc4a
|
|
90
93
|
- .git/objects/28/c44da9255a78bf7105a1c251e4e1cd643b8f44
|
|
91
94
|
- .git/objects/29/7a2c413b11f78b69dd8caa4f334c9536088f8a
|
|
92
95
|
- .git/objects/29/b1f8abaed4aea1da8f8bd5f1bd81c26058c41a
|
|
@@ -107,12 +110,14 @@ files:
|
|
|
107
110
|
- .git/objects/3a/797683953be7e6d0ffa0e34514f3e8e9c3ceb0
|
|
108
111
|
- .git/objects/3a/ff2a7bfdf3a677812899ede62d084369c7c5f4
|
|
109
112
|
- .git/objects/3e/c0da65fe2e572ad31203f9412baa09dfdf49d3
|
|
113
|
+
- .git/objects/3e/f23cf310c5eebac930a19d36a0561dd362d3ee
|
|
110
114
|
- .git/objects/3f/3db6bb5a5204ae58e303959c4c0da3a70d8b35
|
|
111
115
|
- .git/objects/3f/8f2086049359d8b2b2500a7145afe3040e9c37
|
|
112
116
|
- .git/objects/40/215c0554202fc46dc2fca94ed21e2920ce1e84
|
|
113
117
|
- .git/objects/40/7adfb7f6188b0bb0b88cf9391943e1aaa32374
|
|
114
118
|
- .git/objects/40/b5d1a81a061ce0e2f315b7e741ec70e0defe1d
|
|
115
119
|
- .git/objects/46/d12e0420cd6341a2720730cc45703fc835efb6
|
|
120
|
+
- .git/objects/47/28fde4426b545c73552bd5e0f79296a2b4be19
|
|
116
121
|
- .git/objects/49/66cd792ea3e03d5091aa7a332f2a082e479a76
|
|
117
122
|
- .git/objects/4a/80705702f499ef1278630257a33c6088238ba3
|
|
118
123
|
- .git/objects/4a/be35eba6ed159578e3f43f6ffa8ea7541598e2
|
|
@@ -124,6 +129,7 @@ files:
|
|
|
124
129
|
- .git/objects/4d/f726437dcbd106a583c07863e56076b245e8e3
|
|
125
130
|
- .git/objects/4f/2c09cf4d187a86ce37983eb76211ebabdb45d0
|
|
126
131
|
- .git/objects/4f/fa8f1c9b7e3fdbb23ab600722d1011dcb48cec
|
|
132
|
+
- .git/objects/52/5fcb274029ec36780b264166ea3d487d968997
|
|
127
133
|
- .git/objects/53/8aca7c60ef3cdfde25d4698e8e133ce18e512e
|
|
128
134
|
- .git/objects/55/6c13b26b6cecd286427a7f16c60c86c7df7885
|
|
129
135
|
- .git/objects/55/d1f1efc344266d472094b1fd2f247b97de1c8b
|
|
@@ -133,6 +139,7 @@ files:
|
|
|
133
139
|
- .git/objects/59/0ef6ba9931d75fbddc7a940044dbaaa50efc76
|
|
134
140
|
- .git/objects/59/7b19d2ba6f1d46f75f702cbacf8828b7b506f9
|
|
135
141
|
- .git/objects/5a/35fa85474278f3c817aa59d07b725428c41a28
|
|
142
|
+
- .git/objects/5c/95be85f2a2a984454fed4941a5ae00062634c5
|
|
136
143
|
- .git/objects/5c/d7e89f2b29ed92fd51e2c6b2ee74db376d17d7
|
|
137
144
|
- .git/objects/5f/483b0c41645f8882f549c1c6d0274bb592140a
|
|
138
145
|
- .git/objects/60/a681e873ca0ae0b7da3f37dbc5701f6e42b970
|
|
@@ -143,6 +150,7 @@ files:
|
|
|
143
150
|
- .git/objects/64/96d7c4cc0c824e706bf757f9ec63b5553c9caf
|
|
144
151
|
- .git/objects/65/51094fa3b996ff25b88d7ddb21d21a811d53fc
|
|
145
152
|
- .git/objects/66/37f98202acb1895cb347d7c5fb5c414dd9e6db
|
|
153
|
+
- .git/objects/67/2396778b142df8b0b7ab212b7564039c48cf39
|
|
146
154
|
- .git/objects/67/850cf1ede94d80c9b07ceace074a4d62f15249
|
|
147
155
|
- .git/objects/68/8ce506ac4f7c160bd6880d8507820761a3b3b7
|
|
148
156
|
- .git/objects/68/a8fc1e77fc27530430b55046609ee80cd9b2ad
|
|
@@ -154,6 +162,7 @@ files:
|
|
|
154
162
|
- .git/objects/6d/f725e3519872a75bc763045f00d8844eb890cf
|
|
155
163
|
- .git/objects/6e/a04c6c0a52b9c7da1de6364b530553dfd78c4a
|
|
156
164
|
- .git/objects/71/e6b43e9d41f9903992fd86d483b7d3e4dd28cd
|
|
165
|
+
- .git/objects/73/667b7ae341d478513ba0bd6ec8af0aa1f62f0d
|
|
157
166
|
- .git/objects/74/ce4a58ebf96006e1e9be0980b99ac3b5b820c7
|
|
158
167
|
- .git/objects/74/d8411c7276b4e1c1f614606af7f69ab4526d30
|
|
159
168
|
- .git/objects/75/d0b250bcdf241d981313b1d6eb153b96e4b05f
|
|
@@ -171,6 +180,7 @@ files:
|
|
|
171
180
|
- .git/objects/82/03c2c6cdd29e1e20e88fbb81e63b7ea1ec2899
|
|
172
181
|
- .git/objects/83/6f33959bcf517b9952aefb3fdfdd7ff3c1f207
|
|
173
182
|
- .git/objects/85/eee9f4c1a6f710ed87bf28a0531275777f8848
|
|
183
|
+
- .git/objects/85/fd531f7352ad8f5ac030eed2204a662dd10a66
|
|
174
184
|
- .git/objects/86/b31b604469e9b261f4e5b927932504bca8c402
|
|
175
185
|
- .git/objects/87/fc827fd223cac6b4e55d823a9ea86bb0726a3b
|
|
176
186
|
- .git/objects/89/2697494eb70fdccaf26bf547bb8d7428c0e5ff
|
|
@@ -179,6 +189,7 @@ files:
|
|
|
179
189
|
- .git/objects/8d/4dcde8df4da8f53f5f5313757b907e9aa1af66
|
|
180
190
|
- .git/objects/8e/3cfb391de711b5fecfbdf2860fa37b019e8036
|
|
181
191
|
- .git/objects/8e/69b6cf3ec8b49270091b4a206ccf326679dc20
|
|
192
|
+
- .git/objects/8e/a47de58a27dd343b3ecd3dd5e0fab88e268a72
|
|
182
193
|
- .git/objects/90/ca84ea326afab5fcc92a50469c2052ebc46f11
|
|
183
194
|
- .git/objects/92/e1c250edfca72ed0932934257ef3cfc7122ec5
|
|
184
195
|
- .git/objects/92/e1f3936e7c33007d0a466b836804450992a1eb
|
|
@@ -194,12 +205,14 @@ files:
|
|
|
194
205
|
- .git/objects/a3/4e4e8572d323de26965619321576f903fa7935
|
|
195
206
|
- .git/objects/a3/5c311b625d863b50d51e2385259d487e277c90
|
|
196
207
|
- .git/objects/a3/6956ff51b72b69d1ac2c1ad0d78bb9ad1ade75
|
|
208
|
+
- .git/objects/a3/84715546f6a11dc7d56a32784dbdd5d7d92e8e
|
|
197
209
|
- .git/objects/a5/4db1bec30f7dc8981c4d5ccf9c9a90c1e13662
|
|
198
210
|
- .git/objects/a5/9472e8ecb5d06647adeec11ae931b956508191
|
|
199
211
|
- .git/objects/a6/438da91846df9ac940b59f6d11d5019a5580be
|
|
200
212
|
- .git/objects/a7/6c4944dc009628cb65b4962464a8eb484d6a71
|
|
201
213
|
- .git/objects/a7/a902aeac4af3f10b474c23c2a3750fde007a02
|
|
202
214
|
- .git/objects/a9/d2b84a743094002fef87a193e681ee721d76ed
|
|
215
|
+
- .git/objects/ab/6b7d6c5c5fee246e184a58448682b73b574d6b
|
|
203
216
|
- .git/objects/ab/825cde00e626431c6045e6886d470327c63001
|
|
204
217
|
- .git/objects/ac/92bcf6c74d23824c3c7ce341f667507592c7f9
|
|
205
218
|
- .git/objects/ac/a1ad63cec98e0b3dae23fbe088f5a5d2125a7a
|
|
@@ -214,6 +227,7 @@ files:
|
|
|
214
227
|
- .git/objects/b4/228251babf3a84ac181d462fdd383816bd23b8
|
|
215
228
|
- .git/objects/b4/eb909dd819bf870d2445bddc0d7f00678b11b6
|
|
216
229
|
- .git/objects/b5/15828bb32356501aa81bb4e808ea5d7d77f068
|
|
230
|
+
- .git/objects/b5/33c1c1bca9eae5b7e75c639fff8ec2c2f9fea1
|
|
217
231
|
- .git/objects/b5/edd343ceb8e87d1a73922612aec210b393f839
|
|
218
232
|
- .git/objects/b7/88e3ac322b164a2a223f80f8a6da0836d9d1dd
|
|
219
233
|
- .git/objects/ba/67eef0f58a44e4b39af605d45e1e958023588d
|
|
@@ -227,9 +241,13 @@ files:
|
|
|
227
241
|
- .git/objects/c1/424cadd8817a7e927742e52945f303b38e7222
|
|
228
242
|
- .git/objects/c3/dd5ae1e005efb09ef758da1ec17781c616ae9d
|
|
229
243
|
- .git/objects/c4/524d9d99c6072949bfc565f78b7a62577ffa3f
|
|
244
|
+
- .git/objects/c5/208dea612df35fb84ceeda0649c103c32e2240
|
|
245
|
+
- .git/objects/c5/3b27c9641ea1c2aed192672b67ba8c4034b2ad
|
|
230
246
|
- .git/objects/c5/64ac68ebc8e0db7a6355a45f3299829ef2a825
|
|
247
|
+
- .git/objects/c6/9db405143490c407206cf8afd7537a49ea30b2
|
|
231
248
|
- .git/objects/c7/a9ce2f4c2230143a30c77952c14ddf6507f511
|
|
232
249
|
- .git/objects/c8/e50fcfb3ed2c892a6c75e8d703552bb8edd4ca
|
|
250
|
+
- .git/objects/ca/a9edd4de82aa3abec99946e92da9225efb83bc
|
|
233
251
|
- .git/objects/ca/c13b06411cdb70ac35d51ecf9efb0907645bd1
|
|
234
252
|
- .git/objects/cd/cf979816bbea77b6000145a1e23921553bf497
|
|
235
253
|
- .git/objects/d0/ca1129a25def590908081d9dc166d5288fddf0
|
|
@@ -259,6 +277,7 @@ files:
|
|
|
259
277
|
- .git/objects/e4/1d46e33f52e07b836b966d58677fc2a864a4a4
|
|
260
278
|
- .git/objects/e4/d7cacac2d7e66df5a7c21eaae71c0a90f1439d
|
|
261
279
|
- .git/objects/e5/7fa5fd7f10f6f532742b0cc2dc3edaed6c0763
|
|
280
|
+
- .git/objects/e6/4d9b4d86a001e4f882a9842a8dd4368001c470
|
|
262
281
|
- .git/objects/e6/ed7d272f8c48a28904007d653837bfe761be36
|
|
263
282
|
- .git/objects/e7/e790ff7c580a636d0de69956834c9b47ad771b
|
|
264
283
|
- .git/objects/e7/f4b26a3258b7788ffe2665773387e19c01095a
|
|
@@ -279,11 +298,16 @@ files:
|
|
|
279
298
|
- .git/objects/f3/7784042bc99c16c02fd104dda82aafa42d4c9c
|
|
280
299
|
- .git/objects/f4/2863a866b6cd3bb09d0482052cbf2da7fb4e5a
|
|
281
300
|
- .git/objects/f5/91a5c39e03e2102c9101db957b48c8c76e194c
|
|
301
|
+
- .git/objects/f6/0fd8c2582e0f7688877f12f78ddb97a291046c
|
|
282
302
|
- .git/objects/f6/3ad03a8daa1602df63aab3838947c18fa63797
|
|
303
|
+
- .git/objects/f7/b177b2c6b25dd886d23d6be87bcf802af9b513
|
|
283
304
|
- .git/objects/f9/8d0f95460a7a3f63ab4c08ad5508fd32d1b5c2
|
|
284
305
|
- .git/objects/f9/ef6dd08a60dec5d5e4e7a9b08f693ebf76da39
|
|
285
306
|
- .git/objects/fa/4e345a8b9a12bf1cf7af254b3caa111b04191b
|
|
307
|
+
- .git/objects/fa/854db299be87a6e6a65d906e7c2f9b122d9980
|
|
286
308
|
- .git/objects/fb/05e1cc9825c59c7edc596c05077a1eed9c321e
|
|
309
|
+
- .git/objects/fc/022a0a2ed82b2361292833c0cb90f996aae858
|
|
310
|
+
- .git/objects/fc/bf66b949d823f884d1aff2f3e192943cb195a2
|
|
287
311
|
- .git/objects/fd/25e0c8e44fb97a7c7d76280cec51886b51abf6
|
|
288
312
|
- .git/objects/fe/c19d13244f6b439e234e1af2e2e6d1f886b2fb
|
|
289
313
|
- .git/objects/fe/ce95626cedcc0682e6fcc20fe019aab60938f2
|
|
@@ -298,6 +322,14 @@ files:
|
|
|
298
322
|
- lib/asset_packager/asset_packager.rb
|
|
299
323
|
- lib/asset_packager/jsmin.rb
|
|
300
324
|
- lib/asset_packager/tasks.rb
|
|
325
|
+
- lib/mongo_mapper_ext/fixes.rb
|
|
326
|
+
- lib/mongo_mapper_ext/migration.rb
|
|
327
|
+
- lib/mongo_mapper_ext/mongo_mapper.rb
|
|
328
|
+
- lib/mongo_mapper_ext/multitenant.rb
|
|
329
|
+
- lib/mongo_mapper_ext/object_id.rb
|
|
330
|
+
- lib/mongo_mapper_ext/spec_helper.rb
|
|
331
|
+
- lib/mongo_mapper_ext/view_helpers.rb
|
|
332
|
+
- lib/mongo_mapper_ext.rb
|
|
301
333
|
- lib/rails_ext/action_controller.rb
|
|
302
334
|
- lib/rails_ext/action_controller_ext.rb
|
|
303
335
|
- lib/rails_ext/action_view.rb
|
|
@@ -325,13 +357,12 @@ files:
|
|
|
325
357
|
- lib/rails_ext/merge_default_scope.rb
|
|
326
358
|
- lib/rails_ext/micelaneous.rb
|
|
327
359
|
- lib/rails_ext/model.rb
|
|
328
|
-
- lib/rails_ext/mongo_mapper.rb
|
|
329
|
-
- lib/rails_ext/mongo_mapper_spec_helper.rb
|
|
330
360
|
- lib/rails_ext/persistent_params.rb
|
|
331
361
|
- lib/rails_ext/redirect_helper.rb
|
|
332
362
|
- lib/rails_ext/reload_page.rb
|
|
333
363
|
- lib/rails_ext/user_error.rb
|
|
334
364
|
- lib/rails_ext.rb
|
|
365
|
+
- spec/mongo_mapper_migration_spec.rb
|
|
335
366
|
- spec/safe_hash_spec.rb
|
|
336
367
|
- spec/spec.opts
|
|
337
368
|
- public/rails_ext/rails_ext.css
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
# require 'mm-paginate'
|
|
2
|
-
|
|
3
|
-
#
|
|
4
|
-
# dom_id
|
|
5
|
-
#
|
|
6
|
-
# MongoMapper::Document.class_eval do
|
|
7
|
-
# def dom_id
|
|
8
|
-
# new_record? ? "new_#{self.class.name.underscore}" : "#{id}"
|
|
9
|
-
# end
|
|
10
|
-
# end
|
|
11
|
-
|
|
12
|
-
#
|
|
13
|
-
# cache
|
|
14
|
-
#
|
|
15
|
-
MongoMapper::Document::InstanceMethods.class_eval do
|
|
16
|
-
def cache
|
|
17
|
-
@cache ||= {}
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def clear_cache
|
|
21
|
-
@cache = {}
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def reload_with_cache
|
|
25
|
-
@cache.clear if @cache
|
|
26
|
-
reload_without_cache
|
|
27
|
-
end
|
|
28
|
-
alias_method_chain :reload, :cache
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
#
|
|
32
|
-
# ObjectID
|
|
33
|
-
#
|
|
34
|
-
Mongo::ObjectID.class_eval do
|
|
35
|
-
def == other
|
|
36
|
-
self.to_s == other.to_s
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def to_yaml *args
|
|
40
|
-
to_s.to_yaml *args
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# String.class_eval do
|
|
45
|
-
# def to_mongo_id
|
|
46
|
-
# ObjectId.to_mongo self
|
|
47
|
-
# end
|
|
48
|
-
# end
|