[Mac/Rails] 接手一台新電腦

陳漢庭
25 min readJan 6, 2021

--

Mac

還記得剛做第一份工作的時候拿到一台新的macbook的時候還蠻興奮的,不過很快地就開始有適應不良的狀況。由於我是因為工作的關係,不得不習慣公司配給我的電腦。

身邊有許多人買了一台macbook以後,不了解自己電腦的人也很多,我想把我在接手一台新筆電的過程記錄下來。當然以下流程比較針對用macbook進行開發的朋友,如果有其他需求的歡迎在留言區裡面留言。

由於這次我是接手別人的舊電腦,有些地方跟剛拿到一台新電腦的狀況會不一樣!

  • 刪除mac使用者名稱:點選使用者與群組,開啟鎖頭後直接點選減號即可
  • 改變mac使用者名稱:
    選擇「蘋果」()選單>「系統偏好設定」,然後按一下「使用者與群組」。
    ➡️ 按一下 ,然後輸入您登入時所用的管理者名稱和密碼。
    ➡️ 在左側的使用者列表中,按住Control 鍵並按一下您要重新命名的使用者,接著選擇「進階選項」。
    ➡️ 更改「帳號名稱」欄位,使其與個人專屬檔案夾的新名稱相同。
    ⚠️ 若原本資料夾內有東西則會被刪除,改名前先做好備份
  • 下方欄彈性內縮:系統偏好設定 ➡️ Dock 與選單列 ➡️ 自動隱藏與顯示Dock
  • 滑鼠(使用觸控板不會遇到)
    👀 軌跡:系統偏好設定 ➡️ 滑鼠 ➡️ 改變軌跡速度
    👀 右鍵:系統偏好設定 ➡️ 滑鼠 ➡️ 輔助按鈕
    👀 縮放:系統偏好設定 ➡️ 滑鼠 ➡️ 智慧型縮放
  • Finder 新增家目錄(Home) :Finder 偏好設定 ➡️ 勾選家目錄
  • 顯示隱藏的資料夾:快捷鍵 command + shift + .
  • Command + Tab:切換正在開啟的應用程式
  • 在 Finder 利用指令找資料夾 ➡️ Cmd + Shift + g
  • 在 Finder 利用指令連接FTP ➡️ 打開Finder,按下command+K

Chrome

  • 書籤調整:右上角三個點 ➡️ 書籤 ➡️ 書籤管理員

下載

  • Office 365
  • JetBrains Toolbox:當有額外想要安裝的軟體,就可以利用Toolbox安裝
    ➡️ RubyMine:寫 Rails
    ➡️ Webstorm:寫 Javascript
  • Typora

ITerm2

  • 先安裝ITerm2編輯器,安裝指令為 brew install — cask iterm2
  • 進入iTerm2 ️ ➡️Preferences ➡️ Color,並且將Github專案拉近自己電腦中,右下角匯入完後,就可以選擇自己喜歡的顏色了。

Oh My Zsh

  • 安裝指令(直接從官方github複製):sh -c “$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
  • nano ~/.bashrc 佈置環境(把原本的robbyrussell改成agnoster),並且重新執行 command line ➡️ exec $SHELL
# Set name of the theme to load --- if set to "random", it will
# load a random theme each time oh-my-zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
ZSH_THEME="agnoster"
  • 裝完之後環境如下,因此還要再另外改字體樣式
  • 改動的方法為
    brew tap homebrew/cask-fonts ➡️ brew search nerd (nerd相關字體)➡️ brew install font-ubuntu-mono-nerd-font ➡️ 在 Preferences 👉 Profiles 👉 Texts 👉 下方文字選下載的字題即可
指令提示(灰色字體)
  • 相關設定參考資料:

Command Line

  • 查看電腦啟動 ruby 位置 :which ruby
    ➡️ /usr/bin/.rbenv/shims/ruby 為啟動版本控管rbenv 的ruby
    ➡️ /user/bin/ruby 則是啟動系統 ruby
  • 一些常用的 command prompt 快捷鍵
Tab      => 把沒打完的自動打完(依據以前打過的指令)
ctrl + L => 清除command prompt的東西
ctrl + A => 將游標移到最前面
ctrl + E => 將游標移到最後面
ctrl + U(Q) => 刪除該行
ctrl + K => 刪除游標後面,保留游標前面
ctrl + W => 刪除游標前面,保留游標後面(若指令有空白字元時,會一落一落刪)
ctrl + H => 刪除游標後面,保留游標前面(刪除一個字元)
ctrl + D => 刪除游標前面,保留游標面(刪除一個字元)
ctrl + Y => 用了上述刪除指令的反悔復原
ctrl + P => 看上一個指令
ctrl + N => 看下一個指令

問題

  • 要如何處理手動執行source ~/.bashrc 的問題:
    ➡️ Google 關鍵字:bashrc auto source
  • .bashrc 不會自動讀入
    Been there, done that.
    What I came aware of, OS X doesn’t read .bashrc file on bash start. Instead, it reads the following files (in the following order):
    /etc/profile ❤️ ~/.bash_profile ❤️ ~/.bash_login❤️ ~/.profile
if [ -s ~/.bashrc ]; then
source ~/.bashrc;
fi
  • 常理來說, ~/.bash_profile 會自動讀入,但如果有使用oh-my-zsh就不會自動讀入 ➡️ If you are using oh-my-zsh, the default one that will be loaded automatically is ~/.zshrc. All you need to do is adding the following at the end of ~/.zshrc ,取而代之的是在 ~/.zshrc 寫入:
if [ -f ~/.bash_profile ]; then
. ~/.bash_profile
fi
  • 如果利用system ruby bundle 會出問題:️網頁的最底下利用更動環境變數解決了,但因用版本控管工具的解法還是比較好。這方面就不採納!
Your user account isn't allowed to install to the system RubyGems.
You can cancel this installation and run:

bundle install --path vendor/bundle

to install the gems into ./vendor/bundle/, or you can enter your password
and install the bundled gems to RubyGems using sudo.

Password:
  • Mysql2::Error::ConnectionError: Can’t connect to MySQL server on ‘127.0.0.1’ (61) ➡️ 目前還找不到確切的問題,所以利用walk around的方式把資料庫放在docker 內,讓專案連進 docker 的資料庫
> mysql -u root (登入動作)ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
  • pg 無法使用問題,以及解決方式:
PG::ConnectionBad: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
# 解決方式
$ rm /usr/local/var/postgres/postmaster.pid
$ brew services restart postgresql
  • brew 無法寫入:

Mysql

  • 大多數的專案不會將 database.yml 放進 git 內,所以開發者必須好好留住該檔案。
  • 使用gem mysql2時可能會遇到的問題:
An error occurred while installing mysql2 (0.5.3), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.5.3' --source 'https://rubygems.org/'` succeeds before
bundling.

解決方法:

# 解法1
bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"
# 解法2
gem install mysql2 -- --with-cflags=\"-I/usr/local/opt/openssl/include\" --with-ldflags=\"-L/usr/local/opt/openssl/lib\"
# 解法3
bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"
bundle install

如果裝了bundle,但是本地的mysql建置卻有問題的話,在docker啟動 mysql也是一種選擇,所以後來要告訴讀者要怎麼在mac使用docker

  • rails db:migrate 問題:
Access denied for user 'root'@'localhost' (using password: YES)
Couldn't create 'tungrp_dev' database. Please check your configuration.
rails aborted!
Mysql2::Error::ConnectionError: Access denied for user 'root'@'localhost' (using password: YES)
/Users/chenhanting/Documents/liteshop/tungrp-backend/bin/rails:9:in `<top (required)>'
/Users/chenhanting/Documents/liteshop/tungrp-backend/bin/spring:15:in `<top (required)>'

遇到權限不足,代表database.yml 密碼打錯,更正即可。如果忘記密碼,可以:

  1. Make sure you have Stopped MySQL first (above).
  2. Run the server in safe mode with privilege bypass: sudo mysqld_safe --skip-grant-tables
  3. In a new window connect to the database, set a new password and flush the permissions & quit: mysql -u root
  4. Run the server in safe mode with privilege bypass: sudo mysqld_safe — skip-grant-tables(連結
# Terminal
mysql -u root
# mysql
UPDATE mysql.user SET authentication_string=null WHERE User='root';
FLUSH PRIVILEGES;
exit;

# Terminal
mysql -u root
# mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';
  • 遇到 Mysql2::Error::ConnectionError: Can’t connect to MySQL server on ‘127.0.0.1’ (61) 如何解決

首先先brew services stop mysql ,再 Stop the mysql server

sudo mysql.server stop

再來 Start mysql in safe mode

sudo mysqld_safe --skip-grant-tables

最後 exec $SHELL ,再brew services start mysql 。確定 mysql -u root -p 可以登入後就可以rails db:migrate

Docker

無法本地無法連上mysql,就可以使用 docker 連 mysql。首先要先下載docker,下載完之後就可以使用docker指令

終端機:

  • mysql:5.7 的部分,可以改成 mysql:latest / mysql:5.6
  • mysql_han這邊可以填寫取名自己喜歡的名字
# mysql
docker run --name mysql_han -e MYSQL_ROOT_PASSWORD=password -p "3306:3306" -d mysql:5.7
# postgres
docker run --name postgres_han -e POSTGRES_PASSWORD=password -d postgres

安裝畫面長這樣:

pg也可以:

docker run --name pg_han -e MYSQL_ROOT_PASSWORD=password -p "3306:3306" -d postgres:latest

Ruby

  • rails db:setup = rails db:(create + migrate + seed)
  • rails db:prepare = rails db:(create + migrate + seed)
  • In a nutshell rails db:seed:replant truncates all the database tables for the current environment and then loads the seeds. Run the task with --trace option can see in detail what all it does.

rbenv

ruby 的版本控管工具一共有三種,分別為rvm, chruby, rbenv 。個人是沒有什麼偏好,在第一間公司的時候用的是rvm,之後就一直用rbenv

  • 系統的 ruby 切換到 rbenv (參考這裡
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
  • ruby versions
  • rbenv version
  • rbenv local 2.7.1 ➡️ 切換到2.7.1版 ⚠️ 如果有環境變數則無效
  • env | grep RBENV
  • rbenv shell 2.7.1 ➡️ 改變 RBENV_VERSION

我後來直接在bash_profile裡面寫入 rbenv shell — unset ,使去除環境變數 RBENV_VERSION

  • 使用rbenv安裝ruby最新版本卻發現沒有,可以upgrade看看。
brew upgrade rbenv ruby-build

設定alias

  • 設定icloud路徑:在~/.bash_profile設定以下指令並且 exec $SHELL 即可使用
alias icloud='cd ~/Library/Mobile\ Documents/com~apple~CloudDocs'
  • 刪除rbenv

➡️ Remove using brew: brew remove rbenv
➡️ Delete .rbenv directory: rm -rf ~/.rbenv
➡️ Open .bash_profile file and delete any lines with rbenv in them: vi ~/.bash_profile
➡️ Open .bashrc file and delete any lines with rbenv in them: vi ~/.bashrc

SSH

Ngrok

ngrok 做為一個轉發的伺服器,可以把外界的請求轉發到你指定的 Port,使用的背景原理是連接到 ngrok 雲端伺服器,將你本機指定的地址公開,再將由 ngrok 一串公開的網址來存取內容。

他的優點是快速而且還提供了 https 的服務讓你使用上更安全,甚至還可以設置密碼保護。

  • 使用方式:下載 ➡️ 解壓縮 ➡️ 將ngrok放在要執行的資料夾(我放在icloud裡面)➡️ 在放置 ngrok 位置的地方執行 ngrok指令
  • bash 指令中,alias可以加入參數嗎?

答案為不行(詳述在上方連結 ⬆️),不過可以在shell裡面寫function,並外部執行:

# 使用 ngrok
ngrok() {
cd "$icloud_path/Documents/application"
./ngrok http "$1"
}

如此一來,執行ngrok 3000 即可執行ngrok指令。

環境變數

以下三個mac使用者常碰到的環境設定檔裡面,我的設定檔設定方式如下

  • bash_profile ➡️ alias 為個人電腦的快捷鍵
  • bashrc
  • zshrc

SourceTree

  • Invalid Username or password 的解決辦法:
1. Open finder, click Cmd + Shift + g2. enter ~/Library/3. Go to Application Support/SourceTree folder4. delete userName@STAuth-bitbucket.org5. Open KeyChain Access6. search for sourctree7. delete the ‘login’ item8. clone your source from bitbucket9. KeyChain will ask for you bitbucket pass

Bundle

  • 如果bundle出現問題則可以試試看
bundle config set --local path 'vendor/bundle'

--

--

陳漢庭

由於零散的紀錄過了一段時間之後就看不懂了,於是為了強迫自己用故事的方式記錄學到的東西,就開啟我的發文之路。