2020年11月24日 星期二

cloud9上面開發rails

 使用IAM身分登入,以免有資安問題。(用admin帳號登入,創建iam使用者,然後在上面的連結登入)

選擇 ubuntu18.04 減少查詢成本。

已經是超級使用者了,sudo 什麼都不需要輸入密碼了。

$ ruby -v 

檢查 ruby使用的版本>>2.6.3,太舊了。

$ rvm install 2.7.1 

https://classic.yarnpkg.com/en/docs/install#debian-stable

以上網站可以看到要怎樣安裝。

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -

echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

sudo apt update

sudo apt upgrade -y

sudo apt install postgresql libpq-dev redis-server redis-tools yarn -y

2020年11月22日 星期日

Rails 規劃登入、登出功能session

 本篇重點在於session

什麼是session

一種紀錄某種資料,並可以利用這個資料的機制。

瀏覽器如何在用戶登入時應用session?

網站會在用戶瀏覽器建立session,在用戶登入後,網站可以查詢用戶瀏覽器內建立的session,用以知道現在登陸的用戶是哪一位。

Rails如何使用session實踐登入登出功能?

Rails裡面,controller可以訪問session裡面的Hash資料。

ctrlp>config/routes.rb
增加一條route
get 'sandbox', to: 'root#sandbox' if Rails.env.develpoment?

SessionToken(時域代幣)
資料庫的設定
建立一個新的migration來新加入一個欄位,創一個migration檔案
$ rails genrate migration AddUserSessionToken
然後在db/migrate/XXXXX_add_user_session_token.rb檔案裏面,設定要新增的欄位詳細資料
def change
  add_column :users, session_token, :string
  add_index :users, session_token, unique:true
end 
然後,把資料庫設定實現。
$ rails db:migrate

更新User model的檔案(user.rb)
before_save {self.session_token ||= Digest:SHA1.hexdigest(SecureRandom.urlsafe_base64.to_s) }
我的說法,在儲存之前,要準備一個變數session_token,假如原來沒有session_token的話,那就要創造一個(||=)。
書上的說法,當每建立/修改/儲存一個用戶的時候,系統都會產生一個token。但是,現已存在的用戶都還沒有token,所以必須手動在console裡面幫他們建立token
rails c
User.all.each { |user| user.save(validate: false) } 每一個user,都儲存。並且建立新的token
User.first.session_token 檢查有沒有建立token成功
如何controller能夠與session配合實現登入/登出/檢查的功能?
controller可以使用new create destroy三種功能來使用session。
session#new登入
session#create登入動作
session#destroy登出動作


參考自10天學會ruby on rails :web 2.0網站架設速成


2020年11月21日 星期六

Rails helper中使用 gravatar頭像

ctrlp>  app / helpers / users_helper.rb

module UserHelper

  def gravatar_for(user)

    gravatar_id = Digest::MD5::hexdigest(user.email.downcase)

    gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}"

    image_tag(gravatar_url, alt: user.name)

  end

end

還可以加點料

module UserHelper

  def user_gravatar(user, size: 80)

    gravatar_id = Digest::MD5::hexdigest(user.email.downcase)

    gravatar_url = "http://secure.gravatar.com/avatar/#{gravatar_id}?s=#{size}"

    image_tag(gravatar_url, alt: user.name, class: "profile-pic")

  end

end


form

https://blog.kiprosh.com/using-gravatar-profile-image-in-ruby-on-rails-application/

Rails的方法,method,限制、檢查、

 Rails的方法不只是create、save、update指令而已。

還可以有find_or_create_by等複合式的method。


Vim使用vim-plug管理套件

 命令 功能描述

PlugInstall [name ...] [#threads] 安装插件

PlugUpdate [name ...] [#threads] 安装或更新vim插件

PlugClean[!] 卸装未使用的目录 (bang version will clean without prompt)

PlugUpgrade 更新vim-plug自身

PlugStatus 查看vim插件的状态

PlugDiff 对比上次PlugUpdate的更改 (Examine changes from the previous update and the pending changes)

PlugSnapshot[!] [output path] 保存当前插件的镜像副本到指定目录 (Generate script for restoring the current snapshot of the plugins)

資料來源

https://vimjc.com/vim-plug.html

Vim解除鎖定/不會動,應該要怎麼辦的方法

 Vim有時候突然不會動,鎖定在原地,重開才能解決,應該要怎麼辦?

原因,不小按到ctrl+s。

解法,按ctrl+q。

成功解決!!!

Rails 創造建立首頁root

建立首頁的方法

幫我們增加了一個controller的控制器檔案,另外建立了一個home的action。

$ rails generate controller Root home 

$rails generate controller Root home about contact (home、關於我們、聯絡我們)


ctrl+p>config/routes.rb

root to:"root#home"

或是

root "root#home"


cloud9上面開發rails

 使用IAM身分登入,以免有資安問題。(用admin帳號登入,創建iam使用者,然後在上面的連結登入) 選擇 ubuntu18.04 減少查詢成本。 已經是超級使用者了,sudo 什麼都不需要輸入密碼了。 $ ruby -v  檢查 ruby使用的版本>>2.6.3,...