Skip to content

Instantly share code, notes, and snippets.

@alanrrb
Forked from banker/Rails MongoMapper Template.rb
Created February 18, 2010 05:44
# mongo_template.rb
# fork of Ben Scofield's Rails MongoMapper Template (http://gist.github.com/181842)
# fork of banker's Rails MongoMapper Template (http://gist.github.com/219223)
#
# Uso:
# rails project_name -m "http://gist.github.com/307386.txt"
# removendo arquivos desnecessarios
run "rm public/index.html"
run "rm public/images/rails.png"
# Colocando o nome do seu banco no MongoDB
db_name = ask('Qual será o nome do seu banco no mongodb? ')
# Editando o arquivo database.yml
# Com os dados do banco
file 'config/database.yml', <<-CODE
base: &base
adapter: mongodb
# em tempo de execucao vamos adicionar o "-\#{Rails.env}" ao nomo do banco
database: "#{db_name}"
# Se estiver rodando o mongodb em outro host,
#vc deveria autenticar-se
#host: host.mongodb.com
#username: your-username
#password: your-password
# use as proximas linhas para colocar algo especifico a cada ambiente
development:
<<: *base
test:
<<: *base
production:
<<: *base
CODE
# colocando um arquivo na inicialização do rails
# Este arquivo será encarregado de conectar no banco
initializer 'database.rb', <<-CODE
include MongoMapper
db_config = YAML::load(File.read(File.join(Rails.root, "/config/database.yml")))
if db_config[Rails.env] && db_config[Rails.env]['adapter'] == 'mongodb'
mongo = db_config[Rails.env]
MongoMapper.connection = Mongo::Connection.new(mongo['host'] || 'localhost',
mongo['port'] || 27017,
:logger => Rails.logger)
MongoMapper.database = "\#{mongo['database']}-\#{Rails.env}"
if mongo['username'] && mongo['password']
MongoMapper.database.authenticate(mongo['username'], mongo['password'])
end
end
ActionController::Base.rescue_responses['MongoMapper::DocumentNotFound'] = :not_found
CODE
# Não precisamos do Active Record
environment 'config.frameworks -= [:active_record]'
# adicionando a gem do MongoMapper
gem 'mongo_mapper'
# Testing Helper
file 'test/test_helper.rb', <<-CODE
ENV['RAILS_ENV'] = 'test'
require File.expand_path(File.dirname(__FILE__) + '/../config/environment')
require 'test_help'
class ActiveSupport::TestCase
# Apagando todas colecoes depois de cada test case
def teardown
MongoMapper.database.collections.each do |coll|
coll.remove
end
end
# adicionando o metodo teardown em todos test cases
def inherited(base)
base.define_method teardown do
super
end
end
end
CODE
# Gem management
rake 'gems:install'
rake 'gems:unpack'
rake 'rails:freeze:gems'
# source control
file '.gitignore', <<-FILES
.DS_Store
**/.DS_Store
log/*
tmp/*
tmp/**/*
FILES
# comitando os fontes <img src="http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley">
git :init
git :add => '.'
msg_git = ask('Escreva seu comentario no commit do git')
git :commit => "-a -m \"#{msg_git}\""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment