rails3-generators 0.10.3 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. data/.bundle/config +2 -0
  2. data/CHANGELOG.rdoc +18 -2
  3. data/README.rdoc +5 -1
  4. data/Rakefile +5 -2
  5. data/VERSION +1 -1
  6. data/lib/generators/{datamapper.rb → data_mapper.rb} +6 -3
  7. data/lib/generators/{datamapper → data_mapper}/migration/migration_generator.rb +2 -2
  8. data/lib/generators/{datamapper → data_mapper}/migration/templates/migration.rb +0 -0
  9. data/lib/generators/{datamapper → data_mapper}/model/model_generator.rb +27 -3
  10. data/lib/generators/{datamapper → data_mapper}/model/templates/migration.rb +0 -0
  11. data/lib/generators/{datamapper → data_mapper}/model/templates/model.rb +4 -2
  12. data/lib/generators/{datamapper → data_mapper}/observer/observer_generator.rb +2 -2
  13. data/lib/generators/{datamapper → data_mapper}/observer/templates/observer.rb +1 -1
  14. data/lib/generators/helpers/migration_helper.rb +53 -0
  15. data/lib/generators/helpers/model_helper.rb +75 -0
  16. data/lib/generators/jquery/install/install_generator.rb +6 -6
  17. data/lib/generators/jquery/install/templates/README +10 -0
  18. data/lib/generators/{mongomapper.rb → mongo_mapper.rb} +3 -24
  19. data/lib/generators/mongo_mapper/install/install_generator.rb +30 -0
  20. data/lib/generators/mongo_mapper/install/templates/database.mongo.yml +25 -0
  21. data/lib/generators/mongo_mapper/install/templates/mongo_mapper.rb +9 -0
  22. data/lib/generators/mongo_mapper/model/model_generator.rb +84 -0
  23. data/lib/generators/mongo_mapper/model/templates/model.rb +36 -0
  24. data/lib/generators/{mongomapper → mongo_mapper}/observer/observer_generator.rb +2 -2
  25. data/lib/generators/mongo_mapper/observer/templates/observer.rb +3 -0
  26. data/lib/generators/mongoid.rb +24 -0
  27. data/lib/generators/mongoid/install/install_generator.rb +35 -0
  28. data/lib/generators/mongoid/install/templates/database.mongo.yml +25 -0
  29. data/lib/generators/mongoid/install/templates/mongoid.rb +12 -0
  30. data/lib/generators/mongoid/model/model_generator.rb +111 -0
  31. data/lib/generators/{mongomapper → mongoid}/model/templates/model.rb +11 -9
  32. data/lib/generators/mustache/install/templates/lib/mustache_rails.rb +1 -3
  33. data/lib/rails3-generators.rb +1 -1
  34. data/rails3-generators.gemspec +60 -29
  35. data/test/lib/generators/data_mapper/migration_generator_test.rb +40 -0
  36. data/test/lib/generators/data_mapper/model_generator_test.rb +53 -0
  37. data/test/lib/generators/data_mapper/observer_generator_test.rb +22 -0
  38. data/test/lib/generators/haml/controller_generator_test.rb +1 -0
  39. data/test/lib/generators/haml/install_generator_test.rb +1 -0
  40. data/test/lib/generators/haml/scaffold_generator_test.rb +1 -0
  41. data/test/lib/generators/haml/testing_helper.rb +1 -0
  42. data/test/lib/generators/jquery/install_generator_test.rb +0 -1
  43. data/test/lib/generators/mongo_mapper/install_generator_test.rb +17 -0
  44. data/test/lib/generators/mongo_mapper/model_generator_test.rb +73 -0
  45. data/test/lib/generators/mongo_mapper/observer_generator_test.rb +20 -0
  46. data/test/lib/generators/mongo_mapper/testing_helper.rb +1 -0
  47. data/test/lib/generators/mongoid/install_generator_test.rb +18 -0
  48. data/test/lib/generators/mongoid/model_generator_test.rb +72 -0
  49. data/test/lib/generators/mongoid/testing_helper.rb +1 -0
  50. data/test/lib/generators/mustache/controller_generator_test.rb +1 -0
  51. data/test/lib/generators/mustache/scaffold_generator_test.rb +1 -0
  52. data/test/lib/generators/mustache/testing_helper.rb +1 -0
  53. data/test/test_helper.rb +31 -28
  54. metadata +61 -30
  55. data/lib/generators/jquery/install/templates/config/initializers/jquery.rb.tt +0 -9
  56. data/lib/generators/mongomapper/model/model_generator.rb +0 -29
  57. data/test/lib/generators/datamapper/migration_generator_test.rb +0 -13
  58. data/test/lib/generators/datamapper/model_generator_test.rb +0 -13
  59. data/test/lib/generators/datamapper/observer_generator_test.rb +0 -13
  60. data/test/lib/generators/mongomapper/model_generator_test.rb +0 -13
  61. data/test/lib/generators/mongomapper/observer_generator_test.rb +0 -13
data/.bundle/config ADDED
@@ -0,0 +1,2 @@
1
+ ---
2
+ BUNDLE_WITHOUT: ""
data/CHANGELOG.rdoc CHANGED
@@ -1,8 +1,24 @@
1
1
  == TODO
2
2
  * Grow Mustache up.(fix the TODOs and move the source to a mustache-rails like gem)
3
3
  * Write some documentation. (In both the github wiki and the source code)
4
- * Datamapper Tests
5
- * Mongomapper Tests
4
+
5
+ == 0.11.0
6
+ * enhancements
7
+ * Added new mongo_mapper generator for mongo mapper 0.8 with lots of extra features [Kristian Mandrup]
8
+ * Added mongoid generator for mongoid 2.0.beta with features similar to new mongo_mapper [Kristian Mandrup]
9
+
10
+ * optimize
11
+ * renamed datamapper to data_mapper
12
+ * renamed mongomapper to mongo_mapper.
13
+
14
+ * fix
15
+ * added DataMapper Tests
16
+ * added MongoMapper Tests
17
+
18
+ == 0.10.4
19
+ * optimize
20
+ * Update jquery install by removing unneeded initializer file
21
+ * Update mustache_rails to user autoload_paths instead of load_paths
6
22
 
7
23
  == 0.10.3
8
24
  * optimize
data/README.rdoc CHANGED
@@ -38,7 +38,11 @@ Factory Girl: Paul Barry
38
38
 
39
39
  Authlogic: Jeff Tucker
40
40
 
41
- MongoMapper: Jai-Gouk Kim
41
+ Mongomapper: Jai-Gouk Kim
42
+
43
+ MongoMapper: Kristian Mandrup (for 0.8) - needs testing
44
+
45
+ Mongoid: Kristian Mandrup (for 2.0.beta) - needs testing
42
46
 
43
47
  Machinist: Darcy Laycock
44
48
 
data/Rakefile CHANGED
@@ -9,16 +9,19 @@ begin
9
9
 
10
10
  gem.name = "rails3-generators"
11
11
  gem.summary = %Q{Rails 3 compatible generators}
12
- gem.description = %Q{Rails 3 compatible generators for DataMapper, Haml, Factory-girl, Authlogic, Mongomapper, Shoulda, Formtastic and SimpleForm}
12
+ gem.description = %Q{Rails 3 compatible generators for DataMapper, Haml, Factory-girl, Authlogic, Mongomapper, Mongoid, Shoulda, Formtastic and SimpleForm}
13
13
  gem.email = "andre@arko.net"
14
14
  gem.homepage = "http://github.com/indirect/rails3-generators"
15
- gem.authors = ["Jose Valim", "Anuj Dutta", "Paul Berry", "Jeff Tucker", "Louis T.", "Jai-Gouk Kim", "Darcy Laycock", "Peter Haza", "Peter Gumeson"]
15
+ gem.authors = ["Jose Valim", "Anuj Dutta", "Paul Berry", "Jeff Tucker", "Louis T.", "Jai-Gouk Kim", "Darcy Laycock", "Peter Haza", "Peter Gumeson", "Kristian Mandrup"]
16
16
  # gem.add_development_dependency "rspec", ">= 1.2.9"
17
17
  gem.post_install_message =
18
18
  %Q{
19
19
  rails3-generators-#{version}
20
20
  Be sure to check out the wiki, http://wiki.github.com/indirect/rails3-generators/,
21
21
  for information about recent changes to this project.
22
+
23
+ note: ORM :datamapper has been renamed to :data_mapper
24
+ note: ORM :mongomapper has been renamed to :mongo_mapper
22
25
 
23
26
  note: if you use erb templates add the follow to your generators block to take full advantage of this gem.
24
27
  g.template_engine :erubis
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.10.3
1
+ 0.11.0
@@ -2,14 +2,17 @@ require 'rails/generators/named_base'
2
2
  require 'rails/generators/migration'
3
3
  require 'rails/generators/active_model'
4
4
 
5
- module Datamapper
5
+ require 'generators/helpers/migration_helper'
6
+
7
+ module DataMapper
6
8
  module Generators
7
9
  class Base < Rails::Generators::NamedBase #:nodoc:
8
- include Rails::Generators::Migration
10
+ include Rails3Generators::MigrationHelper
11
+ # include Rails::Generators::Migration
9
12
 
10
13
  def self.source_root
11
14
  @_datamapper_source_root ||= File.expand_path(File.join(File.dirname(__FILE__),
12
- 'datamapper', generator_name, 'templates'))
15
+ 'data_mapper', generator_name, 'templates'))
13
16
  end
14
17
 
15
18
  protected
@@ -1,6 +1,6 @@
1
- require 'generators/datamapper'
1
+ require 'generators/data_mapper'
2
2
 
3
- module Datamapper
3
+ module DataMapper
4
4
  module Generators
5
5
  class MigrationGenerator < Base
6
6
  argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
@@ -1,6 +1,6 @@
1
- require 'generators/datamapper'
1
+ require 'generators/data_mapper'
2
2
 
3
- module Datamapper
3
+ module DataMapper
4
4
  module Generators
5
5
  class ModelGenerator < Base
6
6
  argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
@@ -13,7 +13,7 @@ module Datamapper
13
13
  class_option :parent, :type => :string, :desc => "The parent class for the generated model"
14
14
 
15
15
  def create_migration_file
16
- if options[:migration] && options[:parent].nil?
16
+ if migration? && parent?
17
17
  file_name = "create_#{file_path.gsub(/\//, '_').pluralize}"
18
18
  migration_template "migration.rb", "db/migrate/#{file_name}.rb"
19
19
  end
@@ -23,6 +23,30 @@ module Datamapper
23
23
  template 'model.rb', File.join('app/models', class_path, "#{file_name}.rb")
24
24
  end
25
25
 
26
+ protected
27
+
28
+ def migration?
29
+ options[:migration]
30
+ end
31
+
32
+ def timestamps?
33
+ options[:timestamps]
34
+ end
35
+
36
+ def parent?
37
+ options[:parent]
38
+ end
39
+
40
+ def timestamp_statements
41
+ %q{
42
+ property :created_at, DateTime
43
+ # property :created_on, Date
44
+
45
+ property :updated_at, DateTime
46
+ # property :updated_on, Date
47
+ }
48
+ end
49
+
26
50
  hook_for :test_framework
27
51
  end
28
52
  end
@@ -1,5 +1,5 @@
1
- class <%= class_name %><%= "< #{options[:parent].classify}" if options[:parent] %>
2
- <% unless options[:parent] -%>
1
+ class <%= class_name %><%= "< #{options[:parent].classify}" if parent? %>
2
+ <% unless parent? -%>
3
3
  include DataMapper::Resource
4
4
 
5
5
  property :id, Serial
@@ -7,4 +7,6 @@ class <%= class_name %><%= "< #{options[:parent].classify}" if options[:parent]
7
7
  <% attributes.each do |attribute| -%>
8
8
  property :<%= attribute.name %>, <%= attribute.type_class %>
9
9
  <% end -%>
10
+
11
+ <%= timestamp_statements if timestamps? %>
10
12
  end
@@ -1,6 +1,6 @@
1
- require 'generators/datamapper'
1
+ require 'generators/data_mapper'
2
2
 
3
- module Datamapper
3
+ module DataMapper
4
4
  module Generators
5
5
  class ObserverGenerator < Base
6
6
  check_class_collision :suffix => "Observer"
@@ -1,5 +1,5 @@
1
1
  class <%= class_name %>Observer
2
2
  include DataMapper::Observer
3
3
 
4
- observe <%= class_name >
4
+ observe <%= class_name %>
5
5
  end
@@ -0,0 +1,53 @@
1
+ require 'rails/generators/migration'
2
+
3
+ module Rails3Generators
4
+ module MigrationHelper
5
+ include Rails::Generators::Migration
6
+
7
+ attr_accessor :migration_number
8
+
9
+ module ClassMethods
10
+ def migration_lookup_at(dirname) #:nodoc:
11
+ Dir.glob("#{dirname}/[0-9]*_*.rb")
12
+ end
13
+
14
+ def migration_exists?(dirname, file_name) #:nodoc:
15
+ migration_lookup_at(dirname).grep(/\d+_#{file_name}.rb$/).first
16
+ end
17
+
18
+ def current_migration_number(dirname) #:nodoc:
19
+ migration_lookup_at(dirname).collect do |file|
20
+ File.basename(file).split("_").first.to_i
21
+ end.max.to_i
22
+ end
23
+
24
+ def next_migration_number(dirname) #:nodoc:
25
+ orm = Rails.configuration.generators.options[:rails][:orm]
26
+ require "rails/generators/#{orm}"
27
+ "#{orm.to_s.camelize}::Generators::Base".constantize.next_migration_number(dirname)
28
+ rescue
29
+ raise NotImplementedError
30
+ end
31
+ end
32
+
33
+ def self.included(base) #:nodoc:
34
+ base.extend ClassMethods
35
+ end
36
+
37
+
38
+ def run_migration(options)
39
+ run "rails g migration #{options}"
40
+ end
41
+
42
+ protected
43
+
44
+ def model_exists?(name)
45
+ File.exists?(File.join(Rails.root, "app/models/#{name}.rb"))
46
+ end
47
+
48
+ def model_file(name)
49
+ File.join(Rails.root, "app/models/#{name}.rb")
50
+ end
51
+ end
52
+ end
53
+
@@ -0,0 +1,75 @@
1
+ module Rails3Generators
2
+ module Helpers
3
+ module Model
4
+
5
+ attr_accessor :model_attributes, :model_indexes
6
+
7
+ def parse_model_attributes(with_indexes = true)
8
+ @model_attributes = []
9
+ @model_indexes = {}
10
+ #
11
+ # attributes.each do |arg|
12
+ # if with_indexes
13
+ # # extract index markers
14
+ # if arg.include?('#')
15
+ # arg.gsub! /#.*$/, ''
16
+ # model_indexes[arg_name(arg).to_sym] = true
17
+ # end
18
+ # end
19
+ #
20
+ # if arg.include?(':')
21
+ # model_attributes << Rails::Generators::GeneratedAttribute.new(*arg.split(':'))
22
+ # else
23
+ # model_attributes << Rails::Generators::GeneratedAttribute.new(arg, "string")
24
+ # end
25
+ #
26
+ # model_attributes.uniq!
27
+ #
28
+ # if model_attributes.empty?
29
+ # if model_exists?
30
+ # model_columns_for_attributes.each do |column|
31
+ # model_attributes << Rails::Generators::GeneratedAttribute.new(column.name.to_s, column.type.to_s)
32
+ # end
33
+ # else
34
+ # model_attributes << Rails::Generators::GeneratedAttribute.new('name', 'string')
35
+ # end
36
+ # end
37
+ # end
38
+ end
39
+
40
+ def arg_name(arg)
41
+ arg.split(':').first
42
+ end
43
+
44
+ def arg_type(arg)
45
+ arg.split(':')[1] || 'string'
46
+ end
47
+
48
+ def model_name
49
+ name
50
+ end
51
+
52
+ def model_exists?
53
+ File.exist? destination_path("app/models/#{singular_name}.rb")
54
+ end
55
+
56
+ def singular_name
57
+ model_name.underscore
58
+ end
59
+
60
+ def plural_name
61
+ model_name.underscore.pluralize
62
+ end
63
+
64
+ def class_name
65
+ model_name.camelize
66
+ end
67
+
68
+ def plural_class_name
69
+ plural_name.camelize
70
+ end
71
+ end
72
+ end
73
+ end
74
+
75
+
@@ -5,13 +5,9 @@ module Jquery
5
5
  class InstallGenerator < Rails::Generators::Base
6
6
  extend TemplatePath
7
7
 
8
- def copy_initializer_files
9
- template "config/initializers/jquery.rb.tt", "config/initializers/jquery.rb"
10
- end
11
-
12
8
  def download_jquery_files
13
- %w(controls.js dragdrop.js effects.js prototype.js rails.js).each do |prototype|
14
- remove_file "public/javascripts/#{prototype}"
9
+ %w(controls.js dragdrop.js effects.js prototype.js rails.js).each do |js|
10
+ remove_file "public/javascripts/#{js}"
15
11
  end
16
12
 
17
13
  # Downloading latest jQuery.min
@@ -20,6 +16,10 @@ module Jquery
20
16
  # Downloading latest jQuery drivers
21
17
  get "http://github.com/rails/jquery-ujs/raw/master/src/rails.js", "public/javascripts/rails.js"
22
18
  end
19
+
20
+ def show_readme
21
+ readme "README"
22
+ end
23
23
  end
24
24
  end
25
25
  end
@@ -0,0 +1,10 @@
1
+
2
+ ===============================================================================
3
+
4
+ Some manual steps you have to do
5
+
6
+ 1. Uncomment or add the following to you application.rb file:
7
+
8
+ config.action_view.javascript_expansions[:defaults] = %w(jquery rails)
9
+
10
+ ===============================================================================
@@ -1,35 +1,14 @@
1
1
  require 'rails/generators/named_base'
2
- # require 'rails/generators/migration'
3
2
  require 'rails/generators/active_model'
4
3
 
5
- module Mongomapper
4
+ module MongoMapper
6
5
  module Generators
7
6
  class Base < Rails::Generators::NamedBase #:nodoc:
8
- # include Rails::Generators::Migration
9
7
 
10
8
  def self.source_root
11
9
  @_mongomapper_source_root ||= File.expand_path(File.join(File.dirname(__FILE__),
12
- 'mongomapper', generator_name, 'templates'))
10
+ 'mongo_mapper', generator_name, 'templates'))
13
11
  end
14
-
15
- protected
16
-
17
- # # mongomapper does not care if migrations have the same name as long as
18
- # # they have different ids.
19
- # #
20
- # def migration_exists?(dirname, file_name) #:nodoc:
21
- # false
22
- # end
23
- #
24
- # # Implement the required interface for Rails::Generators::Migration.
25
- # #
26
- # def next_migration_number(dirname) #:nodoc:
27
- # if options[:id]
28
- # "%.3d" % options[:id]
29
- # else
30
- # "%.3d" % (current_migration_number(dirname) + 1)
31
- # end
32
- # end
33
12
  end
34
13
 
35
14
  class ActiveModel < Rails::Generators::ActiveModel #:nodoc:
@@ -54,7 +33,7 @@ module Mongomapper
54
33
  end
55
34
 
56
35
  def update_attributes(params=nil)
57
- "#{name}.update(#{params})"
36
+ "#{name}.update(#{params})"
58
37
  end
59
38
 
60
39
  def errors
@@ -0,0 +1,30 @@
1
+ require 'generators/mongo_mapper'
2
+
3
+ module MongoMapper
4
+ module Generators
5
+ class InstallGenerator < Base
6
+ class_option :host, :type => :string, :default => 'localhost', :desc => "Name of the Mongo host use"
7
+
8
+ def create_files
9
+ template "mongo_mapper.rb" , "config/initializers/mongo_mapper.rb"
10
+ template "database.mongo.yml" , "config/database.mongo.yml"
11
+ say "Please ensure Gemfile contains: gem '#{orm_gem_name}', '>=0.8.2'"
12
+ say "For production enviroment DB configuration, set environment variables as indicated in config/database.mongo.yml"
13
+ end
14
+
15
+ protected
16
+
17
+ def database
18
+ name
19
+ end
20
+
21
+ def orm_gem_name
22
+ "mongo_mapper"
23
+ end
24
+
25
+ def host
26
+ options[:host] || 'localhost'
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,25 @@
1
+ defaults: &defaults
2
+ adapter: mongodb
3
+ host: <%= host %>
4
+ # slaves:
5
+ # - host: slave1.local
6
+ # port: 27018
7
+ # - host: slave2.local
8
+ # port: 27019
9
+
10
+ development:
11
+ <<: *defaults
12
+ database: <%= database %>_development
13
+
14
+ test:
15
+ <<: *defaults
16
+ database: <%= database %>_test
17
+
18
+ # set these environment variables on your prod server
19
+ production:
20
+ <<: *defaults
21
+ host: <%= ENV['MONGOID_HOST'] %>
22
+ port: <%= ENV['MONGOID_PORT'] %>
23
+ username: <%= ENV['MONGOID_USERNAME'] %>
24
+ password: <%= ENV['MONGOID_PASSWORD'] %>
25
+ database: <%= ENV['MONGOID_DATABASE'] %>