apt を使って Node.js の任意のバージョンをインストールする

CI にて有用な方法と思います。

結論

たとえば、 v16 系を入れたい場合には以下のコマンドを実行します。

$ curl -sL https://deb.nodesource.com/setup_16.x | sudo bash -
$ sudo apt update
$ sudo apt install -y nodejs

補足

npm も最新版まで上げるには以下のコマンドを実行します。

$ npm install -g npm

参考

上記の curl コマンド の URL として https://deb.nodesource.com/setup を指定した際に以下のメッセージが表示されます。このメッセージが参考になります。

================================================================================
================================================================================

                           SCRIPT DEPRECATION WARNING                         

  This script, located at https://deb.nodesource.com/setup, used to
  install Node.js 0.10, is deprecated and will eventually be made inactive.

  You should use the script that corresponds to the version of Node.js you
  wish to install. e.g.

   * https://deb.nodesource.com/setup_12.x — Node.js 12 LTS "Erbium"
   * https://deb.nodesource.com/setup_14.x — Node.js 14 LTS "Fermium" (recommended)
   * https://deb.nodesource.com/setup_15.x — Node.js 15 "Fifteen"
   * https://deb.nodesource.com/setup_16.x — Node.js 16 "Gallium"
  Please see https://github.com/nodejs/Release for details about which
  version may be appropriate for you.

  The NodeSource Node.js Linux distributions GitHub repository contains
  information about which versions of Node.js and which Linux distributions
  are supported and how to use the install scripts.
    https://github.com/nodesource/distributions

================================================================================
================================================================================

Nextcloud で消せないファイルやフォルダが出てきたとき

結論

1. (念のため)アクセスがない状況にする

サーバを落としたり、Docker で起動しているならばコンテナを止めます。

2. ファイルがあるディレクトリに移動

data/ユーザー名/files に移動します。

3. 該当ファイルやフォルダを削除する

「2.」のディレクトリにある、消したいファイルやフォルダを削除します。おそらく root の権限が必要になります。

4. アクセスできる状態に戻す

サーバを再起動したり、Docker ならばコンテナを作り直します。

5. 削除されていることを確認する

削除されていることが確認できれば OK です。

Nextcloud を Docker Compose で使用している時にバージョンアップをする方法

結論

1. 実行を停止する

$ docker-compose down

2. docker-compose.yml に最新バージョンを記述する

  • latest の場合はこの項目は飛ばして OK
(省略)
    image: nextcloud:21.0.2
(省略)

3. 起動する

結構時間がかかります。

$ docker-compose up -d

注意点

データを永続化しておかないと*1、データが消えます。

*1:Nextcloud を使う時点でしていないことは無いでしょうが

Ruby の all? メソッドはレシーバが [] の場合は true を返すので注意が必要

結論

標題の通りで、知っている人には当たり前なのですが、以下のような戻り値になります。

[].all? { |foo| foo == 1 } #=> true

どうするか

all? を使わないようにすればこのハマりやすい返り値から逃れられます。もし all? を使う場合には、レシーバが [] の場合は早期リターンをするなどすれば回避できます。

……が、そもそもこれを知らないと回避も何もないですよね……。

参考

tanaken0515.hatenablog.com

Rails で NOT NULL なカラムに DEFAULT値 が入る挙動には注意が必要(自分で nil を代入した場合は DEFAULT値 は入らない)

結論

標題で全てな気がするのですが、以下の例のとおりです。自前で nil を代入した場合には、そのカラムは DEFAULT の値が自動で入ってくれません*1

例として、User というモデルを使います。ここで、height というカラムに NOT NULL 制約がついていて、DEFAULT-1 であるとします。

レコード新規作成時

> User.new
=> #<User:0x00007f9709765500
 id: nil,
 height: -1,
(以下省略)

自分で値を代入する

> attrs_for_new_user_record = { height: nil }
> User.new(attrs_for_new_user_record )
=> #<User:0x00007f9709765500
 id: nil,
 height: nil,
(以下省略)

*1:上書きされる。当然といえば当然

Powered by はてなブログ