rails启动:
require File.dirname(__FILE__) + '/../config/boot'这行代码执行一下操作:
1、先判断是vender启动还是gem启动
2、gem启动,加载rubygems,再加载rails,rails版本号从environment.rb获得
3、加载完rails后,require 'initializer'
4、最后执行Rails::Initializer.run(:set_load_path)
5、最后执行set_load_path方法,即设置一些加载路径
require 'commands/server' 这行代码执行以下操作:
1、选择启动的server:thin,mongrel,webrick,lighttpd
2、创建tmp下面的文件夹:cache pids sessions sockets
3、加载对应的server文件,如:thin就加载thin的文件
4、日志的输出是用一个线程tail_thread每秒输出一次,如果有新日志的话
加载thin的文件后执行如下语句
thin = Thin::Runner.new(options)
thin.run!
这样thin就启动了。
thin是通过rack的方式来进行处理的,因此rails2.2.3之前thin里面有对rails的adapter,即一个rack包装,2.2.3之后rails本身支持rack。
thin的服务程序使用eventmachine。
thin的启动过程:
选择controller方式:cluster/service/controller 3种
以controller为例:
调用controller.start,在start方法里面,新建一个Server对象
然后
if @options[:rackup]
server.app = load_rackup_config
else
server.app = load_adapter
end
这里server.app就是一个rails对象,是Rack::Adapter::Rails类,不是我们所说的rails哦。
rails.rails_app是一个CgiApp或者ActionController::Dispatcher。
rails对象和CigApp两者都是一个rack程序,都有call方法
因此,这样当eventmachine接受到数据时,就调用server.app.call即rails.call方法,rails.call方法里调用rails_app.call,这就是rack的层级调用。rails_app.call方法:
class CgiApp
def call(env)
request = Request.new(env)
response = Response.new
session_options = ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS
cgi = CGIWrapper.new(request, response)
Dispatcher.dispatch(cgi, session_options, response)
response.finish
end
end
这里就可以看到调用了大名鼎鼎的Dispatcher.dispatch方法
分享到:
相关推荐
在本教程中,我们将深入探讨如何在Windows操作系统上搭建Rails 2.2.2的开发环境。Rails是一个基于Ruby编程语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,使得Web开发变得更加简洁高效。本文将...
Rails 2.2.2是该框架的一个较早版本,尽管如此,它仍然包含了许多核心概念和技术,对于理解Rails的运作机制及其发展历史非常有价值。 本参考手册是学习Rails 2.2.2的重要资源,特别适合初学者和有一定经验的开发者...
标题 "基于Rails2.2.2的ajax" 涉及的是使用Rails 2.2.2框架中的AJAX(Asynchronous JavaScript and XML)技术。Rails是一个基于Ruby编程语言的开源Web开发框架,它允许开发者以简洁、高效的方式构建动态网站。在...
【标题】"基于Rails2.2.2的自建的CRUD项目视频" 在这个项目中,我们将探讨如何使用Ruby on Rails 2.2.2版本构建一个基础的CRUD(创建、读取、更新和删除)应用。Ruby on Rails 是一个流行的开源Web应用程序框架,它...
Rails 2.2.2 是一个古老的 Ruby on Rails 框架版本,它在2008年发布,标志着Web开发的一个重要里程碑。Ruby on Rails(简称Rails)是由David Heinemeier Hansson创建的开源Web应用程序框架,它遵循模型-视图-控制器...
Rails 2.2.2 API 是一个针对 Ruby on Rails 框架的版本 2.2.2 的接口文档,它是开发人员的重要参考资料,用于理解并有效地使用该框架的各项功能。Ruby on Rails(RoR)是由 David Heinemeier Hansson 创建的一个开源...
《应用Rails进行敏捷Web开发》中文第三版是针对Ruby on Rails框架的一本详尽指南,主要聚焦于Rails 2.2.2版本。Ruby on Rails(简称Rails)是一款基于Ruby编程语言的开源Web应用程序框架,它遵循“Don't Repeat ...
`will_paginate`是Rails框架中非常流行的一个分页插件,版本2.2.2是它的一个历史版本。在本文中,我们将深入探讨`will_paginate`的使用方法、功能特性以及它如何与Rails集成,帮助提升Web应用的性能和用户体验。 一...
4. 将 Rails 2.2.2 的安装包解压到某个临时目录下,在命令行模式下切换当前目录为该临时目录,运行gem install rails -v=2.2.2 --include-dependencies命令将离线安装Rails。 5. 在命令行模式下运行gem install ...
在本书出版时,最新的稳定版本为Rails 2.2.2,所有的代码示例和教程都经过了这个版本的测试验证。Rails的核心开发团队一直在持续改进Rails框架,随着时间的推移,新的发布可能会引入与早期版本不兼容的变化。例如,...
### Rails 101 入门电子书知识点详解 #### 一、简介 《Rails 101 入门电子书》是一本非常适合初学者直接入门的书籍,它由xdite编写并出版于2014年6月10日。本书主要针对的是希望学习Ruby on Rails框架的读者,特别...
Ruby on Rails,通常简称为Rails,是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何...
《Rails101_by_rails4.0》是一本专注于Rails 4.0.0版本和Ruby 2.0.0版本的自学教程书籍,它定位于中文读者,旨在成为学习Rails框架的参考教材。Rails(Ruby on Rails)是一个采用Ruby语言编写的开源Web应用框架,它...
Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其对于Ruby on Rails框架的测试和自动化流程。本文将深入探讨这两个组件,以及它们如何协同工作来增强软件开发的效率和质量。 首先,...
### Ruby on Rails Guides v2 - Ruby on Rails 4.2.5 #### 一、重要概念及基础假设 - **重要概念**:本指南旨在帮助读者深入理解Ruby on Rails(以下简称Rails)4.2.5版本的核心功能与最佳实践。 - **基础假设**:...
Rails指南中文版是针对Ruby on Rails框架的一份详尽教程,旨在帮助开发者深入理解并熟练掌握这个强大的Web应用开发工具。Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-...
在开发Web应用时,Ruby on Rails(简称Rails)框架因其高效、简洁的代码风格和强大的社区支持而备受青睐。Aptana是一款强大的集成开发环境(IDE),尤其适用于Rails项目的开发,它提供了丰富的特性来提升开发效率。...