rails_datamapper 0.9.11

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt ADDED
@@ -0,0 +1,5 @@
1
+ === 0.9.11 / 2009-03-29
2
+
3
+ * 1 minor enhancement:
4
+
5
+ * Added migration tasks
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2008 Tom Malone
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Manifest.txt ADDED
@@ -0,0 +1,24 @@
1
+ History.txt
2
+ LICENSE
3
+ Manifest.txt
4
+ README.txt
5
+ Rakefile
6
+ TODO
7
+ datamapper.rake
8
+ generators/dm_install/dm_install_generator.rb
9
+ generators/dm_install/templates/datamapper.rake
10
+ generators/dm_migration/dm_migration_generator.rb
11
+ generators/dm_migration/templates/migration.rb
12
+ generators/dm_model/dm_model_generator.rb
13
+ generators/dm_model/templates/migration.rb
14
+ generators/dm_model/templates/model.rb
15
+ generators/dm_model/templates/unit_test.rb
16
+ generators/rspec_dm_model/rspec_dm_model_generator.rb
17
+ generators/rspec_dm_model/templates/model.rb
18
+ generators/rspec_dm_model/templates/model_spec.rb
19
+ init.rb
20
+ lib/rails_datamapper.rb
21
+ lib/rails_datamapper/rails_datamapper.rb
22
+ lib/rails_datamapper/validations.rb
23
+ lib/rails_datamapper/version.rb
24
+ tasks/install.rb
data/README.txt ADDED
@@ -0,0 +1,30 @@
1
+ This is a Rails plugin that provides datamapper as an orm
2
+
3
+ == Setup
4
+
5
+ add the following line to your projects environment.rb
6
+
7
+ config.gem "rails_datamapper"
8
+
9
+ == Generators
10
+
11
+ This will install the datamapper rake tasks:
12
+
13
+ script/generate dm_install
14
+
15
+ Two generators are added by default
16
+
17
+ script/generate dm_model
18
+ script/generate rspec_dm_model
19
+
20
+ These by default add an active record migrations but you can call
21
+
22
+ script/generate dm_model --skip-migration
23
+ script/generate rspec_dm_model --skip-migration
24
+
25
+ To avoid any dependency on active record add this to your projects environment.rb
26
+
27
+ config.frameworks -= [ :active_record ]
28
+
29
+ == Future
30
+ I really should sort out migrations but with rails3 round the corner don't hold your breath
data/Rakefile ADDED
@@ -0,0 +1,34 @@
1
+ require 'pathname'
2
+ require 'rubygems'
3
+
4
+ ROOT = Pathname(__FILE__).dirname.expand_path
5
+ JRUBY = RUBY_PLATFORM =~ /java/
6
+ WINDOWS = Gem.win_platform?
7
+ SUDO = (WINDOWS || JRUBY) ? '' : ('sudo' unless ENV['SUDOLESS'])
8
+
9
+ require ROOT + 'lib/rails_datamapper/version'
10
+
11
+ AUTHOR = 'Tom Malone'
12
+ EMAIL = 'tomjmalone [a] gmail [d] com'
13
+ GEM_NAME = 'rails_datamapper'
14
+ GEM_VERSION = DataMapper::RailsDatamapper::VERSION
15
+ GEM_DEPENDENCIES = [
16
+ [ 'dm-core', GEM_VERSION ],
17
+ [ 'dm-aggregates', GEM_VERSION ],
18
+ [ 'dm-migrations', GEM_VERSION ],
19
+ [ 'dm-serializer', GEM_VERSION ],
20
+ [ 'dm-timestamps', GEM_VERSION ],
21
+ [ 'dm-validations', GEM_VERSION ],
22
+ [ 'dm-types', GEM_VERSION ],
23
+ ]
24
+
25
+ GEM_CLEAN = %w[ pkg ]
26
+ GEM_EXTRAS = { :has_rdoc => false, :extra_rdoc_files => %w[ README.txt LICENSE TODO History.txt ] }
27
+
28
+ PROJECT_NAME = 'datamapper'
29
+ PROJECT_URL = "http://github.com/datamapper/dm-more/tree/master/#{GEM_NAME}"
30
+ PROJECT_DESCRIPTION = PROJECT_SUMMARY = 'Rails Plugin for datamapper'
31
+
32
+ [ ROOT, ROOT.parent ].each do |dir|
33
+ Pathname.glob(dir.join('tasks/**/*.rb').to_s).each { |f| require f }
34
+ end
data/TODO ADDED
File without changes
data/datamapper.rake ADDED
@@ -0,0 +1,36 @@
1
+ namespace :db do
2
+
3
+ desc "Perform automigration"
4
+ task :automigrate => :environment do
5
+ ::DataMapper.auto_migrate!
6
+ end
7
+
8
+ desc "Perform non destructive automigration"
9
+ task :autoupgrade => :environment do
10
+ ::DataMapper.auto_upgrade!
11
+ end
12
+
13
+ namespace :migrate do
14
+ task :load => :environment do
15
+ gem 'dm-migrations'
16
+ FileList["db/migrations/*.rb"].each do |migration|
17
+ load migration
18
+ end
19
+ end
20
+
21
+ desc "Migrate up using migrations"
22
+ task :up, :version, :needs => :load do |t, args|
23
+ version = args[:version]
24
+ migrate_up!(version)
25
+ end
26
+
27
+ desc "Migrate down using migrations"
28
+ task :down, :version, :needs => :load do |t, args|
29
+ version = args[:version]
30
+ migrate_down!(version)
31
+ end
32
+ end
33
+
34
+ desc "Migrate the database to the latest version"
35
+ task :migrate => 'db:migrate:up'
36
+ end
@@ -0,0 +1,12 @@
1
+ require 'rails_generator/base'
2
+
3
+ class DmInstallGenerator < Rails::Generator::Base
4
+
5
+ def manifest
6
+ record do |m|
7
+ m.directory "lib/tasks"
8
+ m.template "datamapper.rake", "lib/tasks/datamapper.rake"
9
+ end
10
+ end
11
+
12
+ end
@@ -0,0 +1,42 @@
1
+ namespace :db do
2
+
3
+ desc "Perform automigration"
4
+ task :automigrate => :environment do
5
+ FileList["app/models/**/*.rb"].each do |model|
6
+ load model
7
+ end
8
+ ::DataMapper.auto_migrate!
9
+ end
10
+
11
+ desc "Perform non destructive automigration"
12
+ task :autoupgrade => :environment do
13
+ FileList["app/models/**/*.rb"].each do |model|
14
+ load model
15
+ end
16
+ ::DataMapper.auto_upgrade!
17
+ end
18
+
19
+ namespace :migrate do
20
+ task :load => :environment do
21
+ gem 'dm-migrations'
22
+ FileList["db/migrations/*.rb"].each do |migration|
23
+ load migration
24
+ end
25
+ end
26
+
27
+ desc "Migrate up using migrations"
28
+ task :up, :version, :needs => :load do |t, args|
29
+ version = args[:version]
30
+ migrate_up!(version)
31
+ end
32
+
33
+ desc "Migrate down using migrations"
34
+ task :down, :version, :needs => :load do |t, args|
35
+ version = args[:version]
36
+ migrate_down!(version)
37
+ end
38
+ end
39
+
40
+ desc "Migrate the database to the latest version"
41
+ task :migrate => 'db:migrate:up'
42
+ end
@@ -0,0 +1,10 @@
1
+ require 'rails_generator/generators/components/migration/migration_generator'
2
+
3
+ class DmMigrationGenerator < Rails::Generator::NamedBase
4
+
5
+ def manifest
6
+ record do |m|
7
+ m.migration_template "migration.rb", "db/migrate"
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,7 @@
1
+ migration <%= # TODO %>, :<%= class_name.underscore %> do
2
+ up do
3
+ end
4
+
5
+ down do
6
+ end
7
+ end
@@ -0,0 +1,27 @@
1
+ require 'rails_generator/generators/components/model/model_generator'
2
+ require 'active_record'
3
+
4
+ class DmModelGenerator <ModelGenerator
5
+
6
+ def manifest
7
+ record do |m|
8
+ # Check for class naming collisions.
9
+ m.class_collisions class_path, class_name, "#{class_name}Test"
10
+
11
+ # Model, test, and fixture directories.
12
+ m.directory File.join('app/models', class_path)
13
+ m.directory File.join('test/unit', class_path)
14
+
15
+ # Model class, unit test, and fixtures.
16
+ m.template 'model.rb', File.join('app/models', class_path, "#{file_name}.rb")
17
+ m.template 'unit_test.rb', File.join('test/unit', class_path, "#{file_name}_test.rb")
18
+
19
+ unless options[:skip_migration]
20
+ m.migration_template 'migration.rb', 'db/migrate', :assigns => {
21
+ :migration_name => "Create#{class_name.pluralize.gsub(/::/, '')}"
22
+ }, :migration_file_name => "create_#{file_path.gsub(/\//, '_').pluralize}"
23
+ end
24
+ end
25
+ end
26
+
27
+ end
@@ -0,0 +1,16 @@
1
+ class <%= migration_name %> < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :<%= table_name %> do |t|
4
+ <% for attribute in attributes -%>
5
+ t.<%= attribute.type %> :<%= attribute.name %>
6
+ <% end -%>
7
+ <% unless options[:skip_timestamps] %>
8
+ t.timestamps
9
+ <% end -%>
10
+ end
11
+ end
12
+
13
+ def self.down
14
+ drop_table :<%= table_name %>
15
+ end
16
+ end
@@ -0,0 +1,14 @@
1
+ class <%= class_name %>
2
+ include DataMapper::Resource
3
+ property :id, Serial
4
+
5
+ <% for attribute in attributes -%>
6
+ property :<%= attribute.name %>, <%= attribute.type.to_s.capitalize %>, :nullable => false
7
+
8
+ <% end -%>
9
+ <% unless options[:skip_timestamps] %>
10
+ property :created_at, DateTime, :nullable => false
11
+ property :updated_at, DateTime, :nullable => false
12
+
13
+ <% end -%>
14
+ end
@@ -0,0 +1,8 @@
1
+ require 'test_helper'
2
+
3
+ class <%= class_name %>Test < ActiveSupport::TestCase
4
+ # Replace this with your real tests.
5
+ def test_truth
6
+ assert true
7
+ end
8
+ end
@@ -0,0 +1,30 @@
1
+ require 'rails_generator/generators/components/model/model_generator'
2
+ require 'active_record'
3
+
4
+ class RspecDmModelGenerator <ModelGenerator
5
+
6
+ def manifest
7
+ record do |m|
8
+
9
+ # Check for class naming collisions.
10
+ m.class_collisions class_path, class_name
11
+
12
+ # Model, spec, and fixture directories.
13
+ m.directory File.join('app/models', class_path)
14
+ m.directory File.join('spec/models', class_path)
15
+
16
+ # Model class, spec and fixtures.
17
+ m.template 'model.rb', File.join('app/models', class_path, "#{file_name}.rb")
18
+ m.template 'model_spec.rb', File.join('spec/models', class_path, "#{file_name}_spec.rb")
19
+
20
+ unless options[:skip_migration]
21
+ m.migration_template 'model:migration.rb', 'db/migrate', :assigns => {
22
+ :migration_name => "Create#{class_name.pluralize.gsub(/::/, '')}"
23
+ }, :migration_file_name => "create_#{file_path.gsub(/\//, '_').pluralize}"
24
+ end
25
+
26
+ end
27
+
28
+ end
29
+
30
+ end
@@ -0,0 +1,14 @@
1
+ class <%= class_name %>
2
+ include DataMapper::Resource
3
+ property :id, Serial
4
+
5
+ <% for attribute in attributes -%>
6
+ property :<%= attribute.name %>, <%= attribute.type.to_s.capitalize %>, :nullable => false
7
+
8
+ <% end -%>
9
+ <% unless options[:skip_timestamps] %>
10
+ property :created_at, DateTime, :nullable => false
11
+ property :updated_at, DateTime, :nullable => false
12
+
13
+ <% end -%>
14
+ end
@@ -0,0 +1,10 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '<%= '/..' * class_nesting_depth %>/../spec_helper')
2
+
3
+ describe <%= class_name %> do
4
+ before(:each) do
5
+ @<%= file_name %> = <%= class_name %>.new
6
+ end
7
+
8
+ it "should be valid" do
9
+ end
10
+ end
data/init.rb ADDED
@@ -0,0 +1,2 @@
1
+ require 'pathname'
2
+ require Pathname(__FILE__).dirname.expand_path / 'lib/rails_datamapper'
@@ -0,0 +1,45 @@
1
+ def config_file()
2
+ RAILS_ROOT + "/config/database.yml"
3
+ end
4
+
5
+ def create_connection()
6
+ conf = config.dup
7
+ repositories = conf.delete(:repositories)
8
+ ::DataMapper.setup(:default, conf) unless conf.empty?
9
+ end
10
+
11
+ def get_config_for_environment
12
+ if hash = full_config[RAILS_ENV]
13
+ symbolize_keys(hash)
14
+ elsif hash = full_config[RAILS_ENV.to_sym]
15
+ hash
16
+ else
17
+ raise ArgumentError, "missing environment '#{RAILS_ENV}' in config file #{config_file}"
18
+ end
19
+ end
20
+
21
+ def full_config
22
+ @full_config ||= YAML::load(ERB.new(IO.read(config_file)).result)
23
+ end
24
+
25
+ def config
26
+ @config ||= get_config_for_environment
27
+ end
28
+
29
+ def symbolize_keys(h)
30
+ config = {}
31
+
32
+ h.each do |k, v|
33
+ if k == 'port'
34
+ config[k.to_sym] = v.to_i
35
+ elsif k == 'adapter' && v == 'postgresql'
36
+ config[k.to_sym] = 'postgres'
37
+ elsif v.is_a?(Hash)
38
+ config[k.to_sym] = symbolize_keys(v)
39
+ else
40
+ config[k.to_sym] = v
41
+ end
42
+ end
43
+
44
+ config
45
+ end
@@ -0,0 +1,9 @@
1
+ module DataMapper
2
+ module Validate
3
+ class ValidationErrors
4
+ def count
5
+ size
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ module DataMapper
2
+ module RailsDatamapper
3
+ VERSION = '0.9.11'
4
+ end
5
+ end
@@ -0,0 +1,15 @@
1
+ require 'pathname'
2
+ require 'dm-core'
3
+ require 'dm-aggregates'
4
+ require 'dm-migrations'
5
+ require 'dm-serializer'
6
+ require 'dm-timestamps'
7
+ require 'dm-validations'
8
+ require 'dm-types'
9
+
10
+ dir = Pathname(__FILE__).dirname.expand_path / 'rails_datamapper'
11
+
12
+ require dir / 'rails_datamapper'
13
+ require dir / 'validations'
14
+
15
+ create_connection()
data/tasks/install.rb ADDED
@@ -0,0 +1,13 @@
1
+ def sudo_gem(cmd)
2
+ sh "#{SUDO} #{RUBY} -S gem #{cmd}", :verbose => false
3
+ end
4
+
5
+ desc "Install #{GEM_NAME} #{GEM_VERSION}"
6
+ task :install => [ :package ] do
7
+ sudo_gem "install --local pkg/#{GEM_NAME}-#{GEM_VERSION} --no-update-sources"
8
+ end
9
+
10
+ desc "Uninstall #{GEM_NAME} #{GEM_VERSION}"
11
+ task :uninstall => [ :clobber ] do
12
+ sudo_gem "uninstall #{GEM_NAME} -v#{GEM_VERSION} -Ix"
13
+ end
metadata ADDED
@@ -0,0 +1,152 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rails_datamapper
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.11
5
+ platform: ruby
6
+ authors:
7
+ - Tom Malone
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-06-11 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: dm-core
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - "="
22
+ - !ruby/object:Gem::Version
23
+ version: 0.9.11
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: dm-aggregates
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.9.11
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: dm-migrations
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "="
42
+ - !ruby/object:Gem::Version
43
+ version: 0.9.11
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: dm-serializer
47
+ type: :runtime
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "="
52
+ - !ruby/object:Gem::Version
53
+ version: 0.9.11
54
+ version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: dm-timestamps
57
+ type: :runtime
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "="
62
+ - !ruby/object:Gem::Version
63
+ version: 0.9.11
64
+ version:
65
+ - !ruby/object:Gem::Dependency
66
+ name: dm-validations
67
+ type: :runtime
68
+ version_requirement:
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "="
72
+ - !ruby/object:Gem::Version
73
+ version: 0.9.11
74
+ version:
75
+ - !ruby/object:Gem::Dependency
76
+ name: dm-types
77
+ type: :runtime
78
+ version_requirement:
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "="
82
+ - !ruby/object:Gem::Version
83
+ version: 0.9.11
84
+ version:
85
+ description: Rails Plugin for datamapper
86
+ email:
87
+ - tomjmalone [a] gmail [d] com
88
+ executables: []
89
+
90
+ extensions: []
91
+
92
+ extra_rdoc_files:
93
+ - README.txt
94
+ - LICENSE
95
+ - TODO
96
+ - History.txt
97
+ files:
98
+ - History.txt
99
+ - LICENSE
100
+ - Manifest.txt
101
+ - README.txt
102
+ - Rakefile
103
+ - TODO
104
+ - datamapper.rake
105
+ - generators/dm_install/dm_install_generator.rb
106
+ - generators/dm_install/templates/datamapper.rake
107
+ - generators/dm_migration/dm_migration_generator.rb
108
+ - generators/dm_migration/templates/migration.rb
109
+ - generators/dm_model/dm_model_generator.rb
110
+ - generators/dm_model/templates/migration.rb
111
+ - generators/dm_model/templates/model.rb
112
+ - generators/dm_model/templates/unit_test.rb
113
+ - generators/rspec_dm_model/rspec_dm_model_generator.rb
114
+ - generators/rspec_dm_model/templates/model.rb
115
+ - generators/rspec_dm_model/templates/model_spec.rb
116
+ - init.rb
117
+ - lib/rails_datamapper.rb
118
+ - lib/rails_datamapper/rails_datamapper.rb
119
+ - lib/rails_datamapper/validations.rb
120
+ - lib/rails_datamapper/version.rb
121
+ - tasks/install.rb
122
+ has_rdoc: true
123
+ homepage: http://github.com/datamapper/dm-more/tree/master/rails_datamapper
124
+ licenses: []
125
+
126
+ post_install_message:
127
+ rdoc_options:
128
+ - --main
129
+ - README.txt
130
+ require_paths:
131
+ - lib
132
+ required_ruby_version: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: "0"
137
+ version:
138
+ required_rubygems_version: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: "0"
143
+ version:
144
+ requirements: []
145
+
146
+ rubyforge_project: datamapper
147
+ rubygems_version: 1.3.4
148
+ signing_key:
149
+ specification_version: 3
150
+ summary: Rails Plugin for datamapper
151
+ test_files: []
152
+