- 浏览: 2049717 次
- 性别:
- 来自: 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 890heroku pg:reset DATABASE -
VIM ctags setup ack
2012-04-17 22:13 3215reference ctags --extra=+f --e ... -
alias_method_chain方法在3.1以后的替代使用方式
2012-02-04 02:14 3241alias_method_chain() 是rails里的一个 ... -
一些快速解决的问题
2012-01-19 12:35 1435问题如下: 引用Could not open library ... -
API service 安全问题
2011-12-04 08:47 1342这是一个长期关注的课题 rest api Service的 ... -
Module方法调用好不好
2011-11-20 01:58 1301以前说,用module给class加singleton方法,和 ... -
一个ajax和rails交互的例子
2011-11-19 01:53 1860首先,这里用了一个,query信息解析的包,如下 https: ... -
Rails 返回hash给javascript
2011-11-19 01:43 2238这是一个特别的,不太正统的需求, 因为,大部分时候,ajax的 ... -
关于Rubymine
2011-11-18 23:21 2229开个帖子收集有关使用上的问题 前一段时间,看到半价就买了。想 ... -
ruby中和javascript中,动态方法的创建
2011-11-18 21:01 1192class Klass def hello(*args) ... -
textmate快捷键 汇总
2011-11-16 07:20 8092TextMate 列编辑模式 按住 Alt 键,用鼠标选择要 ... -
Ruby面试系列六,面试继续面试
2011-11-15 05:55 1980刚才受到打击了,充分报漏了自己基础不扎实,不肯向虎炮等兄弟学习 ... -
说说sharding
2011-11-13 00:53 1435这个东西一面试就有人 ... -
rails面试碎碎念
2011-11-12 23:51 1899面试继续面试 又有问ru ... -
最通常的git push reject 和non-fast forward是因为
2011-11-12 23:29 17150git push To git@github.com:use ... -
Rails 自身的many to many关系 self has_many
2011-11-12 01:43 2679简单点的 #注意外键在person上people: id ... -
Rails 3下的 in place editor edit in place
2011-11-12 01:20 913第一个版本 http://code.google.com/p ... -
Heroku 的诡异问题集合
2011-11-11 07:22 1657开个Post记录,在用heroku过程中的一些诡异问题和要注意 ... -
SCSS 和 SASS 和 HAML 和CoffeeScript
2011-11-07 07:52 12902Asset Pipeline 提供了内建 ... -
Invalid gemspec because of the date format in specification
2011-11-07 02:14 2073又是这个date format的错误。 上次出错忘了,记录下 ...
相关推荐
With this fully revised new edition, take a holistic view of full-stack development to create usable, high-performing applications with Rails 5. Rails is a great tool for building web applications, ...
Addison.Wesley.Rails.AntiPatterns.Best.Practice.Ruby.on.Rails.Refactoring
Ruby.on.Rails.Tutorial,Learn.Web.Development.with.Rails,Third.Edition-中文版 文字版.pdf 个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!
rails.vim提供了常用的一些命令,可以帮助开发,例如:Rgenerate, Rake, Rfind,RTview等,很方便,也很实用。 安装方法: 拷贝 autoload/rails.vim, plugin/rails.vim, 和 doc/rails.txt 到 ~/.vim 目录. ...
使用RSpec 测试Rails 程序.pdf
RailsSpace teaches you Ruby on Rails by developing a real-world application: RailsSpace, a social networking website aimed at the Rails community itself. We take you step by step, from the virtually...
This concise teaches you how to use the power of Docker and Kubernetes to deploy your Rails applications easily and efficiently. Docker and Kubernetes are increasing in popularity every day, but what ...
rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板 Rails 应用编辑器 Rails 应用程序编辑器 gem 安装一个 命令行 工具来从"食谱"的Collection 组装 Rails 应用程序。"你可以使用 rails_...
Rails::API 移除了 ActionView 和其他一些渲染功能,不关心Web前端的开发者可更容易、快速地开发应用程序,因此运行速度比正常的 Rails 应用程序要快。 Rails::API 可以用来创建只提供API服务(API-Only)的 Rails ...
openstreetmap-website, 支持http的Rails 应用程序 Rails 端口" 这是 Rails 端口,它是支持网站和API的Ruby on Rails 应用程序。 软件也称为"openstreetmap网站"。这里存储库包括:该网站,包括用户帐户,日记条目,...
Spring是Rails的预加载器。Spring 能够通过保持应用运行在后台,来提升开发模式下的速度。使得不需要在执行test,rake task以及migration时每次都加载。 标签:Spring
klog2, 使用 Rails4 & angular.js 创建的博客应用程序 Klog使用 Rails 4.x 和 Angular.js 创建的博客应用程序屏幕截图 更多截图我的博客地址 http://chaoskeh.com演示版地址 http://klog-
Agile.Web.Development.with.Rails.3nd.Edition.Beta
RESTful.Rails.Development.2015.10.pdf
Rails.Recipes.Rails.3.Edition.和源码
官方推荐的Ruby On Rails书籍,Rails Recipes 2012最新版,英文, 专业ruby程序员必备
Ruby核心团队成员Aaron Patterson完成了phuby,它可以在Rails应用下运行php应用程序。项目的地址在https://github.com /tenderlove/phuby,尽管项目主持人Aaron发布了几个视频去证明phuby能让php在Rails下运行,但...
webpack-rails, 将 web pack与你的Ruby on Rails 应用程序集成 不再维护webpack-rails 不再被维护。 有关详细信息,请参阅 #90. web pack-railsweb pack 为你提供了将 web pack集成到现有的Ruby on Rails 应用程序中...
twitter-bootstrap-rails, 用于 Rails 5 4.x 资产管道的Twitter Bootstrap 用于 Rails 5和 Rails 4资产管道的 Twitter BootstrapBootstrap 是 Twitter的工具包,旨在开发网络应用程序和站点的kickstart 。 它包括...