rails_dm_datastore 0.2.2 → 0.2.3
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/VERSION +1 -1
- data/{lib → generators/dd_model}/USAGE +0 -0
- data/generators/{dm_model/dm_model_generator.rb → dd_model/dd_model_generator.rb} +1 -1
- data/generators/{dm_model → dd_model}/templates/model.rb +0 -0
- data/generators/{dm_model → dd_model}/templates/unit_test.rb +0 -0
- data/lib/rails_dm_datastore.rb +30 -7
- data/rails_dm_datastore.gemspec +10 -12
- data/test/test_weak_reference.rb +83 -0
- metadata +8 -10
- data/lib/generators/data_mapper/USAGE +0 -8
- data/lib/generators/data_mapper/model/model_generator.rb +0 -38
- data/lib/generators/data_mapper/model/templates/model.rb +0 -8
- data/lib/generators/data_mapper/templates/model.rb +0 -8
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.3
|
File without changes
|
File without changes
|
File without changes
|
data/lib/rails_dm_datastore.rb
CHANGED
@@ -4,7 +4,7 @@ require 'dm-ar-finders'
|
|
4
4
|
require 'dm-timestamps'
|
5
5
|
require 'dm-validations'
|
6
6
|
DataMapper.setup(:default, "appengine://auto")
|
7
|
-
|
7
|
+
#DataMapper.setup(:ephemeral, "in_memory::")
|
8
8
|
module DataMapper
|
9
9
|
module Resource
|
10
10
|
# avoid object references in URLs
|
@@ -19,20 +19,43 @@ end
|
|
19
19
|
# DataMapper::Validate
|
20
20
|
class Dictionary; alias count length; end
|
21
21
|
|
22
|
+
|
23
|
+
#Override Extlib::Hook::ClassMethods.inline_call to check in the given weak reference
|
24
|
+
|
25
|
+
module LocalObjectSpace
|
26
|
+
def self.extended(klass)
|
27
|
+
(class << klass; self;end).send :attr_accessor, :hook_scopes
|
28
|
+
|
29
|
+
klass.hook_scopes = []
|
30
|
+
end
|
31
|
+
|
32
|
+
def object_by_id(object_id)
|
33
|
+
self.hook_scopes.each do |object|
|
34
|
+
return object if object.object_id == object_id
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
22
40
|
module Extlib
|
23
41
|
module Hook
|
24
42
|
module ClassMethods
|
43
|
+
|
44
|
+
extend LocalObjectSpace
|
45
|
+
|
46
|
+
#end
|
47
|
+
|
25
48
|
def inline_call(method_info, scope)
|
49
|
+
Extlib::Hook::ClassMethods.hook_scopes << method_info[:from]
|
26
50
|
name = method_info[:name]
|
51
|
+
|
27
52
|
if scope == :instance
|
28
|
-
args = method_defined?(name) &&
|
29
|
-
|
53
|
+
args = method_defined?(name) && instance_method(name).arity != 0 ? '*args' : ''
|
54
|
+
%(#{name}(#{args}) if self.class <= Extlib::Hook::ClassMethods.object_by_id(#{method_info[:from].object_id}))
|
30
55
|
else
|
31
|
-
args = respond_to?(name) &&
|
32
|
-
|
56
|
+
args = respond_to?(name) && method(name).arity != 0 ? '*args' : ''
|
57
|
+
%(#{name}(#{args}) if self <= Extlib::Hook::ClassMethods.object_by_id(#{method_info[:from].object_id}))
|
33
58
|
end
|
34
|
-
# ObjectSpace._id2ref should be replaced with WeakRef
|
35
|
-
%(#{name}(#{args})) # Always call hook... set_timestamps_on_save()
|
36
59
|
end
|
37
60
|
end
|
38
61
|
end
|
data/rails_dm_datastore.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rails_dm_datastore}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["joshsmoore"]
|
12
|
-
s.date = %q{2010-01-
|
12
|
+
s.date = %q{2010-01-25}
|
13
13
|
s.description = %q{Integrate datamapper to Rails for the Google App Engine}
|
14
14
|
s.email = %q{joshsmoore@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -24,18 +24,15 @@ Gem::Specification.new do |s|
|
|
24
24
|
"Rakefile",
|
25
25
|
"VERSION",
|
26
26
|
"dm-rails-gae.gemspec",
|
27
|
-
"generators/
|
28
|
-
"generators/
|
29
|
-
"generators/
|
30
|
-
"
|
31
|
-
"lib/generators/data_mapper/USAGE",
|
32
|
-
"lib/generators/data_mapper/model/model_generator.rb",
|
33
|
-
"lib/generators/data_mapper/model/templates/model.rb",
|
34
|
-
"lib/generators/data_mapper/templates/model.rb",
|
27
|
+
"generators/dd_model/USAGE",
|
28
|
+
"generators/dd_model/dd_model_generator.rb",
|
29
|
+
"generators/dd_model/templates/model.rb",
|
30
|
+
"generators/dd_model/templates/unit_test.rb",
|
35
31
|
"lib/rails_dm_datastore.rb",
|
36
32
|
"rails_dm_datastore.gemspec",
|
37
33
|
"test/helper.rb",
|
38
|
-
"test/test_dm-rails-gae.rb"
|
34
|
+
"test/test_dm-rails-gae.rb",
|
35
|
+
"test/test_weak_reference.rb"
|
39
36
|
]
|
40
37
|
s.homepage = %q{http://github.com/joshsmoore/dm-rails-gae}
|
41
38
|
s.rdoc_options = ["--charset=UTF-8"]
|
@@ -44,7 +41,8 @@ Gem::Specification.new do |s|
|
|
44
41
|
s.summary = %q{Generators for dm on gae}
|
45
42
|
s.test_files = [
|
46
43
|
"test/helper.rb",
|
47
|
-
"test/test_dm-rails-gae.rb"
|
44
|
+
"test/test_dm-rails-gae.rb",
|
45
|
+
"test/test_weak_reference.rb"
|
48
46
|
]
|
49
47
|
|
50
48
|
if s.respond_to? :specification_version then
|
@@ -0,0 +1,83 @@
|
|
1
|
+
module ActionView
|
2
|
+
module Partials
|
3
|
+
def render_partial
|
4
|
+
#so that we do not have to load action view but can still alias this method
|
5
|
+
end
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
|
10
|
+
require 'rubygems'
|
11
|
+
require 'lib/rails_dm_datastore'
|
12
|
+
require 'test/unit'
|
13
|
+
|
14
|
+
class TestInlineCall
|
15
|
+
extend Extlib::Hook::ClassMethods
|
16
|
+
end
|
17
|
+
|
18
|
+
class Person
|
19
|
+
include DataMapper::Resource
|
20
|
+
|
21
|
+
property :id, Serial
|
22
|
+
property :name, String
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
class Child < Person
|
27
|
+
|
28
|
+
property :grade, String
|
29
|
+
end
|
30
|
+
|
31
|
+
class TestWeakReference < Test::Unit::TestCase
|
32
|
+
|
33
|
+
def setup
|
34
|
+
Extlib::Hook::ClassMethods.hook_scopes = []
|
35
|
+
end
|
36
|
+
|
37
|
+
def teardown
|
38
|
+
Extlib::Hook::ClassMethods.hook_scopes = []
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_add_object_to_hooks_scope
|
42
|
+
|
43
|
+
scope_objects = [Person, Person.new]
|
44
|
+
scope_objects.each {|object| Extlib::Hook::ClassMethods.hook_scopes << object }
|
45
|
+
|
46
|
+
scope_objects.each {|object| assert Extlib::Hook::ClassMethods.hook_scopes.include? object}
|
47
|
+
assert_equal scope_objects.count, Extlib::Hook::ClassMethods.hook_scopes.count
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_inline_call
|
51
|
+
assert_nothing_raised do
|
52
|
+
eval TestInlineCall.inline_call({:from => Person, :name => 'person_class'},:instance)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_find_object_by_id
|
57
|
+
objects = [Person, Person.new, Child, Child.new]
|
58
|
+
objects.each {|object| Extlib::Hook::ClassMethods.hook_scopes << object }
|
59
|
+
|
60
|
+
assert_equal objects[0], Extlib::Hook::ClassMethods.object_by_id(objects[0].object_id)
|
61
|
+
assert_equal objects[1], Extlib::Hook::ClassMethods.object_by_id(objects[1].object_id)
|
62
|
+
assert_equal objects[3], Extlib::Hook::ClassMethods.object_by_id(objects[3].object_id)
|
63
|
+
assert_equal objects[2], Extlib::Hook::ClassMethods.object_by_id(objects[2].object_id)
|
64
|
+
|
65
|
+
assert_not_equal objects[2], Extlib::Hook::ClassMethods.object_by_id(objects[0].object_id)
|
66
|
+
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_store_a_reference_for_ever_hooks_scope
|
71
|
+
assert_nothing_raised do
|
72
|
+
Extlib::Hook::ClassMethods.hook_scopes
|
73
|
+
end
|
74
|
+
#ExtLib::Hook::ClassMethods.responds_to? :hook_scopes
|
75
|
+
end
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
#test "the model should respond with a list of subclasses" do
|
80
|
+
|
81
|
+
#end
|
82
|
+
|
83
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_dm_datastore
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- joshsmoore
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-01-
|
12
|
+
date: 2010-01-25 00:00:00 +08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -99,18 +99,15 @@ files:
|
|
99
99
|
- Rakefile
|
100
100
|
- VERSION
|
101
101
|
- dm-rails-gae.gemspec
|
102
|
-
- generators/
|
103
|
-
- generators/
|
104
|
-
- generators/
|
105
|
-
-
|
106
|
-
- lib/generators/data_mapper/USAGE
|
107
|
-
- lib/generators/data_mapper/model/model_generator.rb
|
108
|
-
- lib/generators/data_mapper/model/templates/model.rb
|
109
|
-
- lib/generators/data_mapper/templates/model.rb
|
102
|
+
- generators/dd_model/USAGE
|
103
|
+
- generators/dd_model/dd_model_generator.rb
|
104
|
+
- generators/dd_model/templates/model.rb
|
105
|
+
- generators/dd_model/templates/unit_test.rb
|
110
106
|
- lib/rails_dm_datastore.rb
|
111
107
|
- rails_dm_datastore.gemspec
|
112
108
|
- test/helper.rb
|
113
109
|
- test/test_dm-rails-gae.rb
|
110
|
+
- test/test_weak_reference.rb
|
114
111
|
has_rdoc: true
|
115
112
|
homepage: http://github.com/joshsmoore/dm-rails-gae
|
116
113
|
licenses: []
|
@@ -142,3 +139,4 @@ summary: Generators for dm on gae
|
|
142
139
|
test_files:
|
143
140
|
- test/helper.rb
|
144
141
|
- test/test_dm-rails-gae.rb
|
142
|
+
- test/test_weak_reference.rb
|
@@ -1,38 +0,0 @@
|
|
1
|
-
#require 'data_mapper/data_mapper_generator'
|
2
|
-
require 'rails/generators/named_base'
|
3
|
-
|
4
|
-
module DataMapper
|
5
|
-
module Generators
|
6
|
-
class ModelGenerator < Rails::Generators::NamedBase #DataMapperGenerator
|
7
|
-
argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
|
8
|
-
|
9
|
-
check_class_collision
|
10
|
-
|
11
|
-
#class_option :migration, :type => :boolean
|
12
|
-
class_option :timestamps, :type => :boolean
|
13
|
-
#class_option :parent, :type => :string, :desc => "The parent class for the generated model"
|
14
|
-
|
15
|
-
#def create_migration_file
|
16
|
-
# return unless options[:migration] && options[:parent].nil?
|
17
|
-
# migration_template "migration.rb", "db/migrate/create_#{table_name}.rb"
|
18
|
-
#end
|
19
|
-
|
20
|
-
def create_model_file
|
21
|
-
puts "I am creating a datamapper model"
|
22
|
-
template 'model.rb', File.join('app/models', class_path, "#{file_name}.rb")
|
23
|
-
end
|
24
|
-
|
25
|
-
#hook_for :test_framework
|
26
|
-
|
27
|
-
#protected
|
28
|
-
|
29
|
-
#def parent_class_name
|
30
|
-
# options[:parent] || "ActiveRecord::Base"
|
31
|
-
#end
|
32
|
-
def self.source_root
|
33
|
-
puts File.expand_path('../templates', __FILE__)
|
34
|
-
@source_root ||= File.expand_path('../templates', __FILE__)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|