序
-
关于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工程是否运行正常
- 浏览器显示如下页面
- 浏览器显示如下页面