LoginSignup
6
1

More than 5 years have passed since last update.

Ruby 2.6.2 / Rails 5.2.2 / mongodb でセットアップした結果

Last updated at Posted at 2019-03-19

何故 mongodb :thinking:

引き継ぎ案件だからだよ :angry:
せっかくなので最新の Ruby / Rails に触れようということでセットアップしていきます。

Ruby

$ rbenv install 2.6.2

Rails

$ 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
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

これで http://localhost:8081/ へアクセスすると以下のような画面が開きます。
mongo_express.png

あとは適当にデータベースを選んで、 Import からbsonをインポートすればすぐ使えます。
これは非常に便利かつ優しいインターフェイスでした。 :clap:

Railsのジェネレータをmongoidに変更

$ vim config/application.rb
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)

app/models/image.rb
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/ を使うとさくっと体裁を整えられて良いですね。

6
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1