brewでmacのpostgresを14にアップグレードした際にpgを使ってるrailsが立ち上がらなくなった。(M1 Macです)

/Users/komagata/go/src/github.com/fjordllc/bootcamp/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.13.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require': dlopen(/Users/komagata/go/src/github.com/fjordllc/bootcamp/vendor/bundle/ruby/3.1.0/gems/pg-1.4.4/lib/pg_ext.bundle, 0x0009): Library not loaded: /opt/homebrew/opt/postgresql/lib/libpq.5.dylib (LoadError)
  Referenced from: /Users/komagata/go/src/github.com/fjordllc/bootcamp/vendor/bundle/ruby/3.1.0/gems/pg-1.4.4/lib/pg_ext.bundle
  Reason: tried: '/opt/homebrew/opt/postgresql/lib/libpq.5.dylib' (no such file), '/usr/local/lib/libpq.5.dylib' (no such file), '/usr/lib/libpq.5.dylib' (no such file), '/opt/homebrew/Cellar/postgresql@14/14.5_5/lib/libpq.5.dylib' (no such file), '/usr/local/lib/libpq.5.dylib' (no such file), '/usr/lib/libpq.5.dylib' (no such file) - /Users/komagata/go/src/github.com/fjordllc/bootcamp/vendor/bundle/ruby/3.1.0/gems/pg-1.4.4/lib/pg_ext.bundle
/
  opt/
    homebrew/
      opt/
        postgresql/
          lib/
            postgresql@14/
              libpq.5.dylib <- 有る
            libpq.5.dylib <- 無い

/opt/homebrew/opt/postgresql/libの中にはlibpq.5.dylibが無くてpostgresql@14ってディレクトリの中にある。なんかシンボリックリンク作成やコピーのミスのような雰囲気がするけど、とにかくライブラリの位置が変わってるっぽい。

とりあえずシンボリックリンクを貼ったら動いた。HomebrewのFormulaのreposを覗いてみたけどちょっとよくわからなかった。

$ ln -s /opt/homebrew/opt/postgresql/lib/postgresql@14/libpq.5.dylib /opt/homebrew/opt/postgresql/lib/libpq.5.dylib

@bluerabbit777jpさんが使ってるのを見て良さそうだったので使い始めたTablePlus

MySQL、PostgreSQL両方行けるし、最近落ちまくりで困ってたSequel Proと違って落ちないし、Free Trialでしばらく使っていい感じだったのでライセンス購入しました。

Image from Gyazo

Cloud SQL Proxy経由でCloud SQLもしっかり使えております。便利〜。

macデフォルトは古いのでbrewで入れる。

% brew install ctags

vim-tagsを入れる。

.vimrc:

Plug 'szw/vim-tags'

let g:vim_tags_project_tags_command = "/usr/local/bin/ctags -R {OPTIONS} {DIRECTORY} 2>/dev/null"
let g:vim_tags_gems_tags_command = "/usr/local/bin/ctags -R {OPTIONS} `bundle list --paths` 2>/dev/null"

:TagsGenerateする。(.gitがあると.git/tagsに作られるみたい便利)

  • C-]: 定義にとぶ
  • C-o: 前のバッファに戻る
  • C-i: C-oの逆

2020年07月06日修正:bundle showはDEPRECATEDなのでbundle listに修正。(これが原因でtagが読めなくなってた)

こんにちは、タイトルは昨今の流行を取り入れた自虐です😭

MacBook Pro 13inch 2020が来たので設定しつつ、いつもやっている設定を書きます。

キーボードや入力設定をする

まずはこれ。

  • CapsLockをControlにする。
  • キーリピートを最速に、リピート入力認識を最短にする。

App Storeからアプリをインストール

すでにインストールしてたやつをまた入れる。

  • CotEditor
  • Slack
    • みんな大好き。
  • Simplenote
    • 自分用のテキストはここに置いてます。
  • Kindle
    • PCで使うことは意外と多い。
  • TweetDeck by Twitter
    • こういうツールでホームのタイムラインは視界に入れないようにすると精神衛生上良い。
  • Xcode
    • 一応。

Homebrewをインストール

CLI系のアプリをインストール。

  • ghq
  • fzf
  • git
    • 新しい版を使いたい。
  • postgresql
    • 大好き。
  • mysql
    • 嫌いではない。
  • the_silver_searcher
    • 主にvimから全文検索するために使っています。もっといいものが最近はあるけど、vimgrepに比べたら超速いので満足してます。
  • tig
    • Unity+C#をやった時に大量のファイルをaddするのが辛くて使い始めました。
  • node
    • node-gypが憎い。
  • yarn
    • railsで必須だから以外に思い入れは無い。
  • pwgen
    • 手元でサッとランダムなパスワードを作りたい時のために。
  • screen
    • いい加減にtmuxに移りたいが同じ設定がtmuxでできず放置中。
  • go
    • あんまり書いてませんが、プログラムのディレクトリ構成はgoに合わせたままです。
  • rbenv
    • ~/.zshrcに設定を追記するのを忘れてスクールの生徒の方がいつもハマるやつ。
  • ruby-build
    • 最近色々オプションつけなくても良くなった気がする。
  • vim
  • hugo
  • imagemagick
    • 昔は荒ぶっていたが最近は大人しいヤツ。
  • ffmpeg
    • とっつき辛いが覚えれば一番ちゃんと動いてくれるやつ。
  • zsh
  • direnv
    • 特に無し。
  • hub
    • 特に無し。

Homebrew CaskでGUIアプリをインストール。

  • google-chrome
    • メインのブラウザです。
  • chromedriver
  • cyberduck
    • 滅多に出番はないけど慣れてるので使っちゃう。
  • fluid
  • messenger-native
  • sequel-pro
    • 最近不安定。
  • dbeaver-community
    • 使い辛いけど、Sequel Proが落ちる時に。
  • postico
    • 一番使うDBはPostgreSQLなのでお世話になってます。問題が起きたこと無し。
  • macdown
    • ブログなどの長文はこれで書いてます。
  • gyazo
    • いまだに神アプリ
  • discord
    • 自作キーボードのチャンネルに入る時に使ってます。
  • deepl
    • 翻訳すごいですね。
  • libreoffice
    • 主に他の会社の方のドキュメント編集用。Numbersは大抵崩れる。更に互換性が必要な場合はオンラインのOfficeを使う。
  • docker
    • メモリ喰い。
  • openemu
    • 最近中華ポータブルゲーム機にハマってるので。
  • steam
    • Windowsのゲーム用PCでは大活躍中だけど、macは仕事用なのでアンインストールした方がいいかもしれない。僕がやりたいゲームは大抵macでも動くのが困る。
  • sketch
    • 図を書く時に使う。以前Photoshopから移行してきた。
  • visual-studio-code
    • プログラミングスクールとしてはこれを前提としてるのでカリキュラムを作ったり、スクショを撮ったりする時に使います。
  • dropbox
    • 会社のドキュメントを共有してます。
  • 1password
    • 会社のパスワードを共有してます。

手動でアプリを入れる

App Storeにもhomebrewにも無いやつ。

  • zoom
    • 特に競合に対して優位性はないような気がする。

sshの鍵を入れる

USBメモリに入れてるsshの鍵をmacにコピー。

colinux上で作った鍵を使い回していて、セキュリティ的にまずいので作り直した方がよさそう。(今自分のブログを検索したところ2005年頃作った鍵のようだ)

dotfileをダウンロード

bitbucketで管理してたdotfileはgithubのprivateも無料になったのでgithubに移行しました。

シンボリックリンクを貼るsymlink.rbって昔書いたscriptをずっと使ってるけどずっと動いてる。

dotfilesを管理しよう - Qiita

仕事のプロジェクトを動かしてみる

いくつか動かしてみて動いたらOK。

ファイル共有

ドキュメントや画像なんかはicloud driveが安いのでほとんど入れてます。写真はGoogle Photos。

昔に比べるとクラウドで同期されるものが増えて、macを買った時の設定は楽になりました。

Mac設定の自動化

かっちりスクリプト or ツールで自動化しても、実行する機会が滅多に無いので、実行するたびに時代が変わっていてメンテナンスが必要になるのであまり楽にならないというあるある。(会社など複数人で使う自動化は意味がある)

最近のハードウェア・OSのアップデート戦略

以前は、

「毎年旧正月には禊として身を清めてから下ろしたての下着を履きクリーンインストールすべし。1年の垢と厄とキャッシュファイルをきれいにするのだ。」

などと言っていたのですが、

「OSアップデートもクリーンインストールもしない。2年に一度MacBookを買い換えれば良い」

という怠惰な戦略になっています。(最近はMacBookの進化が鈍化してるので買い替え頻度も落ちている)

ただ、上記に書いたように買い換えたときはTime Machineからリストアせず、まっさらから手動で設定しています。

フィヨルドブートキャンプをはじめるのにMacが必要なのですが(習熟しているならLinuxもOK)、どれを買ったらいいのかおすすめが知りたいと聞かれるのでおすすめを。

MacBook Air、CPUは良い方、ストレージはなんでもいい、USキーボード

AppleのWebから買うこと。

理由

  • CPU
    • Core i3はちょっときつい。
  • ストレージ
    • 最小限でも512GBになったのでどれでもOK。
  • USキーボード
    • セミコロンやダブルクォートなど、プログラミング言語で多用される記号はUS配列を前提に作られてるっぽいから。
  • AppleのWebから買う
    • Macは値引きほとんどしないのでどこで買っても値段は一緒。
    • 基本、カスタマイズできるのはAppleのWebかApple Storeだけ。

2016年12月26日現在、macOS Sierraでcapybara-webkitを動かすのは少し厄介です。

brew install qtとかbrew install qt5では動きません。

https://github.com/thoughtbot/capybara-webkit/wiki/Installing-Qt-and-compiling-capybara-webkit#macos-sierra-1012

qtを本家からインストールし、PATHを通し、ソースを書き換える必要があります。

qt-opensource-mac-x64-clang-5.5.1.dmg

# ~/.zshrc
export PATH=~/Qt5.5.1/5.5/clang_64/bin:$PATH

~/Qt5.5.1/5.5/clang_64/mkspecs/features/mac/default_pre.prfの15行目の、

isEmpty($$list($$system("/usr/bin/xcrun -find xcrun 2>/dev/null"))): \

isEmpty($$list($$system("/usr/bin/xcrun -find xcodebuild 2>/dev/null"))): \

に変える。

もうしばらくすればbrewで行けるようになるとは思いますが・・・。

TouchBar有りのMacBook Pro13 inch買いました。macOS Sierraになったんですが、githubへpushする時など、KeyChainがsshの秘密鍵のパスフレーズを覚えてくれなくなりました。

下記でplistに設定を追加すればよいようです。

$ curl -o ~/Library/LaunchAgents/ssh.add.a.plist https://raw.githubusercontent.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain/master/ssh.add.a.plist

ssh-agentにキーを登録する。

$ ssh-add -K ~/.ssh/id_rsa

開発用ではvimやAtom、Xcodeなどを使ってますが、ちょっとメモったり何かの下書きなどはCotEditorを使っています。

メモなどはspotlightですぐ立ち上げてプレーンテキストで、等幅フォントで書きたい。余計な機能も見た目も要らない。軽くてすぐ立ち上がるものが良い。

CotEditorで無駄なものを非表示にするとこんな感じの見た目にできます。

https://gyazo.com/14e5d959ac916eea56b1ee192e8c0aa8

プログラムなどで状況が混乱した時もCotEditorにメモって整理します。

書いたものはCotEditorでファイルに保存することは殆どなく、コピペでWebのフォームに投稿したり、別のツールに貼ったりが多いです。

そういったいつでも使えるサブツールとしてとても気に入ってます。

質問いただいたのでブログに書いときます。(同一LAN内のiPadで確認するときも使えますよー。)

ネットワークユーティリティで自分のMacのIPアドレスを確認します。

上記のIPアドレスを指定してrailsを起動します。(bindのbです)

$ rails s -b 192.168.1.13

そのIPにGenymotionからアクセスすれば見れます。

やったね。

例によってクリーンインストールしました。

ハマったところ

gemのeventmachineのインストールにオプションが必要になった。

$ bundle config build.eventmachine --with-cppflags=-I$(brew --prefix openssl)/include

それ以外は特になし。怖話も動きました。

Blaboで必要なphantomjsがまだないのがウゼーですね。

% brew install phantomjs
phantomjs: OS X Yosemite or older is required.
Error: An unsatisfied requirement failed this build.