發表文章

目前顯示的是 11月, 2020的文章

Ruby foreman 讓領班來幫你處理麻煩會忘記的事吧 !

圖片
why foreman 利用 foreman 配置檔案,把不同配置連同環境變量,壓縮到一句指令就能啟動整個系統 foreman github gem 的配置 group :development do gem 'foreman' end Install rails webpacker:install npm install webpack-dev-server gem install foreman bundle install bundle install 之後 bundle install 之後,接著在專案的根目錄新增一個名為 Procfile 的檔案,裡面先寫個 rails: bin/rails server -p 3000 然後在該目錄去呼叫 foreman start -f Procfile.dev

Rails i18n 多語系

圖片
這篇的由來 因為近期有一張重構的票,剛好有需要用到 i18n 所以特別找了相關資料和原始碼 i18n 名字的由來 會寫這個是因為在搜尋相關資料的時候看到的,因為覺得實在太有趣所以特別記錄一下 ( 笑 在資訊科技領域,國際化與在地化(英文:internationalization and localization)是指修改軟體使之能適應目標市場的語言、地區差異以及技術需要。 基於他們的英文單字長度過長,常被分別簡稱成i18n(18意味著在「internationalization」這個單字中,i和n之間有18個字母)及L10n。使用大寫的L以利區分i18n中的i和易於分辨小寫l與1。 簡單來說就是覺得太長,所以用個代號來取代 ( 笑 i18n gem i18n Github 網址是,Ruby gem 的 Github 存放位置,裡面有相關設定與介紹 install gem 'i18n' load_path 通常在 Rails 裡面,語系設定的 yml 會放在 config > locales 裡面,不過我們為了比較好管理所以可能會用資料夾來分類,再把整理好的各自放進相關的資料夾來進行管理,所以在 locales 資料夾底下會有很多資料夾,在資料夾裡面又有很多語系設定的 yml config.i18n.load_path += Dir["#{Rails.root}/config/locales/**/*.yml"] 用這種寫法來把底下所有的 yml 檔案全部讀取,會以文字陣列的方式來寫入 locales 底下所有文件路徑變成 String 陣列 特別要注意的是, 後寫的會覆蓋過前面的 ,這部分我會在 yml 那進行介紹 fallback 根據 i18n/lib/i18n/locale/fallbacks.rb 文件介紹 using the default locale as default fallback locale 當如果設定的沒吃成功,就會以退回預設的 config.i18n.fallbacks = { 'zh-TW': %i[zh-TW zh-CN en], 'zh-CN': %i[zh-CN zh-TW en], en: %i[en z...

Ruby Const_defined?

圖片
Ruby const_defined? 今天看專案的時候,看到一段 return self.class::ABC if self.class::const_defined?(:ABC) 後來到 apidock 看了一下,原文大概是查看 mod 或是祖先裡面是否已經定義常數名稱 const_defined?(*args) public Says whether mod or its ancestors have a constant with the given name 下面是網站的範例 : Float.const_defined?(:EPSILON) # true, found in Float itself Float.const_defined?("String") # true, found in Object (ancestor) BasicObject.const_defined?(:Hash) # false 然後如果在 classes 或是 Modules 裡面撿查中,發現常量不存在但是有自動加載,會直接回傳 true 但是不會自動加載 module Admin autoload :User, 'admin/user' end Admin.const_defined?(:User) # true

MySql 重新安裝 Remove MySql Completely

圖片
MySql 重新安裝 呈 上篇 發現那樣處理,另外一個專案還是會打不開 QQ 所以後來決定整個砍掉再重新裝一次 Open the Terminal Use mysqldump to backup your databases Check for MySQL processes with: ps -ax | grep mysql Stop and kill any MySQL processes Analyze MySQL on HomeBrew: brew remove mysql brew cleanup Remove files: sudo rm /usr/local/mysql sudo rm -rf /usr/local/var/mysql sudo rm -rf /usr/local/mysql* sudo rm ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist sudo rm -rf /Library/StartupItems/MySQLCOM sudo rm -rf /Library/PreferencePanes/My* Unload previous MySQL Auto-Login: launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist Remove previous MySQL Configuration: subl /etc/hostconfig` # Remove the line MYSQLCOM=-YES- Restart your computer just to ensure any MySQL processes are killed Try to run mysql, it shouldn’t work 資料來源

Ruby 裡的 Symbol

圖片
什麼是符號 在 Ruby 中什麼東西幾乎都是物件 , 那符號其實就是 有名字的物件(an object with a name) 對於字串來說像是 “8======3” 這是一個字串物件 irb(main):001:0 "8======3".class String 對於 0 這是一個數字物件 irb(main):002:0 0.class Integer :handsome 這是一個符號物件 irb(main):003:0 :handsome.class Symbol 不過要注意的是,符號不是一個變數就只是一個值而已 irb(main):004:0 :ruby :ruby irb(main):005:0 1 1 這裡的1並不是變數,就是個值所以當我打出1的時候就給我1的值,當我打出:ruby就給我:ruby 所以當用下面這種寫法的時候,就會爆出語法錯誤 原因是左邊的 :ruby 是一個值,右邊又是一個值 irb(main):006:0 :ruby = "Emerald" SyntaxError ((irb):6: syntax error, unexpected '=', expecting end-of-input) :ruby = "Emerald" ^ 應該要左邊是變數去接右邊的值 irb(main):007:0 ruby = :ruby :ruby irb(main):008:0 love = :alice :alice 所以符號不是變數,就只是一個值或是說物件 另外可以使用 .to_sym / .intern 來字串轉符號 或是用 .to_s / .id2name來符號轉字串 irb(main):009:0 "alice".to_sym :alice irb(main):010:0 "alice".intern :alice irb(main):011:0 :alice.to_s "alice" irb(main):012:0 :alice.id2name "alice"

Ruby dig method

圖片
dig method 依照 apidock 的說明 dig(*args) public Extracts the nested value specified by the sequence of key objects by calling dig at each step, returning nil if any intermediate step is nil. h = { foo: {bar: {baz: 1}}} h.dig(:foo, :bar, :baz) # 1 h.dig(:foo, :zot, :xyz) # nil g = { foo: [10, 11, 12] } g.dig(:foo, 1) # 11 g.dig(:foo, 1, 0) # TypeError: Integer does not have #dig method g.dig(:foo, :bar) # TypeError: no implicit conversion of Symbol into Integer

mySql Access denied 連線失敗

圖片
MySql ERROR 大概是今天晚上下班前,不知道為啥可能腦袋撞到,跑去設定 mySql 結果 Rails 直接噴 > mySql Access denied for user 'root'@'localhost'(using password: NO) 弄了半天只好重新設定,紀錄一下 MacOSX MySql Reset 方法 **MacOSX MySql root Password Reset master solution** **Step by step guide-** $ brew services stop mysql $ pkill mysqld $ rm -rf /usr/local/var/mysql/ **# NOTE: this will delete your existing database!!!** $ brew postinstall mysql $ brew services restart mysql $ mysql -u root 幫自己 QQ