使用Ruby 2.6.2 / Rails 5.2.2 / MongoDB进行设置的结果
为什么选择使用mongodb
因为这是一个接管的项目。
既然有机会,我们就来配置一下最新的 Ruby / Rails,以便接触一下。
红宝石
$ rbenv install 2.6.2
铁轨
$ mkdir project
$ cd project
$ bundle init
$ bundle install --path vendor/bundle
$ bundle exec rails new . --skip-bundle --skip-active-record
MongoDB:蒙古数据库
生成设置文件
$ bundle exec rails g mongoid:config
DockerCompose的配置
$ vim docker-compose.yml
version: '2'
networks:
bridge:
driver: bridge
services:
mongodb:
image: mongo:latest
container_name: mongodb
environment:
- 'MONGODB_USER=root'
- 'MONGODB_PASS=password'
volumes:
- 'mongodb-data:/data/db'
ports:
- '27017:27017'
command: mongod --smallfiles
mongo-express:
container_name: mongo-express
links:
- 'mongodb:mongo'
ports:
- '8081:8081'
environment:
- 'ME_CONFIG_OPTIONS_EDITORTHEME=ambiance'
- 'ME_CONFIG_BASICAUTH_USERNAME=root'
- 'ME_CONFIG_BASICAUTH_PASSWORD=password'
image: mongo-express
volumes:
mongodb-data: {}
$ docker-compose up -d

あとは適当にデータベースを選んで、 Import からbsonをインポートすればすぐ使えます。
これは非常に便利かつ優しいインターフェイスでした。
将Rails的生成器更改为mongoid
$ vim config/application.rb
class Application < Rails::Application
# Initialize configuration defaults for originally generated Rails version.
config.load_defaults 5.2
config.generators do |g|
g.orm :mongoid
end
end
コレクション名がRailsの命名規約に則っていない場合
やんごとなき理由により、バックアップ等からデータを復元してそのまま使う場合、
コレクション名がキャメルケースだったり単数形だったりしてモデルからコレクション名を指定したいニーズが出てきます。
在这种情况下,使用 store_in (mongoid 7.0.2)。
class Image
include Mongoid::Document
store_in collection: 'Image'
field :original, type: String
field :large, type: String
field :medium, type: String
field :small, type: String
end
DockerからMongoにつなぎたいという時のTips
$ docker-compose exec mongodb bash
root@c01225e4e2b6:/# mongo admin
MongoDB shell version v4.0.6
> show dbs
admin 0.000GB
hogehogehogeho 0.042GB
config 0.000GB
local 0.000GB
最后
虽然简单,不过现在可以利用该模型了。
只需添加控制器和视图,应该就可以运行了。
使用MongoDB的话,我认为项目并不是很大。
使用https://getbootstrap.com/,可以快速地调整样式,非常好。