Rails运行环境配置的不同可以分为三种模式:开发模式、测试模式、生产模式。
开发模式就是程序还在开发期间进行使用。测试模式就是对程序进行测试使用。生产模式就是在网站实际上线的时候使用。这三种不同的模式肯定有对应不同的运行环境配置,它都放在了工程目录下的
三种模式对应文件位置如下:
当你运行某一种模式的时候,rails就会自动加载对应的配置文件。当然修改运行环境的方法就是命令行修改rails的ervironments参数这个很简单(我们也可以写一个自己的模式,对应自己的配置文件也是可以的不一定非要这三种模式)。
先来看开发模式(我们用的就是开发模式),对于开发模式最重要的特点是当你在代码中修改任何一个内容的时候你回到浏览器进行刷新这个改动马上就能加载出来,前面我们就一直在使用比如添加了css样式或javascript前端代码刷新就有效果,这就是为了方便我们开发:
config.cache_classes = false
这句字面意思就是不进行缓存操作,也就是每次浏览器向服务器发送http请求的时候都会重新载入一次网站的内容。否则这个值是true的话,当你修改了后台代码,除非你重新启动rails服务,否则浏览器显示的内容是不会有变化的,刷新不会有效果。比如修改了一个css样式,是true的话还是会去加载原来的缓存,css是不会有改变的除非重新运行rails服务。
config.consider_all_requests_local = true
这个写的是true,意思就是rails只有在本地运行(localhost就是本地服务器)的时候,rails才会将发生错误时的信息发送给浏览器进行显示(比如我们之前碰到的页面显示NoMethod、no such file ‘bcrypt‘这些错误的情况)。其他配置可以查找官方文档去看。
?
接下来我们讲生产模式(配置项会更多一些):
config.cache_classes = true
可以看到这个就跟开发模式不一样了,也就是rails运行服务会将生成的代码缓存起来,一来这样能大大提高网站访问速度(不用每次发送http请求都重新加载内容,因为已经缓存了很多内容),二来加强网站安全性(就不会说你一改代码,网站直接崩溃),
config.consider_all_requests_local = false
这个是false,也就是当调用出现错误的时候不会向浏览器显示错误信息,而是直接显示一个错误页面,这个错误页面其实就在自动生成的public文件夹下的500.html文件:
里面已经有一些初始的内容告诉用户页面出错了(当然我们可以在里面添加想给用户显示的内容
),不给你显示更详细的错误信息,否则可能错误信息会暴露网站后台的一些内容,这样就提高了网站安全性。另外还有一些比较重要的内容,比如ssl认证、网站的一些日志的一些模式。说白了,生产模式就是要最大限度保证稳定(不能改动就崩溃)、安全(具体错误不显示就告诉出错)和效率(有缓存)。
这里还要讲一点就是rails在运行的时候会涉及secret key,就是安全密码来保护cookie的信息,在我们没有进行任何配置的情况下,我们是无法顺利地运行生产模式的。(我们可以试一下换成生产模式,网站是运行不了的)
?
最后就是test模式,也就是网站正式上线之前运行网站功能的模式:
?
最后要讲一下三种模式(对应就是三种运行环境)对于数据库的访问也是有区别的,
这个文件的作用就是rails给程序提供了3中不同的数据库,在运行rails服务的时候会自动检测当前的运行环境加载对应的数据库,这样的好处就是你在开发环境下的数据库并不会影响到你在生产环境下的数据库。比如我们网站已经上线了,但是我们需要再进行开发增加新的一些功能,那么rails在这两种模式下默认使用的是两个没关系的数据库进行,保证了数据的干净跟安全。我们一定要区分开这3这种环境的数据库,这是保证数据安全的重要内容。
?