mongo_db_gen 0.3.3 → 0.3.4
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/README +19 -1
- data/README.rdoc +13 -1
- data/lib/generators/mongo_mapper/model/model_generator.rb +70 -9
- data/lib/generators/mongo_mapper/model/templates/model.rb +9 -0
- data/lib/generators/mongo_mapper/setup/setup_generator.rb +13 -9
- data/lib/generators/mongoid/model/model_generator.rb +63 -8
- data/lib/generators/mongoid/model/templates/model.rb +5 -0
- data/lib/generators/mongoid/setup/setup_generator.rb +15 -11
- metadata +4 -3
- data/lib/generators/mongo_db_base.rb +0 -15
data/README
CHANGED
@@ -15,7 +15,22 @@ Setup use of Mongoid
|
|
15
15
|
|
16
16
|
Create new model Person with name attribute
|
17
17
|
|
18
|
-
rails g mongoid:model person name:string
|
18
|
+
rails g mongoid:model person name:string
|
19
|
+
|
20
|
+
Create document Address with attributes defaulting to string
|
21
|
+
|
22
|
+
rails g mongoid:model address name street
|
23
|
+
|
24
|
+
TODO:
|
25
|
+
It should support inheritance
|
26
|
+
|
27
|
+
class Browser < Canvas
|
28
|
+
field :version, :type => Integer
|
29
|
+
end
|
30
|
+
|
31
|
+
Fx like this:
|
32
|
+
|
33
|
+
rails g mongoid:model browser version:integer --inherit canvas
|
19
34
|
|
20
35
|
Mongo Mapper
|
21
36
|
------------
|
@@ -33,6 +48,9 @@ Create new Mongo Mapper model Person with name attribute
|
|
33
48
|
|
34
49
|
rails g mongoid:model person name:string
|
35
50
|
|
51
|
+
Create Embedded document Address with attributes defaulting to string
|
52
|
+
rails g mongoid:model address name street --embedded
|
53
|
+
|
36
54
|
Notice
|
37
55
|
======
|
38
56
|
This is currently a work in progress. Please feel free to join in the effort and fork this project and fix whatever bugs etc.
|
data/README.rdoc
CHANGED
@@ -1,8 +1,18 @@
|
|
1
1
|
= Mongo DB generators
|
2
2
|
|
3
|
-
The Mongo DB Rails 3 generators includes
|
3
|
+
The Mongo DB Rails 3 generators includes generators for both Mongo Mapper and Mongoid.
|
4
|
+
|
5
|
+
Add the following to your Gemfile in your Rails 3 project:
|
6
|
+
|
7
|
+
gem 'mongo_ext'
|
8
|
+
gem 'mongoid'
|
9
|
+
gem "mongo_mapper", :git => 'http://github.com/merbjedi/mongomapper.git', :branch => 'rails3'
|
10
|
+
|
11
|
+
$ bundle install
|
4
12
|
|
5
13
|
== Mongoid
|
14
|
+
|
15
|
+
Includes the following generators
|
6
16
|
|
7
17
|
* mongoid:setup - setup Rails app to use Mongoid
|
8
18
|
* mongoid:model - generates a Mongoid model
|
@@ -19,6 +29,8 @@ Create new model Person with name attribute
|
|
19
29
|
|
20
30
|
== Mongo Mapper
|
21
31
|
|
32
|
+
Includes the following generators
|
33
|
+
|
22
34
|
* mongo_mapper:setup - setup Rails app to use Mongo Mapper
|
23
35
|
* mongo_mapper:model - generates a Mongo Mapper model
|
24
36
|
|
@@ -1,9 +1,75 @@
|
|
1
|
+
require 'rails/generators/base'
|
2
|
+
|
1
3
|
module MongoMapper
|
2
4
|
module Generators
|
3
|
-
class ModelGenerator < Rails::Generators::
|
4
|
-
|
5
|
-
argument :
|
5
|
+
class ModelGenerator < Rails::Generators::Base
|
6
|
+
|
7
|
+
argument :model_name, :type => :string, :required => true, :banner => 'ModelName'
|
8
|
+
argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
|
9
|
+
|
10
|
+
class_option :embedded, :type => :boolean, :aliases => "-E", :default => false,
|
11
|
+
:desc => "Use EmbeddedDocument for model"
|
12
|
+
|
13
|
+
attr_accessor :model_attributes
|
14
|
+
|
15
|
+
def initialize(*args, &block)
|
16
|
+
super
|
6
17
|
|
18
|
+
@model_attributes = []
|
19
|
+
|
20
|
+
attributes.each do |arg|
|
21
|
+
if arg.include?(':')
|
22
|
+
@model_attributes << Rails::Generators::GeneratedAttribute.new(*arg.split(':'))
|
23
|
+
else
|
24
|
+
@model_attributes << Rails::Generators::GeneratedAttribute.new(arg, "string")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
@model_attributes.uniq!
|
29
|
+
|
30
|
+
if @model_attributes.empty?
|
31
|
+
if model_exists?
|
32
|
+
model_columns_for_attributes.each do |column|
|
33
|
+
@model_attributes << Rails::Generators::GeneratedAttribute.new(column.name.to_s, column.type.to_s)
|
34
|
+
end
|
35
|
+
else
|
36
|
+
@model_attributes << Rails::Generators::GeneratedAttribute.new('name', 'string')
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def create_model_file
|
42
|
+
template 'model.rb', "app/models/#{singular_name}.rb"
|
43
|
+
end
|
44
|
+
|
45
|
+
no_tasks do
|
46
|
+
def model_exists?
|
47
|
+
File.exist? destination_path("app/models/#{singular_name}.rb")
|
48
|
+
end
|
49
|
+
|
50
|
+
def singular_name
|
51
|
+
model_name.underscore
|
52
|
+
end
|
53
|
+
|
54
|
+
def plural_name
|
55
|
+
model_name.underscore.pluralize
|
56
|
+
end
|
57
|
+
|
58
|
+
def class_name
|
59
|
+
model_name.camelize
|
60
|
+
end
|
61
|
+
|
62
|
+
def plural_class_name
|
63
|
+
plural_name.camelize
|
64
|
+
end
|
65
|
+
|
66
|
+
def model_columns_for_attributes
|
67
|
+
class_name.constantize.columns.reject do |column|
|
68
|
+
column.name.to_s =~ /^(id|created_at|updated_at)$/
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
7
73
|
def self.source_root
|
8
74
|
@source_root ||= File.expand_path('../templates', __FILE__)
|
9
75
|
end
|
@@ -11,12 +77,7 @@ module MongoMapper
|
|
11
77
|
def self.banner
|
12
78
|
"#{$0} mongo_mapper:#{generator_name} #{self.arguments.map{ |a| a.usage }.join(' ')} [options]"
|
13
79
|
end
|
14
|
-
|
15
|
-
def create_model_file
|
16
|
-
template 'model.rb', File.join('app/models', class_path, "#{file_name}.rb")
|
17
|
-
end
|
18
|
-
|
19
|
-
# hook_for :test
|
80
|
+
|
20
81
|
end
|
21
82
|
end
|
22
83
|
end
|
@@ -1,12 +1,23 @@
|
|
1
|
-
require '
|
1
|
+
# require 'thor-ext'
|
2
|
+
require 'rails/generators/base'
|
2
3
|
|
3
4
|
module MongoMapper
|
4
5
|
module Generators
|
5
6
|
class SetupGenerator < Rails::Generators::Base
|
6
|
-
include
|
7
|
+
# include ThorExtensions
|
7
8
|
|
8
9
|
argument :database, :type => :string, :default => 'mongo_db_default'
|
9
10
|
|
11
|
+
# def configure_gems
|
12
|
+
# cleanup_gemfile
|
13
|
+
# add_gems %w{mongo_ext mongo mongo_mapper}
|
14
|
+
# end
|
15
|
+
|
16
|
+
def create_files
|
17
|
+
template "mongo_mapper_db_config.rb" , "config/initializers/mongo_mapper_db_config.rb"
|
18
|
+
puts "Please ensure Gemfile contains: gem 'mongo_mapper'"
|
19
|
+
end
|
20
|
+
|
10
21
|
def self.source_root
|
11
22
|
@source_root ||= File.expand_path('../templates', __FILE__)
|
12
23
|
end
|
@@ -15,13 +26,6 @@ module MongoMapper
|
|
15
26
|
"#{$0} mongo_mapper:#{generator_name} #{self.arguments.map{ |a| a.usage }.join(' ')} [options]"
|
16
27
|
end
|
17
28
|
|
18
|
-
def configure_gems
|
19
|
-
add_gems %w{mongo_ext mongo mongo_mapper}
|
20
|
-
end
|
21
|
-
|
22
|
-
def create_files
|
23
|
-
template "mongo_mapper_db_config.rb" , "config/initializers/mongo_mapper_db_config.rb"
|
24
|
-
end
|
25
29
|
|
26
30
|
end
|
27
31
|
end
|
@@ -1,8 +1,68 @@
|
|
1
|
+
require 'rails/generators/base'
|
2
|
+
|
1
3
|
module Mongoid
|
2
4
|
module Generators
|
3
|
-
class ModelGenerator < Rails::Generators::
|
5
|
+
class ModelGenerator < Rails::Generators::Base
|
6
|
+
argument :model_name, :type => :string, :required => true, :banner => 'ModelName'
|
4
7
|
argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
|
5
|
-
|
8
|
+
|
9
|
+
class_option :inherit, :type => :string, :aliases => "-I",
|
10
|
+
:desc => "Embed document by Inheriting"
|
11
|
+
|
12
|
+
|
13
|
+
attr_accessor :model_attributes
|
14
|
+
|
15
|
+
def initialize(*args, &block)
|
16
|
+
super
|
17
|
+
|
18
|
+
@model_attributes = []
|
19
|
+
|
20
|
+
attributes.each do |arg|
|
21
|
+
if arg.include?(':')
|
22
|
+
@model_attributes << Rails::Generators::GeneratedAttribute.new(*arg.split(':'))
|
23
|
+
else
|
24
|
+
@model_attributes << Rails::Generators::GeneratedAttribute.new(arg, "string")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
@model_attributes.uniq!
|
29
|
+
|
30
|
+
if @model_attributes.empty?
|
31
|
+
if model_exists?
|
32
|
+
model_columns_for_attributes.each do |column|
|
33
|
+
@model_attributes << Rails::Generators::GeneratedAttribute.new(column.name.to_s, column.type.to_s)
|
34
|
+
end
|
35
|
+
else
|
36
|
+
@model_attributes << Rails::Generators::GeneratedAttribute.new('name', 'string')
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def create_model_file
|
42
|
+
template 'model.rb', "app/models/#{singular_name}.rb"
|
43
|
+
end
|
44
|
+
|
45
|
+
no_tasks do
|
46
|
+
def model_exists?
|
47
|
+
File.exist? destination_path("app/models/#{singular_name}.rb")
|
48
|
+
end
|
49
|
+
def singular_name
|
50
|
+
model_name.underscore
|
51
|
+
end
|
52
|
+
|
53
|
+
def plural_name
|
54
|
+
model_name.underscore.pluralize
|
55
|
+
end
|
56
|
+
|
57
|
+
def class_name
|
58
|
+
model_name.camelize
|
59
|
+
end
|
60
|
+
|
61
|
+
def plural_class_name
|
62
|
+
plural_name.camelize
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
6
66
|
def self.source_root
|
7
67
|
@source_root ||= File.expand_path('../templates', __FILE__)
|
8
68
|
end
|
@@ -10,12 +70,7 @@ module Mongoid
|
|
10
70
|
def self.banner
|
11
71
|
"#{$0} mongoid:#{generator_name} #{self.arguments.map{ |a| a.usage }.join(' ')} [options]"
|
12
72
|
end
|
13
|
-
|
14
|
-
def create_model_file
|
15
|
-
template 'model.rb', File.join('app/models', class_path, "#{file_name}.rb")
|
16
|
-
end
|
17
|
-
|
18
|
-
# hook_for :test
|
73
|
+
|
19
74
|
end
|
20
75
|
end
|
21
76
|
end
|
@@ -1,12 +1,25 @@
|
|
1
|
-
require '
|
1
|
+
# require 'thor-ext'
|
2
|
+
require 'rails/generators/base'
|
2
3
|
|
3
4
|
module Mongoid
|
4
5
|
module Generators
|
5
6
|
class SetupGenerator < Rails::Generators::Base
|
6
|
-
include
|
7
|
+
# include ThorExtensions
|
7
8
|
|
8
9
|
argument :database, :type => :string, :default => 'mongo_db_default'
|
9
10
|
|
11
|
+
# def configure_gems
|
12
|
+
# cleanup_gemfile
|
13
|
+
# add_gems %w{mongo_ext mongo mongoid}
|
14
|
+
# end
|
15
|
+
|
16
|
+
def create_files
|
17
|
+
template "mongoid.rb" , "config/initializers/mongoid.rb"
|
18
|
+
template 'database.mongo.yml', "config/database.mongo.yml"
|
19
|
+
|
20
|
+
puts "Please ensure Gemfile contains: gem 'mongoid'"
|
21
|
+
end
|
22
|
+
|
10
23
|
def self.source_root
|
11
24
|
@source_root ||= File.expand_path('../templates', __FILE__)
|
12
25
|
end
|
@@ -15,15 +28,6 @@ module Mongoid
|
|
15
28
|
"#{$0} mongoid:#{generator_name} #{self.arguments.map{ |a| a.usage }.join(' ')} [options]"
|
16
29
|
end
|
17
30
|
|
18
|
-
def configure_gems
|
19
|
-
add_gems %w{mongo_ext mongo mongoid}
|
20
|
-
end
|
21
|
-
|
22
|
-
def create_files
|
23
|
-
template "mongoid.rb" , "config/initializers/mongoid.rb"
|
24
|
-
template 'database.mongo.yml', "config/database.mongo.yml"
|
25
|
-
end
|
26
|
-
|
27
31
|
end
|
28
32
|
end
|
29
33
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongo_db_gen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kristian Mandrup
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-02-
|
12
|
+
date: 2010-02-21 00:00:00 -05:00
|
13
13
|
default_executable: mongomap_model
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -50,11 +50,12 @@ files:
|
|
50
50
|
- bin/mongoid_setup
|
51
51
|
- bin/mongomapper_model
|
52
52
|
- bin/mongomapper_setup
|
53
|
-
- lib/generators/mongo_db_base.rb
|
54
53
|
- lib/generators/mongo_mapper/model/model_generator.rb
|
54
|
+
- lib/generators/mongo_mapper/model/templates/model.rb
|
55
55
|
- lib/generators/mongo_mapper/setup/setup_generator.rb
|
56
56
|
- lib/generators/mongo_mapper/setup/templates/mongo_mapper_db_config.rb
|
57
57
|
- lib/generators/mongoid/model/model_generator.rb
|
58
|
+
- lib/generators/mongoid/model/templates/model.rb
|
58
59
|
- lib/generators/mongoid/setup/setup_generator.rb
|
59
60
|
- lib/generators/mongoid/setup/templates/database.mongo.yml
|
60
61
|
- lib/generators/mongoid/setup/templates/mongoid.rb
|