mack-data_mapper 0.8.0.101 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,6 +3,8 @@ require 'genosaurus'
3
3
 
4
4
  configatron.mack.set_default(:disable_transactional_tests, false)
5
5
  configatron.mack.data_mapper_session_store.set_default(:expiry_time, 4.hours)
6
+ configatron.mack.data_mapper.set_default(:repository_runner_context, :default)
7
+ configatron.mack.data_mapper.set_default(:use_repository_runner, false)
6
8
 
7
9
  require 'mack-orm'
8
10
 
@@ -12,7 +14,7 @@ fl = File.join(File.dirname(__FILE__), "mack-data_mapper")
12
14
  $: << File.expand_path(File.join(fl, "dm_patches"))
13
15
 
14
16
  [:core, :aggregates, :migrations, :serializer, :timestamps, :validations, :observer, :types].each do |g|
15
- gem "dm-#{g}", "0.9.5"
17
+ gem "dm-#{g}", "0.9.6"
16
18
  require "dm-#{g}" unless g == :types
17
19
  end
18
20
 
@@ -25,6 +27,8 @@ require File.join(fl, "generators")
25
27
  require File.join(fl, "helpers", "orm_helpers")
26
28
  require File.join(fl, "resource")
27
29
  require File.join(fl, "test_extensions")
30
+ require File.join(fl, "repo_runner_helper")
31
+ require File.join(fl, "paginator")
28
32
 
29
33
 
30
34
  [:helpers, :migration_generator, :model_generator, :scaffold_generator, :dm_patches, :sessions].each do |folder|
@@ -59,12 +59,12 @@ module Mack
59
59
  structure += show.attributes["create table".to_sym]
60
60
  structure += ";\n\n"
61
61
  end
62
+ structure.gsub!('MyISAM', 'InnoDB')
62
63
  File.open(output_file, "w") {|f| f.puts structure}
63
64
  when /Postgres/
64
65
  `pg_dump -i -U "#{uri.user}" -s -x -O -n #{ENV["SCHEMA"] ||= "public"} -f #{output_file} #{uri.basename}`
65
66
  when /Sqlite3/
66
- db_dir = Mack::Paths.db
67
- `sqlite3 #{File.join(db_dir, uri.basename)} .schema > #{output_file}`
67
+ puts `sqlite3 #{uri.path} .schema > #{output_file}`
68
68
  else
69
69
  raise "Task not supported for '#{repository(repis).adapter.class.name}'"
70
70
  end
@@ -97,10 +97,9 @@ module Mack
97
97
  repo.adapter.execute "CREATE DATABASE #{uri.basename} ENCODING = 'utf8'"
98
98
  end
99
99
  when /Sqlite3/
100
- db_dir = Mack::Paths.db
101
- puts "Creating (SQLite3): #{uri.basename}"
102
- FileUtils.mkdir_p(db_dir)
103
- FileUtils.touch(File.join(db_dir, uri.basename))
100
+ puts "Creating (SQLite3): #{uri.path}"
101
+ FileUtils.mkdir_p(File.dirname(uri.path), :verbose => true)
102
+ FileUtils.touch(uri.path, :verbose => true)
104
103
  else
105
104
  raise "Task not supported for '#{repository(repis).adapter.class.name}'"
106
105
  end
@@ -117,14 +116,14 @@ module Mack
117
116
  end
118
117
  when /Postgres/
119
118
  setup_temp(uri, "postgres")
119
+ DataObjects::Postgres::Connection.__pools.each {|k, v| v.dispose}
120
120
  repository(:tmp) do |repo|
121
121
  puts "Dropping (PostgreSQL): #{uri.basename}"
122
122
  repo.adapter.execute "DROP DATABASE IF EXISTS #{uri.basename}"
123
123
  end
124
124
  when /Sqlite3/
125
- puts "Dropping (SQLite3): #{uri.basename}"
126
- db_dir = Mack::Paths.db
127
- FileUtils.rm_rf(File.join(db_dir.to_s, uri.basename))
125
+ puts "Dropping (SQLite3): #{uri.path}"
126
+ FileUtils.rm_rf(uri.path)
128
127
  else
129
128
  raise "Task not supported for '#{repository(repis).adapter.class.name}'"
130
129
  end
@@ -6,7 +6,7 @@ module Mack
6
6
 
7
7
  # Migrates the database to the latest version
8
8
  def self.migrate
9
- Mack::Database.establish_connection
9
+ # Mack::Database.establish_connection
10
10
  ::DataMapper::MigrationRunner.reset!
11
11
  migration_files.each { |mig| load mig }
12
12
  ::DataMapper::MigrationRunner.migrate_up!
@@ -29,7 +29,7 @@ module Mack
29
29
  end
30
30
  ::DataMapper::MigrationRunner.migrations.clear
31
31
  end
32
-
32
+
33
33
  end # Migrations
34
34
  end # Database
35
35
  end # Mack
@@ -40,4 +40,40 @@ module SQL # :nodoc:
40
40
  end
41
41
 
42
42
  end # TableModifier
43
- end # SQL
43
+ end # SQL
44
+
45
+ module DataMapper # :nodoc:
46
+
47
+ class Migration # :nodoc:
48
+ include SQL
49
+
50
+ # perform the migration by running the code in the #up block
51
+ def perform_up
52
+ result = nil
53
+ if needs_up?
54
+ # database.transaction.commit do
55
+ say_with_time "== Performing Up Migration ##{position}: #{name}", 0 do
56
+ result = @up_action.call
57
+ end
58
+ update_migration_info(:up)
59
+ # end
60
+ end
61
+ result
62
+ end
63
+
64
+ # un-do the migration by running the code in the #down block
65
+ def perform_down
66
+ result = nil
67
+ if needs_down?
68
+ # database.transaction.commit do
69
+ say_with_time "== Performing Down Migration ##{position}: #{name}", 0 do
70
+ result = @down_action.call
71
+ end
72
+ update_migration_info(:down)
73
+ # end
74
+ end
75
+ result
76
+ end
77
+
78
+ end # Migration
79
+ end # DataMapper
@@ -0,0 +1,9 @@
1
+ module DataObjects # :nodoc:
2
+ class URI # :nodoc:
3
+
4
+ def basename
5
+ self.path[1..self.path.length]
6
+ end
7
+
8
+ end # URI
9
+ end # DataObjects
@@ -0,0 +1,52 @@
1
+ module Mack
2
+ module Database
3
+
4
+ class Paginator
5
+
6
+ # Implements the paginate method from the Mack::Database::Paginator spec in mack-orm.
7
+ def paginate
8
+ order_clause = [self.query_options.delete(:order)].flatten.compact
9
+
10
+ self.total_results = self.klass.count(self.query_options)
11
+ self.total_pages = (self.total_results.to_f / self.results_per_page).ceil
12
+
13
+ self.current_page = self.total_pages if self.current_page > self.total_pages
14
+
15
+ if order_clause.empty?
16
+ self.klass.key.each do |k|
17
+ order_clause << k.name.to_sym.asc
18
+ end
19
+ end
20
+
21
+ self.query_options.reverse_merge!({
22
+ :order => order_clause
23
+ })
24
+
25
+ offset = (self.current_page - 1) * self.results_per_page
26
+ offset = 0 if offset < 0
27
+
28
+ self.query_options.merge!({
29
+ :limit => self.results_per_page,
30
+ :offset => offset
31
+ })
32
+
33
+ self.results = self.klass.all(self.query_options)
34
+ self
35
+ end # paginate
36
+
37
+ end # Paginator
38
+ end # Database
39
+ end # Mack
40
+
41
+ module DataMapper # :nodoc:
42
+ module Resource # :nodoc:
43
+ module ClassMethods # :nodoc:
44
+
45
+ def paginate(options = {}, query_options = {})
46
+ paginator = Mack::Database::Paginator.new(self, options, query_options)
47
+ paginator.paginate
48
+ end
49
+
50
+ end # ClassMethods
51
+ end # Resource
52
+ end # DataMapper
@@ -0,0 +1,22 @@
1
+ module Mack
2
+ module DataMapper # :nodoc:
3
+ # This runner helper will wrap a request with a DataMapper::Repository.
4
+ # To turn on this runner set the following configuration value equal to true:
5
+ # configatron.mack.data_mapper.use_repository_runner = true
6
+ # To set the context in which the runner helper runs, set this configuration value:
7
+ # configatron.mack.data_mapper.repository_runner_context = :default
8
+ class RepositoryRunnerHelper < Mack::RunnerHelpers::Base
9
+
10
+ def start(request, response, cookies)
11
+ ::DataMapper::Repository.context << ::DataMapper::Repository.new(configatron.mack.data_mapper.repository_runner_context)
12
+ end
13
+
14
+ def complete(request, response, cookies)
15
+ ::DataMapper::Repository.context.pop
16
+ end
17
+
18
+ end
19
+ end
20
+ end
21
+
22
+ Mack::RunnerHelpers::Registry.add(Mack::DataMapper::RepositoryRunnerHelper) if configatron.mack.data_mapper.use_repository_runner
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mack-data_mapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0.101
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - markbates
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-10-11 00:00:00 -04:00
12
+ date: 2008-10-26 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - "="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.9.5
23
+ version: 0.9.6
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: dm-aggregates
@@ -30,7 +30,7 @@ dependencies:
30
30
  requirements:
31
31
  - - "="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.9.5
33
+ version: 0.9.6
34
34
  version:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: dm-migrations
@@ -40,7 +40,7 @@ dependencies:
40
40
  requirements:
41
41
  - - "="
42
42
  - !ruby/object:Gem::Version
43
- version: 0.9.5
43
+ version: 0.9.6
44
44
  version:
45
45
  - !ruby/object:Gem::Dependency
46
46
  name: dm-serializer
@@ -50,7 +50,7 @@ dependencies:
50
50
  requirements:
51
51
  - - "="
52
52
  - !ruby/object:Gem::Version
53
- version: 0.9.5
53
+ version: 0.9.6
54
54
  version:
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: dm-timestamps
@@ -60,7 +60,7 @@ dependencies:
60
60
  requirements:
61
61
  - - "="
62
62
  - !ruby/object:Gem::Version
63
- version: 0.9.5
63
+ version: 0.9.6
64
64
  version:
65
65
  - !ruby/object:Gem::Dependency
66
66
  name: dm-validations
@@ -70,7 +70,7 @@ dependencies:
70
70
  requirements:
71
71
  - - "="
72
72
  - !ruby/object:Gem::Version
73
- version: 0.9.5
73
+ version: 0.9.6
74
74
  version:
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: dm-observer
@@ -80,7 +80,7 @@ dependencies:
80
80
  requirements:
81
81
  - - "="
82
82
  - !ruby/object:Gem::Version
83
- version: 0.9.5
83
+ version: 0.9.6
84
84
  version:
85
85
  - !ruby/object:Gem::Dependency
86
86
  name: dm-types
@@ -90,7 +90,7 @@ dependencies:
90
90
  requirements:
91
91
  - - "="
92
92
  - !ruby/object:Gem::Version
93
- version: 0.9.5
93
+ version: 0.9.6
94
94
  version:
95
95
  - !ruby/object:Gem::Dependency
96
96
  name: mack-orm
@@ -100,7 +100,7 @@ dependencies:
100
100
  requirements:
101
101
  - - "="
102
102
  - !ruby/object:Gem::Version
103
- version: 0.8.0.101
103
+ version: 0.8.1
104
104
  version:
105
105
  description: "mack-data_mapper was developed by: markbates"
106
106
  email: mark@mackframework.com
@@ -113,11 +113,8 @@ extra_rdoc_files:
113
113
  files:
114
114
  - lib/mack-data_mapper/database.rb
115
115
  - lib/mack-data_mapper/database_migrations.rb
116
- - lib/mack-data_mapper/dm_patches/dm-timestamps.rb
117
116
  - lib/mack-data_mapper/dm_patches/migrations.rb
118
- - lib/mack-data_mapper/dm_patches/model.rb
119
- - lib/mack-data_mapper/dm_patches/property_set.rb
120
- - lib/mack-data_mapper/dm_patches/validations.rb
117
+ - lib/mack-data_mapper/dm_patches/uri.rb
121
118
  - lib/mack-data_mapper/generators.rb
122
119
  - lib/mack-data_mapper/helpers/orm_helpers.rb
123
120
  - lib/mack-data_mapper/migration_generator/migration_generator.rb
@@ -127,6 +124,8 @@ files:
127
124
  - lib/mack-data_mapper/model_generator/templates/model.rb.template
128
125
  - lib/mack-data_mapper/model_generator/templates/rspec.rb.template
129
126
  - lib/mack-data_mapper/model_generator/templates/test_case.rb.template
127
+ - lib/mack-data_mapper/paginator.rb
128
+ - lib/mack-data_mapper/repo_runner_helper.rb
130
129
  - lib/mack-data_mapper/resource.rb
131
130
  - lib/mack-data_mapper/scaffold_generator/templates/app/controllers/controller.rb.template
132
131
  - lib/mack-data_mapper/sessions/data_mapper_session_store.rb
@@ -1,6 +0,0 @@
1
- # module DataMapper # :nodoc:
2
- # module Timestamp # :nodoc:
3
- # TIMESTAMP_PROPERTIES[:created_at] = lambda { |r| r.created_at = DateTime.now if r.new_record? && r.created_at.nil? } # :nodoc:
4
- # TIMESTAMP_PROPERTIES[:created_on] = lambda { |r| r.created_on = DateTime.now if r.new_record? && r.created_on.nil? } # :nodoc:
5
- # end
6
- # end
@@ -1,48 +0,0 @@
1
- # module DataMapper # :nodoc:
2
- # module Model # :nodoc:
3
- #
4
- # def property(name, type, options = {})
5
- # property = Property.new(self, name, type, options)
6
- #
7
- # create_property_getter(property)
8
- # create_property_setter(property)
9
- #
10
- # @properties[repository_name][property.name] = property
11
- #
12
- # # Add property to the other mappings as well if this is for the default
13
- # # repository.
14
- # if repository_name == default_repository_name
15
- # @properties.each_pair do |repository_name, properties|
16
- # next if repository_name == default_repository_name
17
- # properties << property
18
- # end
19
- # end
20
- #
21
- # # Add the property to the lazy_loads set for this resources repository
22
- # # only.
23
- # # TODO Is this right or should we add the lazy contexts to all
24
- # # repositories?
25
- # if property.lazy?
26
- # context = options.fetch(:lazy, :default)
27
- # context = :default if context == true
28
- #
29
- # Array(context).each do |item|
30
- # @properties[repository_name].lazy_context(item) << name
31
- # end
32
- # end
33
- #
34
- # # add the property to the child classes only if the property was
35
- # # added after the child classes' properties have been copied from
36
- # # the parent
37
- # if respond_to?(:descendants)
38
- # descendants.each do |model|
39
- # next if model.properties(repository_name).has_property?(name)
40
- # model.property(name, type, options)
41
- # end
42
- # end
43
- #
44
- # property
45
- # end
46
- #
47
- # end # module Model
48
- # end # module DataMapper
@@ -1,15 +0,0 @@
1
- # module DataMapper # :nodoc:
2
- # class PropertySet # :nodoc:
3
- #
4
- # def []=(name, property)
5
- # if existing_property = detect { |p| p.name == name }
6
- # property.hash
7
- # @entries[@entries.index(existing_property)] = property
8
- # else
9
- # add(property)
10
- # end
11
- # property
12
- # end
13
- #
14
- # end # class PropertySet
15
- # end # module DataMapper
@@ -1,15 +0,0 @@
1
- # module DataMapper # :nodoc:
2
- # module Validate # :nodoc:
3
- # class GenericValidator # :nodoc:
4
- #
5
- # def ==(other)
6
- # self.field_name == other.field_name &&
7
- # self.if_clause == other.if_clause &&
8
- # self.class == other.class &&
9
- # self.unless_clause == other.unless_clause &&
10
- # self.instance_variable_get(:@options) == other.instance_variable_get(:@options)
11
- # end
12
- #
13
- # end # class GenericValidator
14
- # end # module Validate
15
- # end # module DataMapper