IT技術にまつわる実験ノート

「長編を書くより、短編を数多く完成させてください。それが上達への近道です」 by 手塚治虫

Rubyの正規表現で文字列に大文字を入れないようにしたい

てっきり、/[a-z]/で小文字にだけマッチするのかと思った。

# irb
/[a-z]/ === "aaa" ? "小文字だけ" : "大文字入ってる"
=> "小文字だけ"


しかし、/[a-z]/では、"aBcd"のように大文字が混じった文字列にもマッチしてしまう。

/[a-z]/ === "aBcd" ? "小文字だけ" : "大文字入ってる"
=> "小文字だけ"


大文字が混じっていたら、マッチしないようにしたい時は、/\A[a-z]+\z/のようにする。

/\A[a-z]+\z/ === "aBcd" ? "小文字だけ" : "大文字入ってる"
=> "大文字入ってる"


+なしの/\A[a-z]\z/でも試してみる。

/\A[a-z]\z/ === "a" ? "小文字だけ" : "大文字入ってる"
=> "小文字だけ"


ただし、/\A[a-z]\z/では、"aa"にマッチしない。

/\A[a-z]\z/ === "aa" ? "小文字だけ" : "大文字入ってる"
=> "大文字入ってる"


/\A[a-z]+\z/では"aa"でも正常に機能する。

/\A[a-z]+\z/ === "aa" ? "小文字だけ" : "大文字入ってる"
=> "小文字だけ"


参考: 正規表現によるバリデーションでは ^ と $ ではなく \A と \z を使おう

bin/rails db:migrate:statusで出てきた'NO FILE'を削除する

bin/rails db:migrate:statusコマンドを実行したところ、NO FILEというものが発生する状況になってしまった。ロールバックする前にマイグレーションファイルを削除してしまったかも。この状況でbin/rails db:rollbackを実行しても、元に戻せないのでエラーが発生して、ロールバックできない。

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20190625121008  Create users
   up     20190625121956  ********** NO FILE **********
   up     20190703105711  ********** NO FILE **********
   up     20190703105756  ********** NO FILE **********
  down    20191104081319  Add public uid to users

以下の記事を参考にして、この問題を解消できた。

ここでは三箇所でNO FILEとなっているため、3つのファイルを作成する。マイグレーションIDは、ステータスで表示されている値を使う。

# 例
$ touch db/migrate/20190703105711_tmp2.rb

f:id:matt-note:20191104173202p:plain

db/migrate/20190703105711_tmp2.rbファイルは、以下のように書き換える必要がある。

class Tmp2 < ActiveRecord::Migration[5.2]
  def change
  end
end

これでbin/rails db:migrate:statusを実行できるようになる。
f:id:matt-note:20191104173828p:plain

bin/rails db:rollbackも実行できるようになって、ステータスをdownにできるようになった。
f:id:matt-note:20191104173944p:plain

あとはdb/migrate/20190703105711_tmp2.rbといったファイルを削除して、bin/rails db:migrateコマンドを実行すれば良い。 これでbin/rails db:migrate:statusの実行結果は以下のようになった。
f:id:matt-note:20191104174337p:plain

gemのpublic_uidをPostgreSQLと一緒に使う場合は要注意

DBにPostgreSQLを使っていて、gemのpublic_uidを使う場合、publicユニークIDカラムで文字列型を使う時に、うまく動作しないとのこと。

f:id:matt-note:20191104165937p:plain

 

Rails4以上でPostgreSQLを使っている場合、マイグレーションファイルで以下のように設定するとuuidを使えるとのこと。

f:id:matt-note:20191104175135p:plain

Herokuのログを200行、表示する

最初に、Herokuにデプロイしているアプリを選択する。

以下のコマンドでHerokuにデプロイしているアプリ一覧を表示するので、アプリ名を確認する。

  • heroku list

 

次に、出力されたアプリ名で指定して、ログを出力する。行数の指定は -n オプションを使う。

  • heroku logs -n 200 --app your_app_name

f:id:matt-note:20191104154954p:plain

 

これで行数を指定してログを確認することができる。

 

エラー「mpv was compiled against a different version of FFmpeg/Libav than the shared library it is linked against.」に対応する

Macmpvを使おうと思ったら、以下のエラーが発生した。

f:id:matt-note:20191026130801p:plain

 

これに対して、mpvをアンインストールしてから、再度インストールしたところ、エラーを解消することができた。

 

参考

 

developブランチからfeatureブランチを作成する 

ローカルのmasterブランチからdevelopブランチを作成する。

  • git checkout -b develop master

 

ローカルのdevelopブランチからfeatureブランチを作成する。

  • git checkout -b feature develop

 

ローカルのdevelopブランチでfeatureブランチを取り込む場合、developブランチに移動してから、featureブランチをマージするコマンドを実行する。

  • git checkout develop
  • git merge feature

 

参考

git cloneで最新のmasterブランチだけを取得する

以下のコマンドで最新のmasterブランチだけを取得できる。

  • git clone -b master --single-branch --depth 1 {Your_Repo}

 

参考