rails3_assist 0.2.2

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.
Files changed (45) hide show
  1. data/.document +5 -0
  2. data/.gitignore +21 -0
  3. data/.rspec +1 -0
  4. data/LICENSE +20 -0
  5. data/README.markdown +63 -0
  6. data/Rakefile +21 -0
  7. data/VERSION +1 -0
  8. data/lib/rails3_assist/app/file_names.rb +34 -0
  9. data/lib/rails3_assist/app/methods/crud.rb +31 -0
  10. data/lib/rails3_assist/app/methods/new_content.rb +11 -0
  11. data/lib/rails3_assist/app/rails_dirs.rb +105 -0
  12. data/lib/rails3_assist/app/rails_files.rb +128 -0
  13. data/lib/rails3_assist/app.rb +47 -0
  14. data/lib/rails3_assist/artifact/markers.rb +39 -0
  15. data/lib/rails3_assist/artifact/migration.rb +24 -0
  16. data/lib/rails3_assist/artifact/orm.rb +136 -0
  17. data/lib/rails3_assist/artifact/view.rb +67 -0
  18. data/lib/rails3_assist/base/class_methods.rb +11 -0
  19. data/lib/rails3_assist/base/create.rb +48 -0
  20. data/lib/rails3_assist/base/file_name.rb +17 -0
  21. data/lib/rails3_assist/base/insert.rb +53 -0
  22. data/lib/rails3_assist/base/read.rb +19 -0
  23. data/lib/rails3_assist/base/remove.rb +14 -0
  24. data/lib/rails3_assist/base.rb +49 -0
  25. data/lib/rails3_assist/extensions/core_ext.rb +29 -0
  26. data/lib/rails3_assist/rspec/macro.rb +34 -0
  27. data/lib/rails3_assist.rb +21 -0
  28. data/rails3_assist.gemspec +107 -0
  29. data/rails_generator.log +14 -0
  30. data/spec/load_spec.rb +1 -0
  31. data/spec/rails3_assist/app/app_dirs_spec.rb +23 -0
  32. data/spec/rails3_assist/app/app_file_names_spec.rb +0 -0
  33. data/spec/rails3_assist/app/app_files_spec.rb +0 -0
  34. data/spec/rails3_assist/artifact/controller/controller_spec.rb +33 -0
  35. data/spec/rails3_assist/artifact/helper/helper_spec.rb +33 -0
  36. data/spec/rails3_assist/artifact/mailer/mailer_spec.rb +33 -0
  37. data/spec/rails3_assist/artifact/migration/migration_spec.rb +34 -0
  38. data/spec/rails3_assist/artifact/model/model_spec.rb +34 -0
  39. data/spec/rails3_assist/artifact/observer/observer_spec.rb +34 -0
  40. data/spec/rails3_assist/artifact/orm/active_record_spec.rb +33 -0
  41. data/spec/rails3_assist/artifact/orm/mongo_mapper_spec.rb +63 -0
  42. data/spec/rails3_assist/artifact/orm/mongoid_spec.rb +63 -0
  43. data/spec/rails3_assist/artifact/view_spec/view_spec.rb +32 -0
  44. data/spec/spec_helper.rb +43 -0
  45. metadata +168 -0
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
data/.gitignore ADDED
@@ -0,0 +1,21 @@
1
+ ## MAC OS
2
+ .DS_Store
3
+
4
+ ## TEXTMATE
5
+ *.tmproj
6
+ tmtags
7
+
8
+ ## EMACS
9
+ *~
10
+ \#*
11
+ .\#*
12
+
13
+ ## VIM
14
+ *.swp
15
+
16
+ ## PROJECT::GENERAL
17
+ coverage
18
+ rdoc
19
+ pkg
20
+
21
+ ## PROJECT::SPECIFIC
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color --format nested
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Kristian Mandrup
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/README.markdown ADDED
@@ -0,0 +1,63 @@
1
+ # Rails3 Assistant
2
+
3
+ Includes various helpers to assist operating on a Rails 3 application, including various Rails 3 artifacts, such as migrations etc.
4
+
5
+ ## Rails Artifacts
6
+
7
+ Rails assist also includes various artifact libraries to help operate on different Rails 3 artifacts.
8
+ These assist libraries mainly contain some common CRUD (Create, Read, Update, Delete) operations.
9
+ The same API is shared in all the artifact assist libraries.
10
+ The following is a list of the main API, including an alias for each method.
11
+
12
+ * create_[x] - new_[x])
13
+ * insert_into_[x] - update_[x]
14
+ * read_model - [x]_content
15
+ * remove_[x] - delete_[x]
16
+ * remove_[x]s - delete_[x]s
17
+
18
+ Rails 3 artifacts that have a CRUD assistant:
19
+
20
+ * controller
21
+ * helper
22
+ * mailer
23
+ * migration (pending!)
24
+ * model (insert bug!)
25
+ * observer
26
+ * view
27
+
28
+ ## Model
29
+
30
+ * create_model (new_model)
31
+ * insert_into_model (update_model)
32
+
33
+ Create and insert for *model* operate according to the ORM currently used.
34
+ The ORM used is specified by calling <code>use_orm :[orm]</code> fx <code>use_orm :active_record</code>
35
+
36
+ ### Usage
37
+
38
+ Generators are often designed to create Rails 3 artifacts or update existing artifacts. It's often useful to include one or more Rails 3 artifact assisters along
39
+ with a generator assister (see above).
40
+ This combination greatly facilitates your work in developing the generator, as much of the heavy lifting will be done for you in the assisters.
41
+ To use a helper, simply call:
42
+
43
+ *assist_with [list of helpers]*
44
+
45
+ Example:
46
+
47
+ <code>assist_with :app, :controller, :model, :view</code>
48
+
49
+ Aliases: *use_helpers* and *use_helper*
50
+
51
+ ## Note on Patches/Pull Requests
52
+
53
+ * Fork the project.
54
+ * Make your feature addition or bug fix.
55
+ * Add tests for it. This is important so I don't break it in a
56
+ future version unintentionally.
57
+ * Commit, do not mess with rakefile, version, or history.
58
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
59
+ * Send me a pull request. Bonus points for topic branches.
60
+
61
+ ## Copyright
62
+
63
+ Copyright (c) 2010 Kristian Mandrup. See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1,21 @@
1
+ begin
2
+ require 'jeweler'
3
+ Jeweler::Tasks.new do |gem|
4
+ gem.name = "rails3_assist"
5
+ gem.summary = %Q{Assist in operating on Rails 3 artifacts including migrations}
6
+ gem.description = %Q{Assist in operating on Rails 3 artifacts including migrations}
7
+ gem.email = "kmandrup@gmail.com"
8
+ gem.homepage = "http://github.com/kristianmandrup/rails3-assist"
9
+ gem.authors = ["Kristian Mandrup"]
10
+ gem.add_development_dependency "rspec", ">= 2.0.0.beta.19"
11
+ # gem.add_development_dependency "generator-rspec", ">= 0.6.0"
12
+ gem.add_dependency "require_all", ">= 1.1.0"
13
+ gem.add_dependency "migration_assist", ">= 0.1.2"
14
+
15
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
16
+ end
17
+ Jeweler::GemcutterTasks.new
18
+ rescue LoadError
19
+ puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
20
+ end
21
+
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.2.2
@@ -0,0 +1,34 @@
1
+ module Rails::Assist
2
+ module View
3
+ module FileName
4
+ def view_file_name folder, action=nil, type=nil
5
+ File.join(view_dir, folder.to_s, "#{get_action action}.#{get_type type}")
6
+ end
7
+ end
8
+ end
9
+
10
+ module Migration
11
+ module FileName
12
+ def migration_file_name name, options={}
13
+ number = options[:number]
14
+ number = next_migration_number(migration_dir) if !number
15
+ File.join(migration_dir, "#{number}_#{name}.rb")
16
+ end
17
+ end
18
+ end
19
+
20
+ (Rails::Assist.artifacts. - [:migration, :view]).each do |name|
21
+ class_eval %{
22
+ module #{name.to_s.camelize}
23
+ module FileName
24
+
25
+ def #{name}_file_name name, options=nil
26
+ artifact_path name, :#{name}
27
+ end
28
+ end
29
+
30
+ include FileName
31
+ end
32
+ }
33
+ end
34
+ end
@@ -0,0 +1,31 @@
1
+ module Rails::Assist
2
+ artifacts.each do |name|
3
+ class_eval %{
4
+ module #{name.to_s.camelize}
5
+ include Rails::Assist::BaseHelper
6
+
7
+ def create_#{name} name, options={}, &block
8
+ create_artifact(name, set(options, :#{name}), &block)
9
+ end
10
+
11
+ def insert_into_#{name}(name, options={}, &block)
12
+ insert_content(name, set(options, :#{name}), &block)
13
+ end
14
+
15
+ def read_#{name}(name, options={}, &block)
16
+ read_artifact(name, set(options, :#{name}), &block)
17
+ end
18
+
19
+ def remove_#{name} name
20
+ remove_artifact name, :#{name}
21
+ end
22
+
23
+ def remove_#{name}s *names
24
+ remove_artifacts :#{name}, *names
25
+ end
26
+
27
+ aliases_for :#{name}
28
+ end
29
+ }
30
+ end
31
+ end
@@ -0,0 +1,11 @@
1
+ module Rails::Assist
2
+ (artifacts - [:migration, :model]).each do |name|
3
+ class_eval %{
4
+ module #{name.to_s.camelize}
5
+ def new_#{name}_content name, content=nil, &block
6
+ new_artifact_content name, :#{name}, content, &block
7
+ end
8
+ end
9
+ }
10
+ end
11
+ end
@@ -0,0 +1,105 @@
1
+ module Rails::Assist
2
+ module App
3
+ class << self
4
+ attr_accessor :rails_root_dir
5
+ end
6
+
7
+ module RailsDirs
8
+ def self.root_directories
9
+ [:app, :config, :db, :public, :lib, :log, :doc, :test, :spec]
10
+ end
11
+
12
+ def root_directories
13
+ Rails::Assist::App::RailsDirs.root_directories
14
+ end
15
+
16
+ def self.app_artifacts
17
+ [:controller, :mailer, :helper, :view, :model]
18
+ end
19
+
20
+ def self.app_directories
21
+ app_artifacts.map {|a| a.to_s.singularize.to_sym}
22
+ end
23
+
24
+ def app_directories
25
+ Rails::Assist::App::RailsDirs.app_directories
26
+ end
27
+
28
+ def app_artifacts
29
+ Rails::Assist::App::RailsDirs.app_artifacts
30
+ end
31
+
32
+ def self.rails_containers
33
+ Rails::Assist::App::RailsDirs.instance_methods.grep(/_dir$/).map{|dir| dir.gsub(/^(.*)_dir/, '\1').to_sym }
34
+ end
35
+
36
+ def self.valid_container? type
37
+ rails_containers.include?(type)
38
+ end
39
+
40
+ def root_dir
41
+ dir = Rails::Assist::App.rails_root_dir
42
+ raise "You must set the Rails app root dir: Rails::Assist::App.root_dir = '/my/root/dir'" if !dir
43
+ dir
44
+ end
45
+
46
+ def rails_dir_for type
47
+ raise ArgumentError, '#rails_dir_for takes a dir type argument' if !type
48
+ dir_method = "#{type}_dir"
49
+ self.send(dir_method) if respond_to?(dir_method)
50
+ end
51
+
52
+ def migration_dir
53
+ File.join(db_dir, 'migrations')
54
+ end
55
+
56
+ def config_dir_for type
57
+ File.join(config_dir, type.to_s)
58
+ end
59
+
60
+ def initializer_dir
61
+ config_dir_for type :initializers
62
+ end
63
+
64
+ def locale_dir
65
+ config_dir_for type :locales
66
+ end
67
+
68
+ def public_dir_for type
69
+ File.join(public_dir, type.to_s)
70
+ end
71
+
72
+ def stylesheet_dir
73
+ public_dir_for :stylesheets
74
+ end
75
+
76
+ def javascript_dir
77
+ public_dir_for :javascripts
78
+ end
79
+
80
+ root_directories.each do |name|
81
+ class_eval %{
82
+ def #{name}_dir
83
+ File.join(root_dir, '#{name}')
84
+ end
85
+ }
86
+ end
87
+
88
+ app_artifacts.each do |name|
89
+ class_eval %{
90
+ def #{name}_dir
91
+ File.join(app_dir, '#{name}')
92
+ end
93
+ }
94
+ end
95
+
96
+ def app_dir
97
+ File.join(root_dir, 'app')
98
+ end
99
+
100
+ def observer_dir
101
+ model_dir
102
+ end
103
+ end # RailsDirs
104
+ end # App
105
+ end
@@ -0,0 +1,128 @@
1
+ module Rails::Assist
2
+ module App
3
+ module RailsFiles
4
+
5
+ def files_from expr, *types
6
+ types.inject([]) {|files, type| files + self.send(:"#{type}_files", expr)}
7
+ end
8
+
9
+ def all_files expr=nil
10
+ rails_files(root_dir).grep expr
11
+ end
12
+
13
+ def app_files expr=nil
14
+ rails_app_files.grep expr
15
+ end
16
+
17
+ def rails_files_for type, expr=nil, &block
18
+ files_method = "#{type}_files"
19
+ send files_method, expr, &block if respond_to?(files_method)
20
+ end
21
+
22
+ def self.rails_artifacts
23
+ @rails_artifacts ||= Rails::Assist::RailsDirs.instance_methods.grep(/_files$/).map{|dir| dir.gsub(/^(.*)_dir/, '\1').to_sym }
24
+ end
25
+
26
+ def self.valid_artifact? type
27
+ rails_artifacts.include?(type)
28
+ end
29
+
30
+ [:model, :controller, :helper].each do |name|
31
+ class_eval %{
32
+ def #{name}_files expr=nil
33
+ files = rails_app_files(:#{name.to_s.pluralize}).grep expr
34
+ yield files if block_given?
35
+ end
36
+ }
37
+ end
38
+
39
+ [:mailer, :observer].each do |name|
40
+ class_eval %{
41
+ def #{name}_files expr=nil
42
+ files = rails_app_files(:#{name.to_s.pluralize}, '**/*_#{name}.rb').grep expr
43
+ yield files if block_given?
44
+ end
45
+ }
46
+ end
47
+
48
+ def view_files *args
49
+ expr, model_name = get_view_args args
50
+ file_expr = model_name ? "#{model_name}/*.*" : '**/*.*'
51
+ files = rails_app_files(:views, file_expr).grep expr
52
+ yield files if block_given?
53
+ end
54
+
55
+
56
+ [:erb, :haml].each do |name|
57
+ class_eval %{
58
+ def #{name}_view_files *args
59
+ expr, model_name = get_view_args(args)
60
+ file_expr = model_name ? "\#{model_name}/*.\#{name}*" : '**/*.\#{name}*'
61
+ files = rails_app_files(:views, file_expr).grep expr
62
+ yield files if block_given?
63
+ end
64
+ }
65
+ end
66
+
67
+ [:initializer, :db, :migration].each do |name|
68
+ class_eval %{
69
+ def #{name}_files expr=nil
70
+ files = rails_files(#{name}_dir).grep expr
71
+ yield files if block_given?
72
+ end
73
+ }
74
+ end
75
+
76
+ {:locale => :yml, :javascript => :js}.each_pair do |name, ext|
77
+ class_eval %{
78
+ def #{name}_files expr=nil
79
+ files = rails_files(#{name}_dir, '**/*.#{ext}').grep expr
80
+ yield files if block_given?
81
+ end
82
+ }
83
+ end
84
+
85
+ [:css, :sass].each do |ext|
86
+ class_eval %{
87
+ def #{ext}_files expr=nil
88
+ files = rails_files(stylesheet_dir, '**/*.#{ext}').grep expr
89
+ yield files if block_given?
90
+ end
91
+ }
92
+ end
93
+
94
+ protected
95
+
96
+ RB_FILES = '**/*.rb'
97
+
98
+ def get_view_args args
99
+ args = args.flatten
100
+ first_arg = args.first
101
+ case first_arg
102
+ when Regexp
103
+ expr = first_arg
104
+ when String, Symbol
105
+ _model = first_arg
106
+ end
107
+ expr = args[1] if args > 1 && args1.kind_of?(Regexp)
108
+ [expr, _model]
109
+ end
110
+
111
+ def rails_files dir, type=nil, pattern=nil
112
+ path = case type
113
+ when nil
114
+ "#{dir}/#{RB_FILES}"
115
+ when String
116
+ "#{dir}/#{type}"
117
+ when Symbol
118
+ pattern ? "#{dir}/#{type}/#{pattern}" : "#{dir}/#{type}"
119
+ end
120
+ FileList[path]
121
+ end
122
+
123
+ def rails_app_files type=nil, pattern='**/*.rb'
124
+ rails_files :app, type, pattern
125
+ end
126
+ end
127
+ end # App
128
+ end
@@ -0,0 +1,47 @@
1
+ module Rails::Assist
2
+ def self.helper_list
3
+ self.artifacts + [:view]
4
+ end
5
+
6
+ module ArtifactPath
7
+ def artifact_path name, type, dir=nil
8
+ dir ||= send :"#{type}_dir"
9
+ File.join(dir, "#{name}#{type_postfix type}.rb")
10
+ end
11
+
12
+ def type_postfix type
13
+ "_#{type}" if ![:model].include?(type)
14
+ end
15
+ end
16
+
17
+ module App
18
+ include ArtifactPath
19
+
20
+ def create_empty_tmp *dir_types
21
+ dir_types.flatten.each do |dir_type|
22
+ dir = rails_dir_for(dir_type)
23
+ FileUtils.mkdir_p dir
24
+ end
25
+ end
26
+ end
27
+
28
+ end
29
+
30
+ # first load all base modules that the app helper will build upon
31
+ require 'rails3_assist/base'
32
+
33
+ # then load the app 'modules'
34
+ require_all File.dirname(__FILE__) + '/app'
35
+
36
+ # into App
37
+ module Rails::Assist::App
38
+ include RailsFiles
39
+ include RailsDirs
40
+
41
+ # put all FileName modules into App
42
+ Rails::Assist.artifacts.each do |name|
43
+ class_eval %{
44
+ include Rails::Assist::#{name.to_s.camelize}::FileName
45
+ }
46
+ end
47
+ end
@@ -0,0 +1,39 @@
1
+ module Rails::Assist
2
+ module Controller
3
+ def controller_marker name, options=nil
4
+ "#{name.to_s.camelize}Controller < ActionController::Base"
5
+ end
6
+ end
7
+
8
+ module Helper
9
+ def helper_marker name, options=nil
10
+ "#{name.to_s.camelize}Helper"
11
+ end
12
+ end
13
+
14
+ module Mailer
15
+ def mailer_marker name, options=nil
16
+ "#{name.to_s.camelize} < ActionMailer::Base"
17
+ end
18
+ end
19
+
20
+ module Observer
21
+ def observer_marker name, options=nil
22
+ "#{name.to_s.camelize}Observer < ActiveRecord::Observer"
23
+ end
24
+ end
25
+
26
+ module Model
27
+ include Rails::Assist::BaseHelper
28
+
29
+ def model_marker name, options={}
30
+ return send :orm_marker_name, options if respond_to?(:orm_marker_name)
31
+ name.camelize
32
+ end
33
+
34
+ def orm_notify
35
+ ". You must specify an ORM with the macro use_orm, f.ex -- use_orm :active_record"
36
+ end
37
+ end
38
+
39
+ end
@@ -0,0 +1,24 @@
1
+ require 'migration_assist'
2
+
3
+ Rails::Migration::Assist.rails_root_dir = Rails::Assist::App.rails_root_dir
4
+
5
+ module Rails::Assist
6
+ module Migration
7
+ include Rails::Assist::BaseHelper
8
+ include Rails::Migration::Assist::ClassMethods
9
+
10
+ include FileName
11
+
12
+ def find_migration name, option=nil
13
+ migrations = Dir.glob("#{migration_dir}/[0-9]*_*.rb")
14
+ return nil if !migrations.empty?
15
+ matching_migrations = migrations.grep(/\d+_#{name}\.rb$/)
16
+ return nil if matching_migrations.empty?
17
+ migration_file = (option == :last) ? matching_migrations.last : matching_migrations.first
18
+ end
19
+
20
+ def migration_marker name, options=nil
21
+ "#{name.to_s.camelize} < ActiveRecord::Migration"
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,136 @@
1
+ module Rails::Assist
2
+ module Orm
3
+ module Base
4
+ include Rails::Assist::Model
5
+
6
+ protected
7
+
8
+ def orm_marker_name options = {:model_type => :document}
9
+ document_name options
10
+ end
11
+
12
+ def document_name options = {:model_type => :document}
13
+ type_content = options[:model_type] == :embedded ? "#{orm_name}::EmbeddedDocument" : "#{orm_name}::Document"
14
+ end
15
+
16
+ def clazz name
17
+ "class #{name.to_s.camelize}"
18
+ end
19
+
20
+ def file name, include_stmt, &block
21
+ %Q{#{clazz name}
22
+ #{include_stmt}
23
+ #{yield if block}
24
+ end}
25
+ end
26
+
27
+ def file_w_include name, module_name, &block
28
+ file name, "include #{module_name}", &block
29
+ end
30
+
31
+ def simple_file name, module_name, &block
32
+ %Q{#{clazz name}
33
+ #{yield if block}
34
+ end}
35
+ end
36
+
37
+ def file_w_inherit name, module_name, &block
38
+ %Q{#{clazz name} < #{module_name}
39
+ #{yield if block}
40
+ end}
41
+ end
42
+
43
+ def field name, type = nil
44
+ return "#{field_name} :#{name}, #{type}" if type
45
+ "#{field_name} :#{name}"
46
+ end
47
+ end
48
+
49
+ module None
50
+ include Rails::Assist::Orm::Base
51
+
52
+ def orm_marker_name options=nil
53
+ @name
54
+ end
55
+
56
+ def new_model_content name, options={}, &block
57
+ content = options[:content] || yield if block
58
+ @name = name
59
+ simple_file(name, orm_marker_name(options)) { content }
60
+ end
61
+ end
62
+
63
+ module ActiveRecord
64
+ include Rails::Assist::Orm::Base
65
+
66
+ def orm_marker_name options=nil
67
+ 'ActiveRecord::Base'
68
+ end
69
+
70
+ def new_model_content name, options={}, &block
71
+ content = options[:content] || yield if block
72
+ file_w_inherit(name, orm_marker_name(options)) { content }
73
+ end
74
+ end
75
+
76
+ module MongoMapper
77
+ include Rails::Assist::Orm::Base
78
+
79
+ def orm_name
80
+ 'MongoMapper'
81
+ end
82
+
83
+ def new_model_content name, options={}, &block
84
+ content = options[:content] || yield if block
85
+ file_w_include(name, orm_marker_name(options)) { content }
86
+ end
87
+
88
+ def field_name
89
+ 'key'
90
+ end
91
+ end
92
+
93
+ module Mongoid
94
+ include Rails::Assist::Orm::Base
95
+
96
+ def orm_name
97
+ 'Mongoid'
98
+ end
99
+
100
+ def field_name
101
+ 'field'
102
+ end
103
+
104
+ def new_model_content name, options={}, &block
105
+ content = options[:content] || yield if block
106
+ file_w_include(name, orm_marker_name(options)) { content }
107
+ end
108
+
109
+ def field name, type = nil
110
+ return "#{field_name} :#{name}, :type => #{type}" if type
111
+ "#{field_name} :#{name}"
112
+ end
113
+ end
114
+
115
+ module DataMapper
116
+ include Rails::Assist::Orm::Base
117
+
118
+ def orm_name
119
+ 'DataMapper'
120
+ end
121
+
122
+ def orm_marker_name options=nil
123
+ "#{orm_name}::Resource"
124
+ end
125
+
126
+ def new_model_content name, options={}, &block
127
+ content = options[:content] || yield if block
128
+ file_w_include(name, orm_marker_name(options)) { content }
129
+ end
130
+
131
+ def field_name
132
+ 'property'
133
+ end
134
+ end
135
+ end
136
+ end