Ruby on Rails框架(1)-安装全攻略
序
关于Rails的三句箴言
(1)DRY:Don’t Repeat Yourself(不要重复你自己)
- rails的开发理念,不要用你的代码不停的重复,rails框架给开发者提供了一套非常完善的支持,让你在很多地方,只需要短短几行代码,就能实现非常强大的功能;
(2)约定大于配置(约定优先原则)Convention Over Configuration
- rails框架并不会出现传统框架里面例如xml这样的配置文件,而将大家已经知道并已经成为习惯的内容,不进行显示的配置,只要我们去默认使用就可以了,这样一来就极大的简化了框架的配置工作,能实现我们用更少的代码来实现应用的程序变为可能;
(3)对于web应用来说,REST是最好的
(一) 开发环境的选择
给初学者的建议
- 如果我们没有至少5年以上的rails开发经验,我们务必不要使用windows操作系统去进行rails框架的开发,否则你会浪费非常多的时间在解决各种奇奇怪怪的问题上,比如说ruby的问题,gem的问题等等,非常的不值得,这些时间我们完全可以拿来学习rails框架
1.1 为什么不使用windows
- rails框架对windows非常不友好,各种的学习资料和问题解答,还有库的支持都非常的有限,并且对于很多rails推荐使用的工具,比如说命令行,windows的命令行是不强大的;
1.2 选择适合自己的开发环境
Mac OS
Linux
这里jacky使用的centos7开发环境,多年的经验告诉jacky ,centos系统还是很不错的,生产环境我们肯定是用云服务器了,非生产环境我们用VMware Workstation软件在windonw上安装一个centos7系统,具体如何安装虚拟机,网上百度即可,红帽的镜像网上下载即可;
(二)安装 ruby
jacky说,ruby可不如java和python好安装,不同系统,不同版本,都可能会遇到这样那样的问题,这里jacky就只跟大家分享centos7的安装,如果信得过jacky的人,jacky也建议大家使用centos7系统,这样也可以跟着jacky一步一步来安装;
- 网上安装的方法方式太多,这里jacky建议大家还是下载ruby官网的安装包到本地,解压,编译,安装,一步一步老老实实的安装
(1)ruby官网下载最新ruby安装包
http://www.ruby-lang.org/en/downloads/
(2)源码安装
$ tar -xvzf ruby-2.5.3.tgz
$ cd ruby-2.5.3
$ ./configure
$ make
$ sudo make install
$ruby -v
ruby 2.5.3……
大部分朋友安装到./configure命令后可能会报错,那是因为linux系统下的ruby安装是要依赖gcc编译器(什么是gcc自行百度),所以我们要执行下面的命令:yum -y install gcc 然后在重新执行命令就可以了
(三)RubyGem的安装和使用
3.1 Gem源
Gem 是管理相关软件库的东西,可以给rails框架提供软件包,用gem 安装 rails 有可能会出现问题,发生超时或连接错误等等,90%安装不成功的原因都是gem源的问题
Gem源是什么
Gem将所有的软件包放置的平台叫做Gem源,我们更新或者安装各种Gem包的时候,都需要去连接这个Gem源,Gems源的网站为:rubygems.org ,我们下载rails的时候,也是去这个网站去查找和下载的,因为这个网站不是国内的,我们国内用户在访问这个gem源的时候会非常慢,有的时候会连不上,会导致安装的时候出现问题,那么解决的办法就是更换Gem源
我们在国内使用最稳定的是ruby-china镜像源,网站是 https://gems.ruby-china.com/
3.2 更改Gem源
- (1)第1步:用l命令看一下我们目前有的Gem源;
gem sources --l

-(2)第2步:安装ruby-china镜像源
这里jacky强调的是,新建镜像源一定要移除原有的镜像源
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
(四)Rails的安装
大部分的教程或者网络上的资料告诉大家rails的安装是非常简单的,只要使用一条命令就可以了(gem install rails),如果有报错,那我们就在命令前面加一个sudo就可以了(sudo gem install rails)就可以了(如果有些朋友不能用sudo命令可以试一下这个代码:alias sudo=‘sudo env PATH=$PATH’),但jacky说实际上真让我们安装rails的时候,一定会遇到这样或者那样的问题,但是为什么教程和资料上说的就是这样的简单呢;jacky认为是两个原因:第一个原因是rails安装的问题太多,有些人也讲不清或者不想讲;第二个原因是用rails的人,一定不会是第一次就选择rails框架,大家都会有其他编程语言框架的基础,在安装其他编程语言框架的时候,有些rails框架
- 我们的最终目的是用一条命令,就完美安装rails (gem install rails或者sudo gem install rails),但使用这条命令我们会遇到这样或者那样的问题,出现的问题都是我们缺少依赖包或者依赖配置,这里jacky给大家规整一下出现的问题,并给出解决方案;
对下面的依赖包的特别说明(必看):下面的依赖包不是必须要安装的,如果我们sudo gem install rails 不报错,我们就不用安装下面的安装包了,如果我们遇到了报错,大概率是jacky总结的下面的几个或者全部安装包没有安装
4.1 依赖包1:安装build essentials
yum groupinstall "Development Tools"
yum install -y gcc g++ kernel-devel
sudo yum install build-essential libopenssl-ruby ruby2.5.3-dev
上述这一条命令,我们就把许许多多rails的依赖包打包安装了
4.2 依赖包2:安装libxml2
yum -y install python-devel
yum install libxml2(如果不成功,我们要选择手动安装,就是下载安装包安装,这里略,大家自行百度)
4.3 依赖包3:安装openssl和zlib
这里要说就篇幅过长,可以参考下面这篇文章:
https://www.cnblogs.com/both/p/8875535.html
- 以上我们就可以安装rails框架了
sudo gem install nokogiri
gem install rails
(五)使用Rails框架创建应用
5.1 开发环境的选择
- 对于应用程序开发来说,有一个好的IDE(集成开发环境),会大大提升我们的开发效率,这里jacky推荐的IDE是 rubymine;
如何在linux系统安装rubymine大家自行百度
5.2 创建Rails应用程序
5.2.1 使用系统自带的终端进行操作
cd Documents
rails new 你的项目名(工程名) --skip-bundle
bundle install
在运行bundle install命令之前,要修改Gemfile文件,bundle install的作用是让bundle根据gemfile的内容安装所有配置好的gem包,相当于一个命令就将rails所需要的配置包根据相应的版本安装好了

这里大家在运行bundle install 时可能会报错:An error occurred while installing sqlite3 (1.3.13), and Bundler cannot continue.这时我们运行下面的这条命令就可以了: yum -y install sqlite*
5.2.2 Rails框架的目录结构

app:它是rails框架的核心文件,包括模型、控制器、视图,已经前端等等的核心代码都在这个文件夹里,非常的重要,之后的学习过程我们的开发90%的时间都是在app文件夹里进行操作的;
- app下的assets文件夹:它是rails的应用资源文件夹,比如工程使用的一些静态文件都在这个文件夹里
config:它是应用的配置目录,包含比如数据库的配置、运行环境的配置、以及路由的配置等,我们在开发的过程也会经常的使用;
test:它存放了所有rails应用的测试代码,那关于rails的测试是rails开发一个比较重要的内容
lib和vendor:存放项目需要的第三方库,比如我们自己写的项目内部公用的接口,或javascripts接口等等都可以放在这个文件夹里
Gemfile:它配置了这个项目所有依赖的gem包
5.2.3 启动Rails框架
rails server
- 这时,我们用命令运行rails服务时可能会报错,Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes.(ExecJS::RuntimeUnavailable),我们只要安装node.js即可
1.下载node.js
curl --silent --location https://rpm.nodesource.com/setup_7.x | bash -
2.yum安装node.js
yum install -y nodejs
3.查看node.js版本
node -v

如何判断rails工程是否运行正常
- 浏览器显示如下页面

- 浏览器显示如下页面
Ruby on Rails框架(1)-安装全攻略的更多相关文章
- TestLink安装全攻略
TestLink安装全攻略 此文章转自该链接--http://www.cnblogs.com/Tcorner/archive/2011/07/26/2117296.html 安装前准备 需要下载xam ...
- 织梦DEDECMS小说模块使用和安装全攻略
转之--http://www.51dedecms.com/news/dedecms/2012/0223/3380.html 小说模块功能很强大,可以用他做小说或者漫画站.他们都可以按某章节收费或免费供 ...
- JiaThis WordPress分享插件安装全攻略
WordPress 是一个功能非常强大的博客系统,插件众多,易于扩充功能.安装和使用都非常方便.目前 WordPress 已经成为主流的 Blog 搭建平台.按照下面的方法,只需简单几步,就可轻松地将 ...
- linux下php-5.4.8.tar.gz编译安装全攻略
首先安装基础依赖组建,注:这些依赖组建也是LINUX+PHP+MYSQL+APACHE+NGINX+MEMCACHED时必要的系统组件 LANG=C yum -y install gcc gcc-c ...
- node.js安装全攻略
node.js学习也有近一年之久了,自开始以来,能遇到各种问题,就拿安装来说,总能遇到稀奇古怪的问题,但每次谷歌,或者百度,都能找到解决办法,逐渐也就养成了百度或者谷歌的毛病! 正常安装 第一步:下载 ...
- Windows Server 2008驱动安装全攻略
安装设备驱动程序原本是一件非常简单的事情,很多驱动程序在安装的时候我们只要不停单击“下一步”按钮,就能让驱动程序顺利地在对应计算机系统“落户”;不过,当身边的计算机系统升级为Windows Serve ...
- 通过Ruby On Rails 框架来更好的理解MVC框架
通过Ruby On Rails 框架来更好的理解MVC框架 1.背景 因为我在学习软件工程课程的时候,对于 MVC 框架理解不太深入,只是在理论层面上掌握,但是不知道如何在开发中使用 MVC ...
- Ruby on Rails框架开发学习
学习地址:http://www.ixueyun.com/lessons/detail-lessonId-685.html 一.课程概述 软件开发在经历了面向过程编程的阶段,现在正大行其道的是敏捷开发, ...
- Android-x86虚拟机安装配置全攻略
转自Android-x86虚拟机安装配置全攻略 注:这里安装从简,具体请参考虚拟机Vmware安装运行安卓4.0详细教程 Android-x86虚拟机安装配置网上有很多,但是全部说明白的确不多,希望这 ...
随机推荐
- 前端开发 Angular
https://www.angularjs.net.cn/tutorial/18.html
- 深入理解JVM(二)--对象的创建
Java是一门面向对象的语言,在Java程序运行的过程中,无时无刻都会有对象被创建出来,在程序语言中,创建对象(例如克隆,反序列化)通常仅仅是一个new关键字,但是在虚拟机中是怎样的呢?本文主要了解一 ...
- Redis相关概念
redis和memcache的比较 1 .Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储: 2 .Redis当物理内存用完时,可以将一些很久没用到的v ...
- 【转载】C#中Add方法将往List集合末尾添加相应元素对象
在C#的List集合操作中,有时候需要将符合条件的对象添加到已有List集合中的末尾,此时就需要使用到List集合的Add方法,Add方法的作用为将对应的元素添加到List集合末尾,Add方法签名为v ...
- 【转载】Asp.net网站安全:去除网站根目录下的备份文件防止代码泄露
很多网站运维人员在更新网站版本的时候,喜欢直接在网站目录文件夹中直接压缩原来的网站文件,如果这个备份压缩文件没有移动出去,这样是非常不安全的,有些网站攻击者可能会尝试访问你网站下有没有对应名字的压缩备 ...
- CSS的基本知识
与HTML相同,CSS也是一种标识语言,即可以在任何文本编辑器中打开和修改 CSS的基本结构 选择器(Selector) 选择器告诉浏览器该样式将会作用于哪些对象,这些对象可以是某个标签.某个对象.网 ...
- Part_three:Redis持久化存储
redis持久化存储 Redis是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失. 1.RD ...
- 服务端php之文件上传
知识点 echo $_SERVER['PHP_SELF']; 自动获取当前文件的路劲(即提交地址为当前页面) 当一个表单有文件域(即文件上传)的时候,method(提交方式)要设置post,这样更加安 ...
- 你再也不用使用 Redux、Mobx、Flux 等状态管理了
Unstated Next readme 的中文翻译 前言 这个库的作者希望使用 React 内置 API ,直接实现状态管理的功能.看完这个库的说明后,没有想到代码可以这个玩.短短几行代码,仅仅使用 ...
- 设置 SQL*Plus 的运行环境
SQL*Plus 的运行环境是用来输入.执行 SQL*Plus 命令和显示返回结果的场所,设置合适的 SQL*Plus 运行环境,可以使 SQL*Plus 按照用户的要求运行和执行各种操作.set 命 ...