Ruby,Rubygems,MongoDBはインストールされているものとする
MongoDBのインストールについてはCentOSであれば前にちょっと書いた
インストール
Bundlerを使用して必要なGemをインストールする。
なおMongoDBのORMとしてMongoidを使用する
$ gem install bundler
Gemfile
source :rubygems gem 'sinatra' gem 'mongoid' gem 'bson_ext' gem 'SystemTimer' #1.8.7だけ必要だったぽい group :test do gem 'rspec' gem 'rack-test' end
$ bundle install
bson_extとSystemTimer
bson_ext
パフォーマンスを出すためには入れろよみたいなNoticeがでたので入れた
**Notice: C extension not loaded. This is required for optimum MongoDB Ruby driver performance.
You can install the extension as follows:
gem install bson_ext
SystemTimer
1.8.7だとうまくいかないので入れろよ的な(解読するきねえだろ)
Could not load SystemTimer >= v1.2.0. Falling back to timeout.rb. SystemTimer is STRONGLY recommended for timeouts in Ruby 1.8.7. See http://ph7spot.com/blog/system-timer-1-2-release for details.
Mongoid設定
app.rb
# coding: utf-8 require 'rubygems' # 1.8系だと必要 require 'sinatra' require 'mongoid' require 'models/homu' Mongoid.configure do |config| config.master = Mongo::Connection.new.db("db_name") end
models/homu.rb
String以外は型を指定する
class Homu include Mongoid::Document field :name field :email field :date, :type => Date end
ドキュメントが充実しているのでわからんことがあれば参照するとよい
RSpec周りの設定
rake specでテストを実行したいのでRakefileを用意
Rakefile
# coding: utf-8 require "rspec/core/rake_task" desc "run spec" task :default => [:spec] RSpec::Core::RakeTask.new(:spec) do |spec| # - (Object) pattern # default: 'spec/**/*_spec.rb' # - (Object) rspec_opts=(opts) # default : nil spec.pattern = 'spec/*_spec.rb' spec.rspec_opts = %w(--color --format progress)
spec/spec_helper.rb
# coding: utf-8 ENV['RACK_ENV'] = "test" # sinatraのアプリケーションをapp.rbとした場合 require File.dirname(__FILE__) + '/../app' # rspecとrack-testを読み込む require 'rspec' require 'rack/test' # environmentをtestに設定 set :environment, :test # rack-testのメソッドを読み込む RSpec.configure do |conf| conf.include Rack::Test::Methods end def app Sinatra::Application end
これでspec/*_spec.rbがあるときにrake実行するとテストが実行される。
Mongoidの使い方とかそのへんはまた次回