Upgrade mongoid from v5.4.0 to v6.4.2

Upgrading mongoid v5.4.0 -> v6.4.2 refs: https://docs.mongodb.com/mongoid/6.4/tutorials/mongoid-upgrade/#upgrade-to-6-x-series 6.0.0.beta https://github.com/mongodb/mongoid/releases/tag/v6.0.0.beta MONGOID-3944 Support #create_with method. 🆕#create_with メソッドの追加 ActiveRecord の #create_with の mongoid 版 https://qiita.com/pekepek/items/c57d4859e6e1ec8b1ad1#1-create_with MONGOID-4019, MONGOID-4182 Don’t include Mongoi::Attributes::Dynamic when cloning documents with unknown attributes. MONGOID-4167 Raise an exception if Model#with is called with invalid driver options. #with メソッドに利用できないオプションを指定すると例外が発生するようになる ⚠️ 古いオプションを指定している箇所があるので修正が必要 -> with(safe: true) MONGOID-4264 Require belongs_to by default and provide options to override requirement.

MongoDB データモデルデザイン

MongoDB 公式ドキュメントから抜粋 ##Env / Versions MongoDB v3.6 Embedded Data Models (埋め込みモデル) Example: { _id: <ObjectId1>, username: "123xyz", contact: { phone: "123-456-7890", email: "xyz@example.com" }, access: { level: 5, group: "dev" } } 非正規化モデル より少ないクエリとアップデートで済む 次のような時に使用する ・エンティティ間に「包含」関係がある。1対1の関係 ・エンティティ間に1対多の関係がある。子ドキュメントは常に親ドキュメントのコンテキストで表現される 🙆‍♀️ Strengths ・単一のデータベースから関連するデータを取得するのと同じように、参照操作のパフォーマンスを向上させうる ・1回のアトミックな更新操作で関連するデータを更新することができる 🤦‍♀️ Weaknesses ・関連データをドキュメントに埋め込むと、作成後にドキュメントサイズが大きくなる ・MMAPv1ストレージエンジンを使用すると、ドキュメントの増大が書き込みのパフォーマンスに影響を与え、データの断片化を招く可能性がある ・📝 ドキュメントのサイズは最大で 16 megabytes Normalized Data Models (参照モデル) Example: // user document { _id: <ObjectId1>, username: "123xyz" } // contact document { _id: <ObjectId2>, user_id: <ObjectId1>, phone: "123-456-7890", email: "xyz@example.

MongoDB : Replica Set の参照設定

📝MongoDB のドキュメントを箇条書きしていく。随時更新 Env / Versions MongoDB v3.6 参照の優先度設定 ⚠️ Primary から Secondary への非同期レプリケーションには遅延が発生するため、古いデータが返される可能性がある 参照のモード 各 MongoDB ドライバーは以下の5つのモードをサポートしている primary Primary からのみ参照する Primary が使用できない場合はエラーになる デフォルト primaryPreferred Primary から参照するが使用できない場合は Secondary から参照する secondary Secondary からのみ参照する 使用可能な Secondary が無い場合はエラーになる secondaryPreferred Secondary から参照するが使用可能な Secondary が1台もない場合は Primary から参照する nearest ネットワークレイテンシが最も低いメンバーから参照する Primary, Secondary 問わない サーバ選択アルゴリズム サーバーの選択は操作ごとに1回発生し、参照設定とlocalThresholdMS の設定によって決められる サーバ選択アルゴリズムは各クライアントで実装されている secondary または secondaryPreferred モードを指定した場合 * 最も低いレイテンシ + 15msec 以内のサーバを「使用可能」とする 15msec はデフォルト値であり変更可能 「使用可能」なサーバ群からランダムで接続先が決定される Links https://docs.

[SOLVED] Failed to auto renew ssl certificate for ghost blog

ghost cli v1.0.0 -> 1.3.0 Ref -> Upgrading Ghost-CLI $ npm upgrade ghost-cli -g $ ghost version Ghost-CLI version: 1.3.0 Ghost Version (at /var/www/ghost): 1.6.2 $ ghost migrate ✔ Checking for available migrations Running sudo command: mkdir -p /etc/letsencrypt Running sudo command: ./acme.sh --install --home /etc/letsencrypt Running sudo command: /etc/letsencrypt/acme.sh --issue --home /etc/letsencrypt --domain blog.mknkisk.com --webroot /var/www/ghost/system/nginx-root --reloadcmd "nginx -s reload" --accountemail xxx@example.com Running sudo command: nginx -s reload Running sudo command: /root/.

gitignore_global - git Ignore only my settings

Git ignore locally files. .DS_Store is only Mac user. .vscode dir is only Visual Studio Code User. $ git config --global core.excludesfile ~/.gitignore_global $ vim ~/.gitignore_global .vscode .DS_Store

Sign in to Errbit with GitHub

Introduction I wrote about the introduction of Erribit in past postings. How to install Errbit for Express bug tracking 🐛 This post is about how to configure Errbit to sign in with Github. ENV Mac OSX 10.12.3 MongoDB 3.4.2 Node.js 7.5.0 Express 4.14.0 Generate new GitHub access token open https://github.com/settings/tokens Configure Errbit $ less .env.default GITHUB_AUTHENTICATION=true GITHUB_ACCESS_SCOPE="['repo']" $ vim .env GITHUB_CLIENT_ID=<YOUR_GITHUB_CLIENT_ID> GITHUB_SECRET=<YOUR_GITHUB_SECRET> $ bundle exec rails s -b 0.

Node.js Database Cleaner with Mongoose

Env Mac OSX 10.12.3 MongoDB 3.4.2 Node.js 7.5.0 Mocha 3.2.0 database-cleaner 1.2.0 Install database-cleaner 🚿 $ yarn add -D database-cleaner or $ npm install -D database-cleaner test/mocha.opts –reporter spec –recursive –require test/setup test/setup.js const mongoose = require(‘mongoose’) const Cleaner = require(‘database-cleaner’) const dbCleaner = new Cleaner(‘mongodb’) global.dbCleaner = dbCleaner test/models/user.js const mongoose = require(‘mongoose’) beforeEach((done) => { // create test documents done() }) afterEach((done) => { dbCleaner.clean(mongoose.connection.db, () => { done() }) })

How to install Errbit for Express bug tracking 🐛

ENV Mac OSX 10.12.3 MongoDB 3.4.2 Node.js 7.5.0 Express 4.14.0 Install MongoDB $ brew install mongodb $ brew services start mongodb Start Errbit at localhost $ git clone https://github.com/errbit/errbit.git $ bundle install --path vendor/bundle --jobs 4 $ bundle exec rake errbit:bootstrap Creating an initial admin user: -- email: errbit@errbit.example.com -- password: xxxxxxxxxxxx Be sure to note down these credentials now! $ bundle exec rails server -b 0.0.0.0 -p 3001 $ open localhost:3001 📝 Errbit run on port 3001, Express run on port 3000

au -> LINEモバイル 乗り換え

au から LINEモバイル に乗り換え。 LINEモバイル まだ始まったばかりなので周りに使っている人もいなかったので、ダメだったら乗り換えればいいやぐらいの気持ちで選択。 Twitter, Facebook の通信料が無料になったらどのぐらいになるかなっと。普段LINEはほとんど使わない。 ということで LINEフリープラン ではなく コミュニケーションフリープラン を選択。 3GB, データ+SMS +音声電話 で ¥1,693 / 月 安い。 申し込み 夜にLINEモバイル公式ページから申し込みをし、次の日には本人確認も完了してSIMが発送されました。 早い。 本人確認書類(免許証など)は携帯で写真を撮ってそのままアップロードした方が楽なので携帯で申し込みがオススメ。 MNP 今回は au から MNP で乗り換えしたので、切り替え作業の申し込みをし、30分後にはLINEモバイルのSIMが使えるようになりました。 申し込みは電話で。本人確認の質問に幾つか答えるだけなのですぐ終わる。まだ始まったばかりだからか、電話は繋がりにくかった。 おわり 音声電話をつけたのは仕事のためですね。普段使うことはほとんどない。 ちょうどauが2年経って更新月だったところにLINEモバイルが始まったので、重い腰を上げて乗り換えをしました。 料金もそうですが、この2年縛りがなんとも面倒だったのも乗り換えの理由です。 ※ LINEモバイルも音声通話をつけると1年縛りが発生します

Mongoid エラーメッセージが翻訳されない時

Env Rails 4.2.7 Mongoid 5.1.1 Mongoid のエラーメッセージを正常に出力する 英語以外のロケールで Mongoid を使用していると、 Mongoid のエラーが発生した際にそのエラーメッセージが翻訳できずに translation missing エラーが発生してしまいます。 Mongoid::Errors::DocumentNotFound: translation missing: ja.mongoid.errors.messages.message_title: translation missing: ja.mongoid.errors.messages.document_not_found.message translation missing: ja.mongoid.errors.messages.summary_title: translation missing: ja.mongoid.errors.messages.document_not_found.summary translation missing: ja.mongoid.errors.messages.resolution_title: translation missing: ja.mongoid.errors.messages.document_not_found.resolution from /Users/himeko/work/MyApp/vendor/bundle/ruby/2.3.0/gems/mongoid-5.1.1/lib/mongoid/criteria.rb:454:in `check_for_missing_documents!' エラーメッセージは英語で構わないですし、翻訳できない場合は英語にするように設定してしまいます。 application.rb config.i18n.default_locale = :ja + config.i18n.fallbacks = { ja: :en } すると正しくエラーメッセージが表示されるようになります。 Mongoid::Errors::DocumentNotFound: message: Document(s) not found for class User with id(s) {:id=>"1"}. summary: When calling User.find with an id or array of ids, each parameter must match a document in the database or this error will be raised.