padrino-gen/lib/padrino-gen/generators/components/orms/mongomapper.rb
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 'mongo_mapper'
require_dependencies 'bson_ext', :require => 'mongo'
require_dependencies 'activemodel', :version => '< 5'
create_file("config/database.rb", MONGO.gsub(/!NAME!/, @project_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.underscore.camelize}" }.join("\n ")
model_contents = MM_MODEL.gsub(/!NAME!/, name.to_s.underscore.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