8

基于Docker在Win10平台搭建Ruby on Rails 6.0框架开发环境

 1 year ago
source link: https://v3u.cn/a_id_170
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

基于Docker在Win10平台搭建Ruby on Rails 6.0框架开发环境

首页 - Go & Ruby/2020-08-04
基于Docker在Win10平台搭建Ruby on Rails 6.0框架开发环境

    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项目文件

20200804220844_35733.png

    此时,在容器命令行内输入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

    

20200804220845_23254.png

    此时,启动容器

docker run -p 3000:3000 -v /myr:/usr/src/app/ myr

    访问一下 http://localhost:3000

20200804220839_99469.png

    熟悉的“世界人民大团结”欢迎页面已经映入眼帘,就是这么的简单,有人说了,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在新的时代里一定会继往开来、再创辉煌。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK