[者也]安装过程中填过的那些坑


者也】是由@huacnlee写的类似Quora的一个垂直问答社区,今天在本地安装过程中,填了一些坑,这篇文章不重点讲安装过程,而是说说安装过程中遇到的一些坑,希望对你有点帮助。

最终应用跑起来如图所示

环境:Mac + RVM + brew

先将工程clone下来。

$ git clone git://github.com/huacnlee/quora.git

然后,使用mac命令行工具brew相继安装了MongoDB2.4.9,node.js0.10.25,Redis2.8.3 这三个软件的版本都比官网上面要求的高,但是没有关系。

$ brew install mongodb node.js redis

安装过程

ruby的版本 首先确定你本机上面的ruby版本,我使用rvm进行ruby版本管理的,因为原来已经安装过ruby2.1.0这个版本,而官网上指定的是使用1.9.2,但是觉得高版本向下兼容,所以就在2.1.0这个版本下直接执行命令bundle来安装所有的gem包,结果不成功。

$ cd quora
$ bundle install --path vendor/bundle

反复几次后,只好从rvm中删除掉2.1.0这个版本,然后重新安装1.9.2。

$ rvm uninstall 2.1.0
$ rvm install 1.9.2

bundle的cache 继续安装过程,执行bundle命令。

bundle install --path vendor/bundle 根据提示发现Gemfile中有个git仓库无法clone下来,打开Gemfile文件一看,原因是该htmldiff.git项目已经没有在huacnlee下了,可能他自己已经忘了这回事了,只好在github下搜索原作者的项目地址,修改为如下所示即可。

gem "htmldiff", :git => "git@github.com:myobie/htmldiff.git"

再次执行bundle,又给一个错误提示,rake这个gem无法读取,一开始以为是权限问题,然后到bundle安装的指定目录vendor/bundle/ruby/1.9.1/cache下将该rake.gem文件加上全部的读写执行权限,但是还是失败。这个时候只有求助万能的Stackoverflow了,根据类似的问题,删除掉原来的cache目录(我是直接删掉了vendor/bundle这个目录),然后重新执行bundle命令,一切ok,所有gem安装成功。估计问题原因是在原来的ruby 2.1.0 环境下,执行过一次bundle命令,导致cache中已经存在了一些gem文件。

mongodb的配置 接下来就是修改一些配置文件的问题了,如下

$ cp config/mongoid.yml.default config/mongoid.yml
$ cp config/setting.yml.default config/setting.yml
$ cp config/redis.yml.default config/redis.yml

redis.yml和setting.yml文件不需要修改,需要修改的是mongoid.yml文件,看其中有这样一行代码。

uri: mongodb://root:666666@flame.mongohq.com:27070/quora

这是连接mongodb的url串,我们需要在mongodb中建立数据库quora和用户root,其密码是666666;建立成功后,执行命令启动应用。

$ script/rails s -e development_mongohq

报错,还是报错,是权限验证错误,对于我们这种在bug环境中长大的同志,这点问题还是可以解决的,经过排查发现是uri串中本地地址写错了,应该改为localhost,端口也应该改为27017,如下。

uri: mongodb://root:666666@localhost:27017/quora

重新启动服务,一切OK!