Começando com Mongo DB
Posted on December 23, 2009
Estou ainda só brincando com o Mongo DB, mas posso dizer que os primeiros passos são incrivelmente simples.
Para instalar no meu Snow Leopard, basta baixar os binários desta página (eu baixei a versão 64-bits). Descompacte em qualquer lugar e coloque o diretório /bin dele no seu PATH.
Feito isso, basta carregá-lo, por exemplo, assim:
1 2 |
mkdir /tmp/mongodb/ mongod --dbpath /tmp/mongodb/ |
Note que criei no /tmp que, obviamente, é volátil. Crie num lugar mais decente se quiser persistir seus dados. Esse comando vai subir o daemon do Mongo.
Agora instale a gem do MongoId:
1 |
sudo gem install mongoid |
Feito isso, agora já podemos criar uma aplicação Rails normalmente:
1 2 |
rails teste ./script/generate scaffold Post title:string body:text |
Como não vamos usar ActiveRecord, precisamos fazer algumas modificações no “config/environment.rb”:
1 2 3 4 5 6 7 |
Rails::Initializer.run do |config| ... config.gem "mongoid", :lib => "mongoid", :version => "0.9.11" ... config.frameworks -= [ :active_record ] ... end |
Lembrando que ao descarregar o framework active_record, o generator Scaffold não vai funcionar mais. Em seguida, criamos um initializer para carregar as configurações do Mongo em “config/initializers/mongo.rb”:
1 2 3 4 |
@settings = YAML.load(File.read(File.join(RAILS_ROOT, 'config/database.mongo.yml')))[RAILS_ENV] connection = Mongo::Connection.new(@settings["host"]) Mongoid.database = connection.db(@settings["database"]) Mongoid.database.authenticate(@settings["username"], @settings["password"]) if @settings["username"] |
Também precisamos mudar o Model que o scaffold gerou, substituindo o ActiveRecord por um Document do MongoId:
1 2 3 4 |
class Post < Mongoid::Document field :title field :body end |
Com o Mongo podemos adicionar campos dinamicamente sem precisar de migrations para isso. Finalmente, criamos o equivalente ao database.yml como “config/database.mongo.yml”:
1 2 3 4 5 6 7 8 9 10 11 |
defaults: &defaults adapter: mongo host: localhost development: <<: *defaults database: teste_development test: <<: *defaults database: teste_test |
Pronto, é só isso. Agora basta subir o servidor de desenvolvimento com o bom e velho “./script/server” e apontar seu browser para “http://localhost:3000/posts”. Tudo vai funcionar idêntico a antes!
Nada mal para começar :-)
blog comments powered by Disqus
Archives
- February 12(2)
- December 11(1)
- November 11(4)
- October 11(6)
- September 11(5)
- August 11(1)
- July 11(5)
- May 11(4)
- April 11(11)
- March 11(4)
- February 11(3)
- January 11(4)
- December 10(9)
- November 10(2)
- October 10(10)
- September 10(4)
- August 10(6)
- July 10(14)
- June 10(16)
- May 10(8)
- April 10(14)
- March 10(9)
- February 10(6)
- January 10(14)
- December 09(10)
- November 09(10)
- October 09(7)
- September 09(19)
- August 09(4)
- July 09(12)
- June 09(7)
- May 09(12)
- April 09(11)
- March 09(9)
- February 09(9)
- January 09(12)
- December 08(14)
- November 08(20)
- October 08(15)
- September 08(18)
- August 08(25)
- July 08(13)
- June 08(21)
- May 08(29)
- April 08(27)
- March 08(12)
- February 08(32)
- January 08(31)
- December 07(27)
- November 07(30)
- October 07(25)
- September 07(28)
- August 07(16)
- July 07(15)
- June 07(16)
- May 07(7)
- April 07(13)
- March 07(8)
- February 07(9)
- January 07(24)
- December 06(17)
- November 06(17)
- October 06(15)
- September 06(38)




