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 CHANGED
@@ -1 +1 @@
1
- 0.2.2
1
+ 0.2.3
File without changes
@@ -2,7 +2,7 @@ require 'rails_generator/generators/components/model/model_generator'
2
2
  require 'active_record'
3
3
  require 'dm-core'
4
4
 
5
- class DmModelGenerator < ModelGenerator
5
+ class DdModelGenerator < ModelGenerator
6
6
 
7
7
  def manifest
8
8
  record do |m|
@@ -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
- instance_method(name).arity != 0 ? '*args' : ''
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
- method(name).arity != 0 ? '*args' : ''
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
@@ -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.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-14}
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/dm_model/dm_model_generator.rb",
28
- "generators/dm_model/templates/model.rb",
29
- "generators/dm_model/templates/unit_test.rb",
30
- "lib/USAGE",
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.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-14 00:00:00 +08:00
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/dm_model/dm_model_generator.rb
103
- - generators/dm_model/templates/model.rb
104
- - generators/dm_model/templates/unit_test.rb
105
- - lib/USAGE
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,8 +0,0 @@
1
- Description:
2
- Explain the generator
3
-
4
- Example:
5
- ./script/generate data_mapper Thing
6
-
7
- This will create:
8
- what/will/it/create
@@ -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
@@ -1,8 +0,0 @@
1
- class <%= class_name %>
2
- include DataMapper::Resource
3
-
4
- property :id, Serial
5
- <% for attribute in attributes -%>
6
- property :<%= attribute.name %>, <%= attribute.type %>
7
- <% end -%>
8
- end
@@ -1,8 +0,0 @@
1
- class <%= class_name %>
2
- include DataMapper::Resource
3
-
4
- property :id, Serial
5
- <% for attribute in attributes -%>
6
- property :<%= attribute.name %>, <%= attribute.type %>
7
- <% end -%>
8
- end