基于Docker在Win10平台搭建Ruby on Rails 6.0框架开发环境
原文转载自「刘悦的技术博客」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
基于Docker在Win10平台搭建Ruby on Rails 6.0框架开发环境的更多相关文章
- [Ruby on Rails系列]1、开发环境准备:Vmware和Linux的安装
Ruby on Rails是一个采用Ruby语言的遵循MVC模式的Web开发框架.使用RoR会得到更加快速爽快的Web开发体验.相比于Java EE,该框架使Web开发的速度和效率变得更加轻快和敏捷. ...
- [Ruby on Rails系列]2、开发环境准备:Ruby on Rails开发环境配置
前情回顾 上次讲到Vmware虚拟机的安装配置以及Scientific Linux 6.X系统的安装.这回我们的主要任务是在Linux操作系统上完成Ruby on Rails开发环境的配置. 在配置环 ...
- 基于认证的代理平台搭建配置squid-20130730
基于认证的代理平台搭建配置squid-20130730 功能:通过squid代理实现 (1)基于用户名密码认证的出口ip路由选择 (2)基于client源ip的出口ip路由选择 (3)基于连接本机ip ...
- 各种环境下搭建ruby on rails开发环境
win10上搭建raby on rails环境: 步骤如下 1.安装ruby (我选择的版本是ruby 2.2.3p173) 2.安装rails gem 在这之前建议先把gem的源换成淘宝的源,速度快 ...
- 搭建eclipse+maven+scala-ide的scala web开发环境
http://www.tuicool.com/articles/NBzAzy 江湖传闻,scala开发的最佳利器乃 JetBrains 的神作 IntelliJ IDEA ,外加构建工具sbt 是也. ...
- 【前端福利】用grunt搭建自己主动化的web前端开发环境-完整教程
jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前端开发者.假设你如今还不知道grunt或者听说过. ...
- Eclipse搭建Android5.0应用开发环境 “ndk-build”:launchingfailed问题解决
Eclipse搭建Android5.0应用开发环境 "ndk-build":launchingfailed问题解决 详细参考http://blog.csdn.net/loongem ...
- 基于Docker持续交付平台建设的实践
导读:中国五矿和阿里巴巴联手打造的钢铁服务专业平台五阿哥,通过集结阿里巴巴在大数据.电商平台和互联网产品技术上的优势,为终端用户带来一站式采购体验.本文是五阿哥运维技术团队针对Docker容器技术在如 ...
- 基于Docker的Mysql主从复制搭建
来源:https://www.cnblogs.com/songwenjie/p/9371422.html?tdsourcetag=s_pctim_aiomsg 为什么基于Docker搭建? 资源有 ...
随机推荐
- 精彩分享 | 欢乐游戏 Istio 云原生服务网格三年实践思考
作者 吴连火,腾讯游戏专家开发工程师,负责欢乐游戏大规模分布式服务器架构.有十余年微服务架构经验,擅长分布式系统领域,有丰富的高性能高可用实践经验,目前正带领团队完成云原生技术栈的全面转型. 导语 欢 ...
- 如何生成一个java文档
如何生成一个java文档 众所周知,一个程序给别人看可能可以看懂,几万行程序就不一定了.在更多的时候,我们并不需要让别人知道我们的程序是怎么写的,只需要告诉他们怎么用的.那么,api文档就发挥了它的作 ...
- 278. First Bad Version - LeetCode
Question 278. First Bad Version Solution 题目大意:产品有5个版本1,2,3,4,5其中下一个版本依赖上一个版本,即版本4是坏的,5也就是坏的,现在要求哪个版本 ...
- python之装饰器补充与递归函数与二分查找
目录 多层装饰器 有参装饰器 递归函数 基本演示 斐波那契数列 总结 小拓展 算法之二分法 简介 举例 总结 多层装饰器 我们已经知道了语法糖的作用是将装饰对象自动装饰到装饰器中,一个语法糖的应用我们 ...
- 论文阅读 Predicting Dynamic Embedding Trajectory in Temporal Interaction Networks
6 Predicting Dynamic Embedding Trajectory in Temporal Interaction Networks link:https://arxiv.org/ab ...
- lanedet项目调试记录
苦水时间:最近深度学习调代码真的是调的郁闷,每次调都是旧的问题没有解决,新的问题又冒出来了.新的好不容易解决了,旧的问题还是没有解决思路解决不了. 正文 最近找到一个实现了很多车道线检测算法的gith ...
- React简单教程-5-使用mock
前言 一个前后端分离的项目,前端人员需要对接后端的接口.如果在后端的接口没有开发好,或者没有测试版可以对接的情况下,前端人员也不能坐等后端接口写好后再开始开发. 一个项目的,理想情况下接口的规范应该是 ...
- 如何写一个全局的 Notice 组件?
下面将会实现这样的效果: 组件动态创建脚本: NotificationBanner.js import Vue from "vue"; import Notice from &qu ...
- Linux常用操作:文件及文件夹
一.创建 (1)mkdir 创建一个目录 (2)touch 创建一个空文件 注:-r 表示递归操作 二.删除 rm 删除文件 rm -r 删除目录 rm -r * 删除目录下的所有文件 注:-f 不用 ...
- 3D可视化解决方案为巷道工程安全护航
最近山东栖霞笏山金矿事故中被困22名矿工的生命安全,在揪着全国民的心.大家都在祈求他们能从井下活着回来. 正是由于被困矿工的坚韧意志和政府相关部门不眠不休的奋力营救,11名矿工终于在被困十余日后平安升 ...