原文轉載自「劉悅的技術博客」https://v3u.cn/a_id_170前端
2020年,「非著名Web框架」--Ruby on Rails已經15歲了。在今年,Rails 6.0趨於完善,除了拿掉討厭的Jquery,Webpacker 也成爲默認前端打包方案,Sprockets 開始軟着陸,將來極可能會和Jquery同樣被完全廢棄,這就是歷史的進程。node
因爲歷史緣由,自己就由Ruby撰寫的HomeBrew在Mac os系統上大行其道,因此大部分Rails程序員的主力電腦都是Mac book pro,而使用Windows系統的用戶就沒那麼好運了,好比Rails 6.0開始啓用Webpacker,這就須要用戶安裝yarn,由此帶來一系列的連鎖反應,還有使人絕望的Win10系統下的CoffeeScript問題,這也是Rails包括Jekyll時常使人詬病因素之一:搭個環境都這麼費勁,我爲啥不用Django、Laravel亦或者是Springboot呢?爲何非得受這份罪呢?由於.......熱愛,本次咱們使用Docker來簡化Rails環境的搭建,讓它可以在各個操做系統下作到無縫開發。git
固然了,第一步仍是安裝Docker,沒有安裝的朋友請參照:win10系統下把玩折騰DockerToolBox以及更換國內鏡像源(各類神坑)。程序員
而後在電腦內創建一個rails項目的目錄github
mkdir myr cd myr
第三步,拉取基礎鏡像,該鏡像內置了ruby2.5.1和node11爲咱們安裝Rails6.0打好基礎web
docker pull starefossen/ruby-node
拉取鏡像成功後,啓動容器而且進入命令行,記住用掛載命令把當前目錄共享到Docker容器內部,不會設置共享文件夾的同窗能夠參照這篇文章:上窮碧落下凡塵:Win10系統下基於Docker配置Elasticsearch7配合Python3進行全文檢索交互docker
docker run --rm -v /myr:/usr/src -w /usr/src -ti starefossen/ruby-node /bin/bash
因爲在容器內部已經安裝好ruby2.5.1,因此gem也隨之安裝好,那麼咱們能夠在容易內部安裝Railswindows
gem install -v 6.0.2 rails
這裏用-v參數可控制版本號。ruby
在容器內安裝Rails6.0成功以後,直接在容器內創建項目bash
rails new .
項目創建好之後,你會發如今windows目錄會同步出現Rails項目文件
此時,在容器命令行內輸入exit退出容器,此時容器就會中止而且刪除,這個容器也完成了它的歷史任務,它的存在就是幫咱們建立好一個Rails項目,而且經過共享文件的形式在宿主機同步。
下一步,爲了能在宿主機運行咱們的Rails服務,須要一個Dockerfile文件來定製咱們本身的鏡像
FROM starefossen/ruby-node # 設置項目目錄 WORKDIR /usr/src/app # 設置配置文件 COPY Gemfile* ./ RUN bundle install # 拷貝文件 COPY . ./ # 暴露端口 EXPOSE 3000 # 啓動服務命令 CMD ["bundle", "exec", "rails", "server", "-b", "0.0.0.0"]
寫好Dockerfile以後,咱們就能夠打造一個全新的鏡像,這個鏡像用來運行咱們已經創建好的Rails項目。
docker build -t myr .
打包成功後,輸入命令查看鏡像
docker images
此時,啓動容器
docker run -p 3000:3000 -v /myr:/usr/src/app/ myr
訪問一下 http://localhost:3000
熟悉的「世界人民大團結」歡迎頁面已經映入眼簾,就是這麼的簡單,有人說了,Python纔是現在的「當紅炸子雞」,如今學習Rails會不會是「四九年入國軍」?我想說的是,時至今年,全球依然有超過一億的網站和後臺服務由Rails驅動,其中不乏國際知名企業,如:Airbnb、Basecamp、Github等,儘管Php和Python的使用範圍比Ruby更廣,但其最受歡迎的兩個框架Laravel和Django分別比Rails的代碼貢獻者要少不少。更多的開源代碼貢獻者意味着Gem的質量很是之好,俗話說,Gem爲Rails傾盡了全部,而Rails常常被人們盛讚,也是由於支持它的社區正在努力建立很是多可重用的庫。
咱們能夠看看在github上的開源代碼貢獻者的數量對比:
GitHub contributors to Ruby frameworks:
Rails: 4260
Padrino: 228
Hanami: 146
Sinatra: 387
GitHub contributors to Django (Python) and Laravel (PHP):
Django: 2,007
Laravel: 740
差距可見一斑,歸根結底,一款框架的開發和使用仍是得以「人」爲本。一如既往,專一web,專一產品的Rails6.0在新的時代裏必定會繼往開來、再創輝煌。
原文轉載自「劉悅的技術博客」 https://v3u.cn/a_id_170