解決 You have already activated x, but your Gemfile requires y
錯誤訊息將專案部署到 Ruby 3 版本的 Production 環境時,網頁跑不起來,在 Nginx 的 error log 出現以下錯誤: 12345678910111213141516171819202122232425262728[ E 2023-03-09 07:36:26.5249 368322/T8 age/Cor/Con/CheckoutSession.cpp:281 ]: [Client 2-12] Cannot checkout session because a spawning error occurred. The identifier of the error is 23a96bb5. Please see earlier logs for details about the error.App 369021 output: Error: The application encountered the following error: You have already activated strscan 3.0.4, but your Gemfile req ...
如何停用瀏覽器轉址
今天在研究部落格搬家的時候,在痞客邦的文章加入了轉址語法進行測試: 1<meta http-equiv="refresh" content="http://xxxx"> 結果在前台網頁被過濾掉,沒有轉址的作用,想再次編輯的時候,一進入文章就觸發轉址轉走,然後就再也無法編輯。 研究了一段時間使用這個方法解決: 打開 FireFox 瀏覽器。 在網址列輸入: about:config 搜索 refresh 找到 accessibility.blockautorefresh 項目。 在右邊的按鈕點一下切成 true 進入編輯文章移除掉語法後再把設定改回來就可以了,如果有使用別人的後台遇到類似事情可以用這個辦法自救。 Chrome 瀏覽器似乎沒有類似的功能,只能使用 FireFox 來處理。
解決 libicui18n.70.dylib (no such file, not in dyld cache)
錯誤訊息最近把 Mac OS 從 Monterey 升級到 Ventura 後, Homebrew 安裝的 Postgresql 就跑不起來: 123456$ brew services info postgresqlWarning: Use postgresql@14 instead of deprecated postgresqlpostgresql@14 (homebrew.mxcl.postgresql@14)Running: ✘Loaded: ✔Schedulable: ✘ 重啟或重新安裝都沒有用,也沒有明確的錯誤訊息。到 Homebrew 的 log 資料夾下查詢: 1$ tail /opt/homebrew/var/log/postgres.log 看到錯誤訊息: 12Referenced from: <B17C4116-8D6C-32B3-8403-3EBE2BBCA14E> /opt/homebrew/Cellar/postgresql@14/14.2_1/bin/postgresReason: tried: '/opt/homebrew/opt ...
利用 binstubs 省略 bundle exec
bundle binstubs在 Ruby 中我們可以使用 Bundler 來管理專案的套件和版本,為了確保執行 rake 等指令時,能使用 Gemfile 一致的設定,我們通常會使用 bundle exec 作為開頭來執行指令,例如: 1bundle exec rake db:migrate 不過每次都要打 bundle exec 顯得有些麻煩,這時候我們可以利用 bundle 的 binstubs 來解決這問題。 例如我們想產生 rake 的 binstubs,輸入 1bundle binstubs rake 會在專案下的 bin 資料夾產生 rake 的 script,這時候執行 1./bin/rake 就相當於 1bundle exec rake 如果想產生全部 binstubs,可以執行 1bundle install --binstubs 不過不建議這樣做,他會在該目錄下產生 .bundler 的設定值,之後只要執行 bundle install 都會重新產生 binstubs,如果有使用 spring 之類的套件會被覆蓋掉。 環境變數產生了 binstubs 之後 ...
Ruby 教學 - 陣列 (Array)
語法一般陣列Ruby 中使用中括號 ([]) 來建立陣列,括號中為陣列元素,以逗點 (,) 隔開: 1p [178, 169.99, "30cm", [9527]] # [178, 169.99, "30cm", [9527]] 陣列中的元素也可以是陣列,而成為多維陣列的應用。 字串陣列Ruby 中另外提供了使用百分比符號 (%) 開頭,加上任意的符號 (非字母數字) 包夾字串陣列元素,以空白隔開,有以下兩種方式: %w{xx oo},不解析內容 %W{xx oo},解析內容 規則和單引號雙引號類似,所有的元素都會是字串型別,如下範例: 1234var = 5566p %w{178 169.99 "30cm" [9527] %w{9527} #{var}} # ["178", "169.99", "\"30cm\"", "[9527] ...
Ruby 教學 - 符號 (Symbol)
語法符號類似一種無法修改的字串,使用冒號 (:) 開頭,有以下三種使用方式: 冒號加名稱,:symbol 冒號加單引號字串,:'symbol' 冒號加雙引號字串,:"symbol" 如下範例: 123p :symbol1 # :symbol1p :"symbol2" # :symbol2p :'symbol3' # :symbol3 程式解析當使用字串形式的時候,也具有和字串一樣程式解析的性質,同樣的是雙引號的時候才有: 1234var = "value"p :"#{var}" # :valuep :'#{var}' # :"\#{var}" 不過一般而言,使用 symbol 通常是固定值,所以這種動態的用法不常使用。 符號的操作符號是無法修改的,但有也部分類似字串的方法: 123456symbol = :"I lose"puts sy ...
Ruby 教學 - 字串 (String)
語法字串有四種使用方式: 單引號 雙引號 Heredoc 百分比符號 (%) 以下逐一進行介紹 單引號以兩個單引號包夾一段文字,表示字串內容,使用單引號的字串有一些特徵如下 (與雙引號比較): 逸出字元 (Escape characters) 只有兩種。 逸出字元 \\ 可省略寫作 \,但不可為最後一個字元 (不建議省略)。 不會對字串中的程式進行解析。 所謂逸出字元是為了某些特別的用途或能以此輸入打不出來的字,而定義的一種使用方式,在此的逸出字元以反斜線 (backslash) 開頭。例如,我們使用單引號做包夾,但字串中如果出現單引號,將會誤判為字串結束單引號,所以使用 \' 來表示字串中的單引號。使用單引號的字串可用的逸出字元如下: 符號 說明 ' 單引號字元。 \ 反斜線字元。 一些使用範例如下: 123456789101112puts '基本用法';puts '也可以斷行';puts 'You\'re a good man.'; # You'r ...
Ruby 教學 - 數字 (Numeric)
語法Ruby 的數字型別許多衍生的類別,本文將針對整數和浮點數介紹。從整數的角度來看,它可以用以下四種寫法: 十進位制。 十六進位制,0x 開頭。 八進位制,0 開頭。 二進位制,0b 開頭。 例如: 1234puts 100 # 100puts 0x100 # 256puts 0100 # 64puts 0b100 # 4 浮點數的部分則必須寫出小數點或科學記號表示: 1234567puts 1.23 # 1.23puts 12e3 # 12000.0puts 12E-3 # 0.012puts 1.0 / 3 # 0.3333333333333333puts 1 / 3 # 0, 特別注意puts 10 / 3 * 1.1 # 3.3000000000000003puts 10.0 / 3 * 1.1 # 3.666666666666667 尤其要注意的是除法的部分,如果前面的數字是整數,結果可能不如預期。 數值的範圍整數的部分會自動轉換成大數型別,所以理論上是正負無窮大,浮點數的部分則介於 2.225073858507201 ...
Ruby 教學 - Nil, True 和 False
NilClass語法其他程式語言中的空值 (Null) 在 Ruby 使用 nil 來表示: 12value = nilp value # nil 判斷Ruby 中的物件都只和自己相等,所以即使是和 false 和 0 也和 nil 不相等,如下結果 123puts nil == nil # trueputs nil == false # falseputs nil == 0 # false 另外 Object 提供一個內建函數 nil? 用來判斷物件是否為 nil,只有 nil 會回傳 true 123puts nil.nil? # trueputs false.nil? # falseputs 0.nil? # false 轉型由於 Ruby 所有東西都是物件,包含 nil,所以和其它語言不同之處,它可以進行其他操作,例如呼叫轉型的函式: 1234p nil.to_s # ""p nil.to_i # 0p nil.to_a # []p nil.to_h # {}, Ruby 2.0 之前會出錯 TrueCla ...
Ruby 教學 - 資料型態 (Data Type)
Ruby 的物件導向由於 Ruby 是個完全物件導向的語言,它不像其他語言使用原始型別 (primitive types),例如 int, bool 之類的型別,所有的實字 (literal) 都會被解析成對應的物件來使用。 從上圖可以看到物件的階層關係,所有型別皆繼承自物件 (Object),甚至是模組 (Module) 和類別 (Class)。 之後幾篇文章將逐一介紹一些主要的型別,包含以下項目: 字串(String) 符號(Symbol) 數字(Numeric) 整數(Integer) 浮點數(Float) 陣列(Array) Hash 範圍(Range) Nil True False 物件類別所有型別都是物件,可以利用 class 的屬性來查看物件型別: 1234567891011puts "Hello".class # Stringputs :Hello.class # Symbolputs 1.class # Fixnumputs 999999999999 ...