在Heroku上的Rails4项目中,准备使用MongoDB(MongoLab)
提前(一事前)
mongodbのインストールについてはこちら
今回は
Rails4のプロジェクトにMongoDBを使いたい時の設定についてです。
mongoidを使います。
最终我想要将其部署在Heroku上,所以我会使用MongoLab在Heroku上进行开发。还有其他的选择,比如MongoHQ。
在Heroku上使用Mongo需要进行账户认证,比如提供信用卡信息,但基本上是免费使用的。
在MongoLab上可以免费使用大约500MB的存储空间。
Gemfile => Gem文件
# Mongo on Heroku
gem 'mongoid', '4.0.0.beta1'
gem "bson"
gem "moped", github: "mongoid/moped"
配置/mongoid.yml
$ rails generate mongoid:config
上記コマンドにより、config/mongoid.ymlが生成されます。
development, testの設定があるので、それをいじったりstagingやproductionの設定を追加します。
・
・
production:
sessions:
default:
uri: <%= ENV['MONGOLAB_URI'] %>
・
・
Rails项目
このままだと、ActiveRecordのmodelを作るとき、active_record:とprefixをつける必要がある。
Railsのデフォルト設定がmongodbを使う様になってしまっている。
$ rails generate acrive_record:model
(mongoの方は、rails g model hoge:integer でいける)
如果想要基本上使用ActiveRecord,這樣會有些不方便,建議將其配置在config/application.rb上。
config.generators do |g|
g.orm :active_record
end
当创建使用Mongo的模型时
$ rails generate mongoid:model MODEL_NAME column_name:column_type
可以。需要前缀。
模型的设置
我想要用MongoDB来编写模型。
class hoge
include Mongoid::Document
field :fuga_id, type: Integer
field :time, type: Time
end
糟糕的例子
class hoge
include Mongoid::Document
field :fuga_id, type: Integer,
field :time, type: Time
end
end
如果在这样的情况下出现逗号,就会出现语法错误。
在运行”rails g mongoid:model user_id:integer”之类的命令时会出现逗号,所以最好不要在命令中指定属性,而是在之后在模型中进行编写。(该建议有点含糊不清。)
请参考
-
- http://stackoverflow.com/questions/6372626/using-active-record-generators-after-mongoid-installation
-
- http://mongoid.org/en/mongoid/
- https://devcenter.heroku.com/articles/mongohq