Sha256: a1ee27430b5cc8520beee5f7e2359623c5b66ec7322cef6ee9d6a717c518fec8

Contents?: true

Size: 1.46 KB

Versions: 2

Compression:

Stored size: 1.46 KB

Contents

MONGO = (<<-MONGO) unless defined?(MONGO)
MongoMapper.connection = Mongo::Connection.new('localhost', nil, :logger => logger)

case Padrino.env
  when :development then MongoMapper.database = '!NAME!_development'
  when :production  then MongoMapper.database = '!NAME!_production'
  when :test        then MongoMapper.database = '!NAME!_test'
end
MONGO

def setup_orm
  require_dependencies 'bson_ext', :require => 'mongo'
  require_dependencies 'mongo_mapper'
  require_dependencies('SystemTimer', :require => 'system_timer') if RUBY_VERSION =~ /1\.8/
  create_file("config/database.rb", MONGO.gsub(/!NAME!/, @app_name.underscore))
end

MM_MODEL = (<<-MODEL) unless defined?(MM_MODEL)
class !NAME!
  include MongoMapper::Document

  # key <name>, <type>
  !FIELDS!
  timestamps!
end
MODEL

# options => { :fields => ["title:string", "body:string"], :app => 'app' }
def create_model_file(name, options={})
  model_path = destination_root(options[:app], 'models', "#{name.to_s.underscore}.rb")
  field_tuples = options[:fields].map { |value| value.split(":") }
  column_declarations = field_tuples.map { |field, kind| "key :#{field}, #{kind.camelize}" }.join("\n  ")
  model_contents = MM_MODEL.gsub(/!NAME!/, name.to_s.camelize)
  model_contents.gsub!(/!FIELDS!/, column_declarations)
  create_file(model_path, model_contents)
end

def create_model_migration(filename, name, fields)
  # NO MIGRATION NEEDED
end

def create_migration_file(migration_name, name, columns)
  # NO MIGRATION NEEDED
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
padrino-gen-0.10.2 lib/padrino-gen/generators/components/orms/mongomapper.rb
padrino-gen-0.10.1 lib/padrino-gen/generators/components/orms/mongomapper.rb