原文转载自「刘悦的技术博客」https://v3u.cn/a_id_170

2020年,“非驰名Web框架”--Ruby on Rails曾经15岁了。在往年,Rails 6.0趋于欠缺,除了拿掉厌恶的Jquery,Webpacker 也成为默认前端打包计划,Sprockets 开始软着陆,将来很可能会和Jquery一样被彻底废除,这就是历史的过程。

因为历史起因,自身就由Ruby撰写的HomeBrew在Mac os零碎上大行其道,所以大部分Rails程序员的主力电脑都是Mac book pro,而应用Windows零碎的用户就没那么好运了,比方Rails 6.0开始启用Webpacker,这就须要用户装置yarn,由此带来一系列的连锁反应,还有令人失望的Win10零碎下的CoffeeScript问题,这也是Rails包含Jekyll时常令人诟病因素之一:搭个环境都这么吃力,我为啥不必Django、Laravel亦或者是Springboot呢?为什么非得受这份罪呢?因为.......酷爱,本次咱们应用Docker来简化Rails环境的搭建,让它可能在各个操作系统下做到无缝开发。

当然了,第一步还是装置Docker,没有装置的敌人请参照:win10零碎下把玩折腾DockerToolBox以及更换国内镜像源(各种神坑)。

而后在电脑内建设一个rails我的项目的目录

mkdir myr  cd myr

第三步,拉取根底镜像,该镜像内置了ruby2.5.1和node11为咱们装置Rails6.0打好根底

docker pull starefossen/ruby-node

拉取镜像胜利后,启动容器并且进入命令行,记住用挂载命令把当前目录共享到Docker容器外部,不会设置共享文件夹的同学能够参照这篇文章:上穷碧落下凡尘:Win10零碎下基于Docker配置Elasticsearch7配合Python3进行全文检索交互

docker run --rm -v /myr:/usr/src -w /usr/src -ti starefossen/ruby-node /bin/bash

因为在容器外部曾经装置好ruby2.5.1,所以gem也随之装置好,那么咱们能够在容易外部装置Rails

gem install -v 6.0.2 rails

这里用-v参数可管制版本号。

在容器内装置Rails6.0胜利之后,间接在容器内建设我的项目

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