RailsでMongoDBを使う設定
Rails は使える、という前提で。
configuration
BSON 4.0.0 Tutorial — Ruby Driver Manual 2.8
gem の設定を一般ユーザでやると怒られる。
sudo でもダメ。
root でやったら問題なかった。
うーん、謎。ここらへんもまだ勉強が必要。
- 一般ユーザ
$ rake gems:install (in /home/m-iwamoto/test/rails/iwatest) $ rake gems:unpack (in /home/user/test/rails/test) ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions into the /usr/lib/ruby/gems/1.8 directory. $ sudo rake gems:unpack パスワード: (in /home/user/test/rails/test) config.gem: Unpacked gem mongo_mapper-0.7.0 in vendor/gems has no specification file. Run 'rake gems:refresh_specs' to fix this.
- root
# rake gems:install (in /home/user/test/rails/test) # rake gems:unpack (in /home/user/test/rails/test) Unpacked gem: '/home/user/test/rails/test/vendor/gems/mongo_mapper-0.7.0'
使ってみる
- まずMongoDB にテスト用のコレクションを作成
$ mongo MongoDB shell version: 1.2.2 url: test connecting to: test type "help" for help > show dbs admin fulsat9-development test > use fulsat9-development > db.hoges.save({ x : 3, y : 9}); > db.hoges.find() { "_id" : ObjectId("4b933f5a36010e0ffd3608d9"), "x" : 3, "y" : 9 }
- 設定は、チュートリアルの通り。
$ cat config/initializers/database.rb MongoMapper.database = "fulsat9-#{Rails.env}" if defined?(PhusionPassenger) PhusionPassenger.on_event(:starting_worker_process) do |forked| MongoMapper.connection.connect_to_master if forked end end
- Model はこんなかんじ
$ cat app/models/hoge.rb class Hoge include MongoMapper::Document key :x, Integer, :default => 0 key :y, Integer, :default => 0 end
- Controller
複数形と単数形に注意して。
$ cat app/controllers/hoges_controller.rb class HogesController < ApplicationController def index @hoges = Hoge.all end end
- View
表示するだけ。 $ cat app/views/hoges/index.html.erb <% @hoges.each do |hoge| %> <li><%= hoge['x'] %></li> <li><%= hoge['y'] %></li> <% end %>
- 起動!
$ script/server
http://localhost:3000/hoges にアクセスして、
・ 3
・ 9
こんなかんじで表示されればおk。
以上!(`・ω・´) >ビシッ