- 浏览: 1365978 次
- 性别:
- 来自: 陕西.西安
文章分类
最新评论
-
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表示横向
Rails,启动-重要
- 博客分类:
- Ruby/Rails/Git/gem
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 1584http://colderboy.blog.51cto.com ... -
putty
2011-12-02 10:50 1028http://www.iteye.com/topic/5606 ... -
haml
2011-12-01 22:53 1092http://aideehorn.iteye.com/blog ... -
ruby 生成随机数 和 随机字符串
2011-11-30 22:42 3402ruby 生成随机数 和 随机字符串 1,ra ... -
ruby and watir学习之_Hash 类
2011-11-20 17:53 1565http://www.cnblogs.com/zhangfei ... -
gem相关命令使用
2011-11-19 00:01 2759http://www.cnblogs.com/orez88/a ... -
使用 RSpec 进行行为驱动测试,配置分析
2011-11-11 13:21 1510http://huangzhimin.com/ < ... -
ruby的class与module的区别
2011-11-07 10:04 2255http://blog.163.com/rettar@126/ ... -
ruby invalid multibyte char (US-ASCII)
2011-11-05 01:57 4580要加上: # encoding: utf-8 一般要 ... -
File.split(pathname)
2011-11-05 01:42 2134http://www.kuqin.com/rubycndocu ... -
Ruby怎样获取操作系统的Name
2011-11-05 01:30 1218http://bbs.chinaunix.net/thr ... -
Ruby String#unpack
2011-10-31 11:34 1202http://fuliang.iteye.com/blog/6 ... -
ruby环境变量的文件读取形式
2011-10-31 11:29 1797http://blog.csdn.net/normallife ... -
Ruby学习九 排序 sort
2011-10-26 20:06 3543h = ['1','10','11','2','4']A. p ... -
关于rails插件will_paginate的配置和用法
2011-10-26 15:56 4312http://selfcontroller.iteye.com ... -
ruby 中的 && ,|| ,!! (转)
2011-10-26 14:59 923http://selfcontroller.iteye.com ... -
Ruby中 respond_to? 和 send 的用法 .
2011-10-26 14:19 5304http://selfcontroller.iteye.com ... -
ruby 在线正则表达式 编辑器
2011-10-25 09:22 1704http://www.rubular.com/ -
ruby-Jruby,Xruby 转
2011-10-25 09:22 848ruby-Jruby,Xruby 2009年06月21 ... -
alias 与 alias_method的区别
2011-10-24 16:34 1744alias 与 alias_method的区别 (2009-7 ...
相关推荐
rails-prelaunch-signup, web启动预启动站点的Rails 3.2应用程序示例 Rails 应用程序用于启动预启动注册站点Rails...Rails 预启动注册应用程序插件项目页最重要的是,有一个详细的教程来展示它是如何构建的。你可以在几
并在其他控制台中启动Rails服务器: cd ../back bundle install rails s open http://localhost:3000 这些伟大的技术恭候您的光临: 滑轨4 苗条的 吞咽 网页包 较少的 咖啡脚本 SVG图标 浏览器同步 重要的提示 ...
RoleCore是一个Rails引擎,可以提供基于角色的访问控制的重要行业。 演示版 虚拟应用程序显示了具有CanCanCan集成(包括管理UI)的简单多个角色。 克隆存储库。 $ git clone ...
虚拟画布后端API 熨斗学校模块5项目后端,( 使用Ruby on Rails构建的虚拟画布的后端。... 别忘了用'rails s'启动您的Rails服务器 rails s -p 3000 跟踪服务器开始呼叫的号码非常重要,因为前端
WebRTC + Hotwire + Ruby on Rails 一个基本的视频聊天应用程序,使用,大量的Hotwire(主要是和 ),并得到Ruby on Rails的支持。它是如何工作的? 刺激室控制器处理Enter按钮的单击。 它获取用户的本地音频和视频...
shopify-示例 为什么该存储库存在? 在实施我的第一个shopify嵌入式应用程序时遇到了许多困难。 我想实现的功能要么记录得不够好,要么根本没有记录下来。 我想简化其他程序员的实现类似功能。...精简启动--ssl
当重要事件发生时,SMS通知是一种快速提醒人类的好方法。 在此示例中,我们将向您显示在Web应用程序中发生错误时如何将SMS通知发送给人员列表。 当地发展 该项目是使用框架构建的。 首先克隆该存储库,然后将其cd...
重要提示:如果您已经在网站中使用超赞字体(FA)图标字体,则可能要改用FA类。 然后重新启动您的Web服务器(如果以前正在运行)。 恭喜! 您现在有了可伸缩的矢量图标支持。 选择一个图标,然后查看。 Sass支持 ...
重要说明:这是4.0.0+的自述文件。 请注意, 依赖项已更新,不再干扰名称空间。 但是,如果您在Rails应用程序中使用该依赖关系,则需要按照将所有Client和Filelink类声明更改为FilestackClient和FilestackFilelink ...
Guard :: Spring启动,停止和重新启动 -Rails应用程序预加载器。 因此,此插件最重要的是确保在Guard停止时不会使Spring处于运行状态。 了解如何使用监视文件系统更改。 似乎现在可以使用cmd选项支持Spring 。 该...
天秤座轨道关于重大变革的重要说明注意:从2.0.0版本开始,librato-rails需要一个的Librato帐户。 如果您的Librato帐户尚不支持标记的指标,或者您正在使用,请使用。 librato-rails会为你的Rails应用程序报告关键...
这很重要,因此我不会在以后的版本中无意间破坏它。 请尽量不要弄乱Rakefile,版本或历史记录。 如果您想要拥有自己的版本,或者有其他必要,那很好,但是请隔离到自己的提交,以便我可以随意挑选它。 版权 版权...
要在 Rails 应用程序中使用它,请将它包含在您的 gemfile 中,并需要 raphael/raphael.js 以及您在 css 文件中需要的任何 g.raphael 图。 特约graphael护栏 查看最新的 master 以确保该功能尚未实现或错误尚未修复...
用法在全新的Rails应用程序中,只需将其添加到您的Gemfile gem 'chaltron' 并安装bundle现在运行rails generate chaltron:install填充数据库rails db:migrate db:seed启动你的应用rails server使用本地用户bella和...
它提供了gem的基本集成,这对于启动应用程序的开发至关重要。 例如:-设计身份验证,Bootstrap4,活动管理员,异常通知程序,开信刀,元请求,请从管理面板中邀请用户。 在此应用程序中,我为应用程序用户实现了...
重要 为$LOAD_PATH正确性,每次调用Bootscale.regenerate修改$LOAD_PATH都应更新缓存。 对于Rails应用程序,这意味着在config/application.rb添加一个初始化config/application.rb 。 module MyApp class ...
不幸的是,由于每月的托管费用,我不得不在我启动我的启动时关闭游戏。 从那以后,我计划了很长时间将它开源,以便它可以看到未来,无论是作为学习的例子,另一个项目的开始,或者只是一个克隆,如果有人想要托管它...
关于rails console两个重要说明 有时,当命令的输出很长时, rails console会为您分页。 如果为true,则将显示:提示,您可以按Return键以逐行滚动,或单击Space键以逐页滚动。 要返回常规提示符,以便您可以输入下...
用Ruby on Rails编写。 贡献于令人敬畏的任务 请检查最新的母版,以确保尚未实现该功能或尚未修复该错误 检查问题跟踪器,确保没有人请求和/或提供它 分叉项目 启动功能/错误修正分支 承诺并推动,直到您对自己的...