愛用しているMacBookProが、 「バッテリーの交換修理のアラートがでる」 「tのキーのツメが割れて打てない時がある」 「そもそもキーボード交換修理プログラムの対象モデル」 という問題揃い踏み状態となっていた。 幸いAppleCareの期間内でもあったので、2020の年始に修理に出すことにした。 しかしながらバリバリ仕事で使っているものなので、修理中、トラブルシューティングに対して無防備になるのは避けたい。
そこで、以前買っていたSurfaceGoをサブマシンとしてしたてて、しばらくの間はこれで乗り切れるようにした。 また、簡易の対処マシンとして、お出かけの際に重宝できるだろうという目論見もあった。
どんな感じに仕立てたのか、備忘録として記録しておく。 ただ、仕立てる決意をしたのが秋で、一気に仕上げたのが最近なので、その間に対応した細かい設定を忘れてしまった...。 いつの間にかgit-bash.exeが入っていたけど、どんな経緯で入れたのか覚えていない...。
Dropboxに.kdbxのファイルを置いておく
まず自分の生活に欠かせないのがパスワード管理ツール。 二段階認証しているとはいえ、Githubへのログインにもまずパスワードが必要となる。 自分はKeePassXを使っているので、.kdbxのファイルをDropboxに入れておき、MacBookPro/SurfaceGo どちらからでも参照できるようにした。片方使っているときは.lockが追加されたり削除されたりの通知が出てくるので、うっかりlockしたまま片方のPCを閉じてしまったりしないように一応気を付けた。
Railsが動く環境を整える
RailsGirlsのページが一番詳しいと自分は思っている。都度メンテナンスもされているのでありがたい。 https://railsgirls.jp/install#setup_for_windows
開発周辺の状況
- ローカルサーバはWSL(Windows Subsystem for Linux)でたてる。 /mnt/c 直下にリポジトリは置く。
- ソースコードはAtomでCドライブ直下のリポジトリを参照して編集する。
git clone ができない
betachelsea@pcname:/mnt/c/projects$ git clone git@github.com:betachelsea/piyopiyo Cloning into 'piyopiyo'... Warning: Permanently added the RSA host key for IP address 'xxx.xxx.xxx.xxx' to the list of known hosts. git@github.com: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
SurfaceGoにまだ鍵を準備していなかった!
ref: GitHubでssh接続する手順~公開鍵・秘密鍵の生成から~ - Qiita
ref: SSH keyを4096bitで作成する - Qiita
$ ssh-keygen -t rsa -b 4096 $ cat ~/.ssh/id_rsa.pub
表示された鍵を https://github.com/settings/keys に登録すると、git cloneができるようになった。
任意のRubyをいれる
すでにRailsGirlsのチュートリアルでrbenv, Rubyは入っていたが、最新化して任意のバージョンをいれられるようにした。
# rbenv 最新化 $ cd ~/.rbenv $ git pull # ruby-buildも新しくする $ cd ~/.rbenv/plugin/ruby-build $ git pull $ rbenv install 2.6.5 $ rbenv versions * 2.6.3 (set by /home/betachelsea/.rbenv/version) 2.6.5
bundlerを入れる
Rubyを入れたばかりだとbundlerもないのでまずbundler入れる。
$ gem install bundler # もしバージョン指定が必要なら(Gemfile.lockの都合とか) $ gem install bundler -v 2.0.2
環境変数を設定
必要なものがあれば ~/.bashrc に書いておく。
$ vim ~/.bashrc export SECRET_TOKEN="xxxx...."
再読み込みも忘れずに。
$ source ~/.bashrc
postgresql をインストール
posgresqlを動かせるようにする。
ref: Ubuntu16.04にPostgreSQLをインストール - Qiita
ref: PostgreSQL 11.1をUbuntu 18.04へインストールし、外部から接続する - Symfoware
$ sudo apt-get update $ sudo apt-get install postgresql
psql コマンドが動かない
betachelsea@pcname:~$ psql psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
ref: PostgreSQL で psql コマンド を実行したら could not connect to database postgres: could not connect to server: No such file or directory と出る場合 - 約束の地
上記記事を参考にしてclusterをスタートさせてみる。
$ pg_ctlcluster 10 main start betachelsea@pcname:~$ psql psql: FATAL: role "betachelsea" does not exist # FATALではあるが、通ってはいるのでOK
接続用DBユーザ作成
betachelsea@pcname:~$ sudo su - postgres # config/database.ymlに書いておいてあるusernameとパスワードのユーザを作る。 postgres@pcname:~$ createuser -d -U postgres -P dbuser Enter password for new role: パスワードを入力 Enter it again: パスワードを入力 # ユーザーが追加された。 postgres@pcname:~$ psql psql (10.10 (Ubuntu 10.10-0ubuntu0.18.04.1)) Type "help" for help. postgres=# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------------------+----------- dbuser | Create DB | {} postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
rake db:create でDB作成
デフォルトではDBへの接続はPeer認証になっていて、ログインユーザからの $bundle exec rake db:create
は失敗してしまう。
そのため、pg_hba.conf を変更する。
ref: PostgreSQLのDBに接続しようとしたら、エラーで接続できない
ref: PostgreSQLのPeer認証と他の認証方法への変更 | Web Memorandum
ref: [Ubuntu 16.04] PostgreSQLのリモート接続設定 - Qiita
ref: [備忘録]WSL(Ubuntu)でPostgresを試す - Qiita
betachelsea@pcname:~$ sudo vi /etc/postgresql/10/main/pg_hba.conf # "local" is for Unix domain socket connections only local all all peer # ↓ 次のように変更 local all all md5 # 再起動する betachelsea@pcname:~$ sudo service postgresql restart * Restarting PostgreSQL 10 database server [ OK ]
改めてdbをつくってmigrationする
betachelsea@pcname:/mnt/c/projects/piyopiyo$ bundle exec rails db:create betachelsea@pcname:/mnt/c/projects/piyopiyo$ bundle exec rails db:migrate
Redisいれる
$ rails s
して localhost:3000 にアクセスしてみると、次のエラーが出た。
This results in IO::EINPROGRESSWaitWritable Operation now in progress - connect(2) would block
ref: Ruby on Rails: Operation now in progress - connect(2) would block - Stack Overflow
ref: redis - System has not been booted with systemd as init system (PID 1). Can't operate - Stack Overflow
そういえばRedisを使っていた。
$ sudo apt install redis-server $ sudo service redis-server start
bundle install のエラーはapt-getで解決
結構世の中にはbrew(Homebrew)でinstallして解決とか書かれているが、あれはMacOSのパッケージマネージャーなので、apt-getで対応する。 ほかにはリポジトリによって多種多様だと思うので、各自頑張るしかなさそう。 まずエラーを読んでググればとりあえずなんとかなる。
サーバにsshできるようにしておく
必要なサーバにsshできるように設定しておく。 sshしたいサーバを事前にリストアップして設定、疎通確認しておくのが肝要。
deployが権限的にできない
capistranoでデプロイしようとしたところ、Could not open a connection to your authentication agent.
と出て出来なかった。
ssh-add
するといいらしい。次の記事を参考にして解決した。
ref: ssh-addできなかったときへの対処 - Qiita
$ eval `ssh-agent` $ ssh-add ~/.ssh/id_rsa
MacBookProを修理に出す
無事、SurfaceGoでなんとかいつも通り仕事ができるだろうという感触を得られたため、AppleStoreに予約をして修理をお願いした。 年末年始、工場が動いていないので結局修理期間は平日に食い込むことになった。 また、AppleCareに加入してなければ¥53,000の修理費がかかったようだ。入っててよかったAppleCare...。
- 12月30日(日) 昼頃に修理依頼、預ける
- 1月4日(土) Apple修理センターに到着(メールが届く)
- 1月5日(日) 修理開始の連絡メールが届く
- 1月6日(月) 製品をお渡しする準備ができましたのメールが届く、引き取りに向かう
実質2~3日での修理だった。年末年始じゃなくて平日金曜とかに出した方がよかったのかもしれない...。 何はともあれ無事仕事の相棒は戻ってきたし、簡易お出かけの軽いSurfaceGoの整備もできた。
よかったよかった。 2020年もやっていくぞ。