使用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
mongo_express.png

あとは適当にデータベースを選んで、 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/,可以快速地调整样式,非常好。

广告
将在 10 秒后关闭
bannerAds