Rails 请教一下关于 Rails 加载的问题

uestc_bird · 2016年07月11日 · 最后由 huacnlee 回复于 2017年03月24日 · 3148 次阅读

rails 只是一堆代码,并不能独立运行,必须有其他的进程来讲 rails 的代码“加载”起来 例如 passenger 在启动的时候就会加载 rails 的代码,这个加载时啥意思?能具体解释一下吗? 是把 rails 的代码都读入内存?全部代码? 我知道 rails 的加载其实就是在初始化一些 contants,把所有的模块、类等的常量的名字读入自己的内存空间而已 那么既然其他程序把 rails 的代码加载进内存了,是不是就可以把 rails 工作目录删除也没啥问题?(这个当然不行~~~~~)

#1 楼 @huacnlee nice answer!thanks very much! 顺便追问一句,就算加载进内存的那些类和模块,也应该不是永远常驻内存的吧?应该也会从内存里面换入换出吧?如果有这种换入换出的机制,我猜测应该不是宿主 OS 来管理这个内存的换入换出,肯定会有一个 rails 自己的 manager 来管理这个换入换出的过程,这个 manager 做的主要工作就是把类名、模块名和他们对应的源文件一一对应起来。求证

#3 楼 @huacnlee 上面也是我自己 YY 的😀 纯属猜测。你的回答还有给的参考资料很好!

#4 楼 @uestc_bird OS 的内存管理跟进程没关系,透明的

#2 楼 @uestc_bird 听起来很 PHP 哈,类找不到就自动加载,用完之后全部丢掉

@huacnlee 为什么 homeland 里用 development 模式启动代码,修改 app/controllers/ 的代码不会自动重新加载,还需要重启服务?有点疑惑

gaolei14 回复

rails dev:cache

9 楼 已删除
需要 登录 后方可回复, 如果你还没有账号请 注册新账号