搭建Mac + Rails + Mongodb + Rspec开发环境

鉴于要做极客的任意门这东东,这里简单记录下一个最基本的开发环境的搭建,以及注意事项,供大家参考。

环境为Mac + Ruby 1.9.3 + Rails 3.2.1 + Mongodb + Rspec,重写以前的项目,这次就都用最新版本的好了。

一、Mongodb

安装不多,官网很详细,推荐homebrew。若使用homebrew安装,安装完之后记得看info,里面有让mongodb默认daemon启动方法以及开机启动的代码,复制粘贴即可。

开启mongod进程后就可以使用mongodb连接该服务端了,并且可以在http://localhost:28017中看到简单的mongod控制面板(mongod的监听端口默认是27017,控制面板端口为该端口号加1000),这样mongodb就算好了

二、rvm

这个没什么好说的,一定要用的的,安装不说了,说下之后的使用:

$ mkdir rails_3.2.1_project
$ cd rails_3.2.1_project
$ mate .rvmrc # add rvm use 1.9.3@project_name --create

这样在这个目录下都是用ruby 1.9.3,然后有自己的gemset,下面在目录下:

$ gem install rails # 在project_name这个gemset下安装最新版rails,目前是3.2.1。这样就可以在此目录下生成最新的rails项目了
$ rails new app -T -O# -T 表示不生成/test目录,-O表示不生成active_record相关内容

ruby-china的wiki里有一个实用指南,值得一看

三、Gemfile

之后再Gemfile中加入:

gem "mongoid", "2.4.3" # Mongodb的ODM,类似ActiveRecord
gem "bson_ext", "1.5.2" # Mongodb的bson格式扩展,能很大的提高效率,因为用C写的

group :development, :test do
  gem 'rspec-rails'
  gem 'guard' # guard用来自动化测试,自动刷新浏览器
  gem 'guard-rspec'
  gem 'guard-livereload'
end

并删除:

# gem 'sqlite3'

然后:

$ bundle install

四、删除Active_Record内容

若创建项目时没有加上-O,则可以如下操作来消除active_record依赖:

删除config/database.yml

编辑config/application.rb,不加载active_record

# require "active_record/railtie"
require "action_controller/railtie"
require "action_mailer/railtie"
require "active_resource/railtie"
require "sprockets/railtie"

编辑config/enviroments/development.rb,注释掉如下两行active_record相关代码

# Raise exception on mass assignment protection for Active Record models
# config.active_record.mass_assignment_sanitizer = :strict

# Log the query plan for queries taking more than this (works
# with SQLite, MySQL, and PostgreSQL)
# config.active_record.auto_explain_threshold_in_seconds = 0.5

编辑config/enviroments/test.rb,注释该行

# Raise exception on mass assignment protection for Active Record models
# config.active_record.mass_assignment_sanitizer = :strict

五、config

在rails项目目录下:

$ rails generate mongoid:config # 默认配置就可用了
$ rails generate rspec:install

$ rails s # 启动webrick

大概就这么多,希望你能不出问题。

好吧,其实配置rails不出问题往往是困难的,但是记得看log,以及一次又一次在水深火热之时帮助我们的Google算法(是Google算法,不是Baidu短发,rails的问题往往Google能解决而Baidu不行)。

Show Comments