2020年12月31日木曜日

docker-composeでmroongaを使う

まとめ

  • 全文検索が必要だったのでElasticSearchを検討したがメモリ1Gサーバでは起動しないようなのでMroongaにした。
  • docker-hubにあるイメージは mysql8022_mroonga1010が最新だったがリスタートを繰り返してしまう。。(メモリ不足?)
  • mysql5732_mroonga1010 は安定して起動できた。

docker-compose.yml

version: '3'
services:
  mysql:
    image: groonga/mroonga:mysql5732_mroonga1010
    container_name: hoge-db
    volumes:
      - hoge-db:/var/lib/mysql
    ports:
      - "127.0.0.1:3306:3306"
    restart: always

違うバージョンを同じvolumeで試していたからかうまくいかず、 /var/lib/dockerを削除してdockerデーモンを再起動したらうまくいった。

接続

MySQLのDockerイメージと違ってrootのpasswordはデフォルトでなしになっているのでローカルホストからのみ接続できるようにportで設定して接続する。

Written with StackEdit.

2020年12月12日土曜日

RubyOnRails: 入れ子のパラメータをストロングパラメータする。

purchase(購入)に複数のitem(=items 商品)がネストしているパラメータを受け取って、 permitして返すメソッドを作る場合、
purchaseは普通にpermitすればいいが、itemsをどうpermitするか。

(メソッドの呼び出し元では permited_parameter.items.first.product_name のように、 itemの属性にもメソッドチェーンしてアクセスしたい。)

以下な感じでする。
def permited_parameters
  params.require(:purchase).map do |purchase|
    visit.permit(
      :customer_name,
      :customer_address
    ).merge(
      items: visit[:items].map do |item|
        item.permit(
          :product_name,
          :count,
          :price
        )
      end
    )
  end
end

2020年12月8日火曜日

JavascriptからHTML5のvalidationを実行するには

reportValidity() を実行する。
let form = getElementById("form");
form.reprotValidity();