- 浏览: 1384080 次
- 性别:
- 来自: 陕西.西安
文章分类
最新评论
-
dare_:
经过试验 设置之后反而更慢没有调用ensureCapacity ...
ensureCapacity()方法提高ArrayList的初始化速度 -
wangchao9053:
[flash=200,200][url][img][list] ...
Only the original thread that created a view hierarchy can touch its views的相关 -
cyb504:
考虑将rb文件代码隐藏:我先使用命令jrubyc将所有rb文件 ...
Ruby学习十 JRuby中调用java代码 -
4562xse3460:
大哥,您这个写反了,差点误导我,我觉得看着就不对。百度第一条就 ...
portrait表示纵向,landscape表示横向 -
yin138:
portrait是肖像画,即竖屏,landscape是风景画, ...
portrait表示纵向,landscape表示横向
http://www.blogjava.net/sshwsfc/archive/2006/11/20/82401.html
为了记录自己看Rails源码的过程,全程记录无废话。
我们看看script/server都干了什么
require ' commands/server '
引用了boot.rb这个文件。看来这个文件是rails启动的入口,来看看怎么回事吧。
root_path = File.join(File.dirname( __FILE__ ), ' .. ' )
unless RUBY_PLATFORM =~ / mswin32 /
require ' pathname '
root_path = Pathname.new(root_path).cleanpath(true).to_s
end
RAILS_ROOT = root_path
end
这一部分定义了RAILS_ROOT这个系统的全局变量,指定了项目的根目录,大家可以在以后华丽的使用了。
下一部分是找到rails,粗略看一下。
require " #{RAILS_ROOT}/vendor/rails/railties/lib/initializer "
else
require ' rubygems '
这里能看到,他先跑到vendor/rails去找rails了,这就是我们为什么能在插件里用rails是原因。如果没有那么gems的干活。
接下来是初始化一下load_path,没什么看的了。boot.rb就这样的吧。
回到script/server的第二行,包含了'
commands/server
'这个文件,这个文件是什么?Rails的源码里面找吧。我们在Rails的源码里面找到这个文件。
require
'
fileutils
'
begin
require_library_or_gem
'
fcgi
'
rescue Exception
#
FCGI not available
end
server
=
case ARGV.first
when
"
lighttpd
"
ARGV.shift
when
"
webrick
"
ARGV.shift
else
if
RUBY_PLATFORM !
~
/
mswin
/
&&
!silence_stderr { `lighttpd
-
version` }.blank?
&&
defined?(FCGI)
"
lighttpd
"
else
"
webrick
"
end
end
if
server
==
"
webrick
"
puts
"
=> Booting WEBrick
"
else
puts
"
=> Booting lighttpd (use 'script/server webrick' to force WEBrick)
"
end
FileUtils.mkdir_p(
%
w( tmp
/
sessions tmp
/
cache tmp
/
sockets ))
require
"
commands/servers/#{server}
"
从参数一目了然,我们可以传入server的名字,lighttpd和webrick,根据不同的server选择不同的server文件来读取。我们还是看看webrick的吧。
require
'
optparse
'
OPTIONS
=
{
:port
=>
3000
,
:ip
=>
"
0.0.0.0
"
,
:environment
=>
(ENV[
'
RAILS_ENV
'
]
||
"
development
"
).dup,
:server_root
=>
File.expand_path(RAILS_ROOT
+
"
/public/
"
),
:server_type
=>
WEBrick::SimpleServer,
:charset
=>
"
UTF-8
"
,
:mime_types
=>
WEBrick::HTTPUtils::DefaultMimeTypes
}
ARGV.options do
|
opts
|
script_name
=
File.basename($0)
opts.banner
=
"
Usage: ruby #{script_name} [options]
"
opts.separator
""
opts.on(
"
-p
"
,
"
--port=port
"
, Integer,
"
Runs Rails on the specified port.
"
,
"
Default: 3000
"
) {
|
v
|
OPTIONS[:port]
=
v }
opts.on(
"
-b
"
,
"
--binding=ip
"
, String,
"
Binds Rails to the specified ip.
"
,
"
Default: 0.0.0.0
"
) {
|
v
|
OPTIONS[:ip]
=
v }
opts.on(
"
-e
"
,
"
--environment=name
"
, String,
"
Specifies the environment to run this server under (test/development/production).
"
,
"
Default: development
"
) {
|
v
|
OPTIONS[:environment]
=
v }
opts.on(
"
-m
"
,
"
--mime-types=filename
"
, String,
"
Specifies an Apache style mime.types configuration file to be used for mime types
"
,
"
Default: none
"
) {
|
mime_types_file
|
OPTIONS[:mime_types]
=
WEBrick::HTTPUtils::load_mime_types(mime_types_file) }
opts.on(
"
-d
"
,
"
--daemon
"
,
"
Make Rails run as a Daemon (only works if fork is available -- meaning on *nix).
"
) { OPTIONS[:server_type]
=
WEBrick::Daemon }
opts.on(
"
-c
"
,
"
--charset=charset
"
, String,
"
Set default charset for output.
"
,
"
Default: UTF-8
"
) {
|
v
|
OPTIONS[:charset]
=
v }
opts.separator
""
opts.on(
"
-h
"
,
"
--help
"
,
"
Show this help message.
"
) { puts opts; exit }
opts.parse!
end
ENV[
"
RAILS_ENV
"
]
=
OPTIONS[:environment]
RAILS_ENV.replace(OPTIONS[:environment])
if
defined?(RAILS_ENV)
require RAILS_ROOT
+
"
/config/environment
"
require
'
webrick_server
'
OPTIONS[
'
working_directory
'
]
=
File.expand_path(RAILS_ROOT)
puts
"
=> Rails application started on http://#{OPTIONS[:ip]}:#{OPTIONS[:port]}
"
puts
"
=> Ctrl-C to shutdown server; call with --help for options
"
if
OPTIONS[:server_type]
==
WEBrick::SimpleServer
DispatchServlet.dispatch(OPTIONS)
:port =>
端口
,
:ip
=>
server ip
,
:environment
=>
运行环境
,
:server_root
=>
web访问的目录,(很多人问这个怎么改)
:server_type
=>
WEBrick::SimpleServer,
:charset
=>
"
UTF-8
"
, 编码
:mime_types
=>
WEBrick::HTTPUtils::DefaultMimeTypes
后面的require 引入了两个文件,一个是'
webrick_server
',别看,就是他。另外一个是
config/environment
,这个文件是系统的全局配置文件,很重要,我们还是下次看看这个文件去吧。里面还真挺有意思。
(不知道blogjava让不让写ROR的文章,看到有人写了所以放在首页了,如果不妥,我会尽快删除)
发表评论
-
rsync参数详解、利用ssh、rsync 实现数据的定时同步
2012-09-11 14:52 1733http://colderboy.blog.51cto.com ... -
putty
2011-12-02 10:50 1126http://www.iteye.com/topic/5606 ... -
haml
2011-12-01 22:53 1148http://aideehorn.iteye.com/blog ... -
ruby 生成随机数 和 随机字符串
2011-11-30 22:42 3546ruby 生成随机数 和 随机字符串 1,ra ... -
ruby and watir学习之_Hash 类
2011-11-20 17:53 1668http://www.cnblogs.com/zhangfei ... -
gem相关命令使用
2011-11-19 00:01 2859http://www.cnblogs.com/orez88/a ... -
使用 RSpec 进行行为驱动测试,配置分析
2011-11-11 13:21 1600http://huangzhimin.com/ < ... -
ruby的class与module的区别
2011-11-07 10:04 2385http://blog.163.com/rettar@126/ ... -
ruby invalid multibyte char (US-ASCII)
2011-11-05 01:57 4708要加上: # encoding: utf-8 一般要 ... -
File.split(pathname)
2011-11-05 01:42 2270http://www.kuqin.com/rubycndocu ... -
Ruby怎样获取操作系统的Name
2011-11-05 01:30 1299http://bbs.chinaunix.net/thr ... -
Ruby String#unpack
2011-10-31 11:34 1315http://fuliang.iteye.com/blog/6 ... -
ruby环境变量的文件读取形式
2011-10-31 11:29 1866http://blog.csdn.net/normallife ... -
Ruby学习九 排序 sort
2011-10-26 20:06 3587h = ['1','10','11','2','4']A. p ... -
关于rails插件will_paginate的配置和用法
2011-10-26 15:56 4383http://selfcontroller.iteye.com ... -
ruby 中的 && ,|| ,!! (转)
2011-10-26 14:59 970http://selfcontroller.iteye.com ... -
Ruby中 respond_to? 和 send 的用法 .
2011-10-26 14:19 5375http://selfcontroller.iteye.com ... -
ruby 在线正则表达式 编辑器
2011-10-25 09:22 1758http://www.rubular.com/ -
ruby-Jruby,Xruby 转
2011-10-25 09:22 895ruby-Jruby,Xruby 2009年06月21 ... -
alias 与 alias_method的区别
2011-10-24 16:34 1810alias 与 alias_method的区别 (2009-7 ...
相关推荐
rails-prelaunch-signup, web启动预启动站点的Rails 3.2应用程序示例 Rails 应用程序用于启动预启动注册站点Rails...Rails 预启动注册应用程序插件项目页最重要的是,有一个详细的教程来展示它是如何构建的。你可以在几
Rails 4.2.0 是一个非常重要的版本,在Ruby on Rails框架的历史中占据了显著位置。这个版本引入了许多新特性、改进和性能优化,为开发者提供了更高效和灵活的开发环境。Ruby 4.2.0是这个框架所依赖的编程语言的一个...
Rails的表单构建器简化了表单创建过程,渲染器则用于将数据渲染为不同的视图格式,而railties则是Rails框架的核心部分,用于初始化、配置和启动Rails应用。 《Rails初学者指南》为初学者提供了一个全面、系统的学习...
压缩包中的"rails-development-environment-master.zip"可能是整个项目文件夹,包括`app`(应用代码)、`config`(配置文件)、`db`(数据库相关)、`bin`(可执行脚本)、`lib`(自定义库)、`test`(测试)、`...
- **重要概念**:本指南旨在帮助读者深入理解Ruby on Rails(以下简称Rails)4.2.5版本的核心功能与最佳实践。 - **基础假设**:读者已经具备一定的Ruby编程基础,并对Web开发有一定的了解。 #### 二、什么是Rails...
9. **初始化文件(Initializers)**:`config/initializers`目录下的文件在Rails启动时执行,常用来设置全局配置或加载自定义代码。 10. **Scaffolding**:Rails提供了一种快速创建CRUD(创建、读取、更新、删除)...
本篇文章将从给定的文件中提炼出关于Ruby on Rails的重要知识点,主要包括命令、URL映射、命名规范、ERB标签、链接创建、数据库配置及查询、模型之间的关系等方面。 #### Ruby on Rails 命令 - **更新 Rails** - ...
- **启动与应用设置**: 深入探讨Rails应用程序启动过程中的关键设置项,如`config/application.rb`中的配置选项。 - **开发模式**: 讨论了开发环境下Rails的行为特性,比如自动代码重载等。 - **测试模式**: 分析了...
开源的特性使得它成为开发者社区中的一个重要组成部分,为 Ruby on Rails 应用提供了更多选择和灵活性。对于那些寻求在 JVM 上运行高性能 Rails 应用的开发者来说,Rails-Asyncweb 是一个值得考虑的优秀解决方案。
2. **Zeus**:Zeus是一个Ruby开发的代码加速器,它可以在不重启Rails服务器的情况下加快应用的启动速度。在项目中,可以通过运行`zeus start`来启动Zeus服务器,提高开发效率。使用Zeus可以减少加载和执行代码的时间...
在Rails应用中启用SSL支持是非常重要的,特别是在处理敏感用户数据或进行在线交易的网站上。SSL证书是验证网站身份并启用HTTPS(HTTP over SSL/TLS)的必要组件,它提供了对用户浏览器的可见信任标志,例如绿色地址...
安装完成后,可以通过`mongrel_rails`命令来启动Rails应用。在Rails项目的根目录下,执行: ```bash mongrel_rails start -p ``` 这里的`<port>`是你要监听的端口号,例如`3000`。 ** 配置Mongrel ** Mongrel...
2. **bin**:存放可执行文件,如`rails`脚本,用于启动服务器、运行测试等。 3. **config**:配置文件的集合,包括数据库连接、路由设置、应用环境等。 4. **db**:数据库相关的文件,如迁移(migrations)用于...
这一步骤对于后续的Ruby和Rails安装至关重要。 ##### 1. 安装Node.js Node.js在某些Rails应用中是必需的,尤其是在使用某些前端工具如Webpacker时。可以通过以下命令进行安装: ```bash # 安装依赖库 yum install...
通过解压 "rails-garden-manager-master" 并运行 `bundle install` 来安装依赖,然后执行 `rails server` 启动本地服务器,就可以在浏览器中预览并交互这个花园管理应用了。如果你熟悉 Rails,那么这个项目将是一个...
- **启动和应用设置**:这部分介绍如何配置Rails项目的启动过程以及如何设置各种环境变量,包括开发、测试和生产环境的差异配置。 - **不同模式下的配置**: - **开发模式**:通常包含更多的调试信息和详细的错误...
- **命令**:进入项目根目录后,运行 `rails server` 或 `bundle exec rails server` 来启动 Rails 自带的 Web 服务器。默认情况下,服务器运行在 `http://localhost:3000` 地址上。 **3. 访问 Web 页面** - **...
一旦数据库准备就绪,启动Rails服务器至关重要。输入`bin/rails server`(或者简写为`bin/rails s`)启动本地开发服务器,这样你就可以在浏览器中预览和测试应用了。 在React-Rails的设置中,你需要在Rails的配置...
- **启动并运行起来**:详细讲解如何启动Rails服务器以及如何访问开发中的应用程序。 - **添加第二个模型**:介绍如何添加新的模型到项目中,并演示如何与数据库交互。 - **重构**:强调代码重构的重要性,并给出...
`capistrano-rails-console`插件是Capistrano生态系统中的一个重要组成部分,它增强了开发者对远程Rails环境的管理能力。通过提供远程Rails控制台和数据库控制台,它极大地简化了远程操作和调试过程,提高了开发者的...