前情提要:我們在鐵人賽第3天的時候為Rails專案裡導入了Vue.js框架,
接著花了10天左右的時間熟悉Vue重要的基本語法~
在接下來的兩週,我想開發一個系統,做出適合自己用的個人看板、或是未來2到5人團隊跑scrum
流程的使用的看板Kanban
來管理專案進度。
並且加上Rails Action Cable的即時互動效果,讓團隊能將看板上顯現出來的問題,一起討論分析、尋求每一次專案跑scrum
流程後,都能調整與改進。
我在trello
裡面找到一個適合致敬的Software Development
template。
並且用這個鐵人賽開發的kanban
來管理自己鐵人賽的專案 ;)
devise
gem)Kanban
,並email邀請其他成員加入 (使用Mailgun
API)Kanban
可以讓使用者建立很多Column
,例如Sprint backlog
, Doing
, Testing
, Done
等欄位。每個Column
可以有很多張票Ticket
。Kanban
, Column
, Ticket
改成Vue Component
。Vue draggable
,讓Column
和Ticket
可以拖拉。Vuex
狀態管理新增/修改/刪除Column
和Ticket
。Column
和Item
的新增/修改/刪除,會在B使用者的畫面同步顯示。 (使用 Rails Action Cable
)Heroku
進行deploy)fontawesome
: 我們會在首頁的navbar
以及功能按鈕用到小圖示Tailwind Css
: 調整Column
和ticket
等前端顯示的樣式
使用yarn
安裝
yarn add @fortawesome/fontawesome-free
yarn add tailwindcss
在rails裡的applictaion.js
檔,require某個資料夾時,都會自動抓的index.js檔。
所以從node_modules
找我們要引入的檔案,放在fontend/styles/index.js
用來引入專案需要用到的的css或js檔案。
import "@fortawesome/fontawesome-free/css/all.css";
import "tailwindcss/base";
import "tailwindcss/components";
import "tailwindcss/utilities";
devise
註冊登入系統Devise為Rails最常使用的會員系統套件,為了讓我們專案能夠快速上線,就透過Devise
完成網站基本的註冊登入功能。
安裝gem
之後,記得bundle install
,然後重啟server
gem 'devise', '~> 4.7', '>= 4.7.1'
接下來的步驟比較無趣~就不細說了XD
/vue_rails master !7 ?1 ▓▒░ rails g devise:install
# 產生user model
/vue_rails master !8 ?4 ▓▒░ rails g devise User
# 為了能夠客製化註冊登入頁面,把devise的產生view
/vue_rails master !9 ?8 ▓▒░ rails g devise:views
專案開發第一天,先來個首頁路徑,以及設計首頁Layout
Rails.application.routes.draw do
devise_for :users
root 'pages#home'
end
如果在rails console
輸入:rails routes | grep devise
就會發現,routes上的一行程式碼devise_for :users
會幫我們長了好多路徑
navbar
我們想為首頁製作navbar
,並且把devise路徑放進註冊
、登入
、登出
按鈕_navbar.html.erb
<nav class="bg-teal-700 text-blue-100">
<div class="font-thin flex justify-between item-center">
<a href="/">
<i class="fas fa-columns">
</i>
Lean Kanban 精實看板
</a>
<div>
<% if user_signed_in? %>
<span class="mr-2"><%= current_user.email %></span>
<%= link_to '登出', destroy_user_session_path, method: 'delete', class: 'user-button' %>
<% else %>
<%= link_to '登入 ', new_user_session_path, class: 'user-button' %>
<%= link_to '註冊 ', new_user_registration_path, class: 'user-button' %>
<% end %>
</div>
</div>
</nav>
_navbar
寫成partial檔,是為了讓 application.html.erb
render進去,讓view
的結構更清晰
<!DOCTYPE html>
<html>
<head>
<title>Vue.js x Rails 鐵人賽專案</title>
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<%= stylesheet_pack_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
</head>
<body>
<%= render "shared/navbar" %>
<%= render "shared/flash" if notice %>
<%= yield %>
</body>
</html>
再放上自己挑選的圖和用tailwind css
設計icon~我們的專案首頁就完成囉!鐵人賽結束後也會把這個專案的Repo在GitHub上公佈出來:)