`
beiersi
  • 浏览: 76569 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

无信用卡在 Heroku 上使用 MongoLab

    博客分类:
  • ruby
 
阅读更多

heroku 提供的免费数据库是5M postgres,有点小。在Heroku的addons里面发现了两个mogodb的数据库 MongoLab和MongoHQ

MongoLab的免费版240MB,声明只用于开发和测试。先不管那么多,直接添加MongoLab插件,结果发现账户要验证才可添加,验证账户必须要提供信用卡信息。暂时不想提供信用卡,找到一个办法,就是自己到MongoLab网站上自己申请一个账户再创建数据库。

在MongoLab上设置好数据库以后。

先在本地调试一下,使用mongoid 3.x,修改Gemfile:

 

gem "mongoid", "~> 3.0.3"
gem "mongoid_rails_migrations", "~> 0.0.14"
gem 'mongoid_auto_increment_id', "0.5.0"
gem 'bson_ext'

 然后执行:bundle install --without production

 

 

接着修改config/mongoid.xml的配置如下:

 

defaults: &defaults
  options:
    identity_map_enabled: true

development:
  <<: *defaults
  sessions:
    default:
      uri: mongodb://user:password@ds037067.mongolab.com:37067/my_db
      options:
        skip_version_check: true
        safe: true
 

 

本地测试ok,然后我们先设定一下heroku的环境变量,命令如下:

heroku config:set Q_MONGOLAB_URI=mongodb://user:password@ds037067.mongolab.com/my_db

然后config/mongoid.xml里添加:

 

production:
  <<: *defaults
  sessions:
    default:
      uri: <%= ENV['Q_MONGOLAB_URI'] %>
      options:
        skip_version_check: true
        safe: true

 

 这样做的目的是不再配置文件中暴露数据库的信息,而把数据库信息放到环境变量中。相对安全一些。

 

然后push到heroku, 结果执行出错,查看 heroku logs报错也很简单:NoMethodError: undefined method `[]' for nil:NilClass。

 

到mongoid.org上找到这个http://mongoid.org/en/mongoid/docs/tips.html#ruby。发现heroku默认的ruby是1.9.1 .需要在Gemfile指定为ruby 1.9.3.

修改Gemfile

ruby '1.9.3'

 不过bundle版本得是1.2.0rc以上,所以先执行 gem install bundler --pre,这样本地bundle instal才能执行。

 

最后push到heroku,成功运行了。

 

另一个MongoHQ我还没有试过,应该也可以这样使用,因为mongohq.com也是可以免费注册并创建免费数据库的。

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics