- 浏览: 2072631 次
- 性别:
- 来自: NYC
文章分类
- 全部博客 (628)
- Linux (53)
- RubyOnRails (294)
- HTML (8)
- 手册指南 (5)
- Mysql (14)
- PHP (3)
- Rails 汇总 (13)
- 读书 (22)
- plugin 插件介绍与应用 (12)
- Flex (2)
- Ruby技巧 (7)
- Gem包介绍 (1)
- javascript Jquery ext prototype (21)
- IT生活 (6)
- 小工具 (4)
- PHP 部署 drupal (1)
- javascript Jquery sort plugin 插件 (2)
- iphone siri ios (1)
- Ruby On Rails (106)
- 编程概念 (1)
- Unit Test (4)
- Ruby 1.9 (24)
- rake (1)
- Postgresql (6)
- ruby (5)
- respond_to? (1)
- method_missing (1)
- git (8)
- Rspec (1)
- ios (1)
- jquery (1)
- Sinatra (1)
最新评论
-
dadadada2x:
user模型里加上 protected def email ...
流行的权限管理 gem devise的定制 -
Sev7en_jun:
shrekting 写道var pattern = /^(0| ...
强悍的ip格式 正则表达式验证 -
jiasanshou:
好文章!!!
RPM包rpmbuild SPEC文件深度说明 -
寻得乐中乐:
link_to其实就是个a标签,使用css控制,添加一个参数: ...
Rails在link_to中加参数 -
aiafei0001:
完全看不懂,不知所然.能表达清楚一点?
"$ is not defined" 的问题怎么办
begin doc = Nokogiri::HTML(open(curl)) rescue OpenURI::HTTPError logger.error("not found while validating the claimed file") false rescue Errno::ETIMEDOUT logger.error("timed out while validating the claimed file") false rescue Errno::ENETUNREACH logger.error("network problem while validating the claimed file") false rescue Exception => details logger.error("#{details} while validating the claimed file") false end
Array.map 用法
今天在看beast源代码,在看到topics_controller # show的时候发现了一行读不懂的代码:
@voices = @posts.map(&:user) ;
然后看了看doc,发现doc上并没有关于这种用法的解释,于是google,也没有找到合适的答案,无奈,只能自己尝试。通过puts @voices 我发现@voices是一个user 对象的集合,而post belongs_to user, 到这里我并没有找到任何的关联;这时我又试着将&:user替换为&:user_id,这时候再puts @voices,打印出来的是数字,。。。嗯似乎有点明白了;再将&:user_id替换成&:body,put出来的是string array body的值。这下终于明白了,原来 @posts.map(&:user)==@posts.map{|post| post.user}
Rails程序初始化的过程
《 Rails 高级编程》前言介绍说这不是为初学者准备的,读者应该对 web 构架有所了解,很好的掌握 ruby1.8 ,有使用 ruby on rails 的网站开发经验。还推荐了一些读者本书之前应该读的一些图书。作者推荐的下面几本书都是很不错的,不过有些还没看。
1 、《 Programming Ruby 》,第 2 版,之前看类和模块的部分。
2 、《 The Ruby Programming Language 》 , 该书对 ruby1.8 和 ruby1.9 都做了详细的介绍,目前正在读,十分不错的一本书。
3 、《 Best of Ruby Quiz 》,该说选择了 25 道难题,然后给出了解决方案。
4 、《 Agile Web Development with Rails 》,现在第三版的中文版也有了。几乎是 rails 的入门必读书籍。
5 、《 Rails Cookbook 》,在图书馆看到了,一时看不完。等下下个月在看下。
这些都是一些学习 ruby 和 rails 的参考书籍,十分优秀的著作。自己以前都是用东西,上网查,很不系统,读书的乐趣就在于能够告诉你理论,从理论的角度出发去解决问题,是一种“授人以渔”。
书归正传,本书开始讲解的是 ruby 的一些基本知识。看了下,就当是复习了,不过收获还是挺大的,温故而知新。
从学习 rails 开始,总是学习 ruby api , rails api 之类的,不太了解 rails 的运行的各个步骤,不能高屋建瓴的统筹下, api 在熟练总觉得缺点什么,不能达到收放自如的地步。因此,我一直想找一些 rails 应用程序初始化和运行过程的资料,系统的了解和认识下,并试着自己去亲手配置,学习下。
先看下 initializer.rb 文件, Rails::Initializer 是用 ruby 处理 Rails 环境设置初始化的主类。应用的初始化是从 config/environment.rb 开始的,它包含了这样的 block:
Rails::Initializer.run do |config|
#
end
Rails::Initializer.run 生成一个新 Rails::Configuration 对象到 block 中。接着 run 方法创建一个新的 Rails::Intializer 对象,并调用 process 方法,该方法执行下面的步骤来初始化 Rails :
1. check_ruby_version: 确保使用的是 1.8 以上
2. set_load_path: 将框架路径加载到 ruby 加载路径中,如果说存在的话即存在, vendor/rails 或者 RAILS_FRAMEWORK_ROOT ,如果使用的是 ubuntu 操作系统的话,并且采用 apt-get 安装的 ruby 和 rails 系统会在每个的 rails 应用程序的 vendor 目录下会有一个 rails 的文件。
3. require_framework: 加载在 frameworks 配置选项中列出的每个框架,如果没有则认为是 RubyGems 安装的。
4. set_autoload_paths: 根据配置变量 load_paths 和 load_once_paths 设置自动加载路径。参数与第二步一致,用于处理未知变量和方法的时候。
5. load_enviroment: 加载并执行环境相关( development,product,test )配置文件
6. initialize_encoding: 设置 $KCODE 为 u 来使得整个 Rails 支持 UTF-8
7. initialize_database: 如果使用了 ActiveRecord ,设置它的数据库配置,并连接到相应的数据库服务器。
8. initialize_logger: 设置成 logger ,将顶级的 RAILS_DEFAULT_LOGGER 设置到该实例,如果在配置中指定 logger 就使用它,如果没有,就会创建一个新的 logger 并定向到 log_path 指定的那个,如果失败了,会显示一个警告,并把 log 重定向到标准错误输出。
9. initialize_framework_logging: 把 ActiveRecord , ActionController , ActionMailer 设置成刚刚初始化的 logger 。
10. initialize_framework_views: 把 ActionController 和 Action Mailer 设置 view_path 值,代表了视图路径。
11. initialize_dependency_machamism: 基于 cache_classes 配置项的值,来设置 Dependencies.mechaism( 他决定了是用 require 还是 load 来加载文件 ) ,那好来看下 require 和 load 的区别吧: require,load 用于文件,如 .rb 等等结尾的文件, require 一般情况下用于加载库文件,而 load 则用于加载配置文件, require 加 载一次, load 可加载多次。
12. initialize_whiny_nils: 如果 Whiny_nils 配置项设置为 true ,就会给 NilClass 添加 Whiny Nil 扩展(对 nil 上调用 id 或其他方法时他会抱怨)
13. initialize_temporay_directories: 设置 ActionController 的临时 session 和 cache 目录,如果他们存在文件系统中。
14. initialize_framework_settings: 将框架特定的配置项转换到框架 Base 类的方法调用上。例如,考虑这样的配置选项 :
config.active_record.schema_format =:sql , config.active_record 对象是一个 Rails::OrderedOptions 的实例,他从根本上是个有序 hash (目的是让配置保持顺序)。在初始化期间, initialize_framework_settings 方法将他转化成为下面的形式:
ActiveRecord::Base.sechema_format = :sql
15. add_support_load_paths: 给支持的功能添加加载路径。
16. load_plugins: 从 plugins 配置项指定的路径加载插件(默认从 vendor/plugins )。如果指定了一个 plugins 的配置项,就按它指定的顺序加载插件,加载 plugin 是在接近整个进程的尾声时进行的,所以他们可以覆盖已加载的插件。
17. load_observers: 实例化 ActiveRecord 的 Observers 。他是加载完 plugin 之后要做的,因此 plugin 有机会修改这些 observer 类。
18. initialize_routing: 加载处理 routes ,并根据 controller_paths 配置项设置 Controller 路径
19. after_initialize: 调用所以用户自定义的 after_initialize 回调,这些回调是在 config.after_initialize{…}block 里定义的。
20. load_application_initializers: 加载所有的 RAILS_ROOT/config/initializers 及其子目录的 ruby 文件。
至此为止, rails 已经准备好请求了。
发表评论
-
Destroying a Postgres DB on Heroku
2013-04-24 10:58 928heroku pg:reset DATABASE -
VIM ctags setup ack
2012-04-17 22:13 3255reference ctags --extra=+f --e ... -
alias_method_chain方法在3.1以后的替代使用方式
2012-02-04 02:14 3288alias_method_chain() 是rails里的一个 ... -
一些快速解决的问题
2012-01-19 12:35 1470问题如下: 引用Could not open library ... -
API service 安全问题
2011-12-04 08:47 1380这是一个长期关注的课题 rest api Service的 ... -
Module方法调用好不好
2011-11-20 01:58 1344以前说,用module给class加singleton方法,和 ... -
一个ajax和rails交互的例子
2011-11-19 01:53 1903首先,这里用了一个,query信息解析的包,如下 https: ... -
Rails 返回hash给javascript
2011-11-19 01:43 2272这是一个特别的,不太正统的需求, 因为,大部分时候,ajax的 ... -
关于Rubymine
2011-11-18 23:21 2263开个帖子收集有关使用上的问题 前一段时间,看到半价就买了。想 ... -
ruby中和javascript中,动态方法的创建
2011-11-18 21:01 1234class Klass def hello(*args) ... -
textmate快捷键 汇总
2011-11-16 07:20 8138TextMate 列编辑模式 按住 Alt 键,用鼠标选择要 ... -
Ruby面试系列六,面试继续面试
2011-11-15 05:55 2018刚才受到打击了,充分报漏了自己基础不扎实,不肯向虎炮等兄弟学习 ... -
说说sharding
2011-11-13 00:53 1481这个东西一面试就有人 ... -
rails面试碎碎念
2011-11-12 23:51 1939面试继续面试 又有问ru ... -
最通常的git push reject 和non-fast forward是因为
2011-11-12 23:29 17209git push To git@github.com:use ... -
Rails 自身的many to many关系 self has_many
2011-11-12 01:43 2732简单点的 #注意外键在person上people: id ... -
Rails 3下的 in place editor edit in place
2011-11-12 01:20 945第一个版本 http://code.google.com/p ... -
Heroku 的诡异问题集合
2011-11-11 07:22 1692开个Post记录,在用heroku过程中的一些诡异问题和要注意 ... -
SCSS 和 SASS 和 HAML 和CoffeeScript
2011-11-07 07:52 12952Asset Pipeline 提供了内建 ... -
Invalid gemspec because of the date format in specification
2011-11-07 02:14 2115又是这个date format的错误。 上次出错忘了,记录下 ...
相关推荐
1. 初始化项目:通过`rails new mybook`命令创建新的Rails应用。 2. 创建资源:使用`rails generate controller Posts`生成控制器,再用`rails generate scaffold Post title:string content:text`生成模型和相关的...
本文将深入探讨Rails的基本操作,包括配置、数据库连接以及如何使用Rails自动生成Web程序。 Rails遵循模型-视图-控制器(MVC)设计模式,这是一种将业务逻辑、用户界面和数据访问分离的设计方式。在Rails中,M、V、...
- **Rails 3 的新特性**:本书详细介绍了 Rails 3 引入的新特性,包括但不限于性能优化、API 改进等方面。 - **实战案例分析**:书中提供了大量基于 Rails 3 的实际项目案例,展示了如何利用 Rails 3 构建高效的应用...
从给定的文件信息来看,这是一本名为《Simply Rails 2》的书籍,第二版于2008年5月出版,作者是Patrick Lenz。本书旨在为初学者提供一个全面的Ruby on Rails入门指南,涵盖了从Ruby编程语言的基础到Rails框架的深入...
rails.vim提供了常用的一些命令,可以帮助开发,例如:Rgenerate, Rake, Rfind,RTview等,很方便,也很实用。 安装方法: 拷贝 autoload/rails.vim, plugin/rails.vim, 和 doc/rails.txt 到 ~/.vim 目录. ...
`Initializer` 类在这个阶段执行核心的初始化任务,包括设置加载路径、加载 Rails 的各个组件(如 ActionPack、ActiveRecord 等)、配置数据库连接、初始化路由等。`Rails::Initializer.run` 方法会根据传入的参数...
* 初始化目录结构和基本文件 知识点5:启动 Mongrel 服务器 * 启动 Mongrel 服务器 * 设置服务器端口(默认为 3000) 知识点6:测试 Rails 应用程序 * 打开 IE 测试 Rails 应用程序 * 查看 Rails 主界面 通过...
Ruby on Rails(简称Rails)是由David Heinemeier Hansson开发的一个开源Web应用程序框架,它基于Ruby编程语言,遵循MVC(模型-视图-控制器)架构模式,强调简洁、高效的代码和DRY(Don't Repeat Yourself)原则。...
Ruby on Rails 应用程序,为 OpenStreetMap 网站和 API 提供支持。这是 The Rails Port,一个为 OpenStreetMap 网站和 API 提供支持的 Ruby on Rails 应用程序。 该软件也被称为“openstreetmap-website”。网站,...
在压缩包的文件名称列表中,只有一个条目 "rails",这可能意味着压缩包内包含了 Rails 框架的核心文件,如 gemspec 文件、库文件、初始化脚本等。开发者可以通过解压这个文件,进一步了解 Rails 框架的结构和工作...
6. **ActiveSupport库**:Rails包含许多便利的工具和库,如时间处理、字符串操作、数组和哈希扩展,这些都封装在ActiveSupport中。 7. **测试驱动开发(TDD)**:Rails鼓励TDD实践,使用RSpec、Test::Unit或其他测试...
- **步骤**:通过命令行使用`rails new project_name`来初始化一个新的Rails项目。 - **结构**:新项目将包含默认的目录结构,如`app`、`config`、`db`等,分别用于存放应用程序代码、配置文件、数据库迁移脚本等。 ...
Rails是Ruby编程语言的一个强大框架,它极大地简化了Web应用程序的构建过程,尤其适合快速原型开发和敏捷方法。 在敏捷开发的背景下,这本书强调了灵活、迭代和以用户为中心的开发理念。敏捷开发方法鼓励快速响应...
rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板 Rails 应用编辑器 Rails 应用程序编辑器 gem 安装一个 命令行 工具来从"食谱"的Collection 组装 Rails 应用程序。"你可以使用 rails_...
Rails 3.2.6是本文的基础框架,它是一个强大的Ruby Web应用程序框架,以其MVC(模型-视图-控制器)架构和“约定优于配置”的原则而闻名。 首先,让我们了解Rails的MVC架构。模型(Model)负责处理业务逻辑和数据...
Rails::API 移除了 ActionView 和其他一些渲染功能,不关心Web前端的开发者可更容易、快速地开发应用程序,因此运行速度比正常的 Rails 应用程序要快。 Rails::API 可以用来创建只提供API服务(API-Only)的 Rails ...