`
jbf034
  • 浏览: 152298 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
expir_xxx 方法会工作的很好,但是在你的“控制器”中它们也要与缓存功能的代码合 作。每次你修改数据库内的一些东西时,你也必须对它可能影响到的被缓存页做些工作。在 应用程序较小时这很容易,但应用程序快速增长时这就会变得很困难。在一个“控制器”内 的修改可能会影响到另一个“控制器”中被缓存的页。“帮助方法”内的商业逻辑,其实不 应该知道有关HTML 页的信息,现在需要担心的是失效被缓存的页。 幸运地,Rails 可以使用sweeper 来简化一些这样的耦合。Sweeper 是你的“模型”对象 上的一个指定“观察者”。当在“模型”内有重要事情发生时,sweeper 会失效依赖于此“模型”数据的 ...
相关文献(http://www.ibm.com/developerworks/cn/web/wa-rails1/#N1007C) 许多应用程序似乎都花费很多时间做重复的事情。博客应用程序提交当前文章列表给每 个访问者。商店应用程序在同一页显示产器信息给请求它的每个人。 所有重复都浪费了我们服务器的资源时间。提交博客页面可以要求半打的数据库查询, 它可以一直运行很多Ruby方法和Rails模板。它不应该对每个单独的请求都有大量的处理, 但对每小时可能一千多次的点击率,突然你的服务器会变得缓慢。你的用户看到越来越慢的 “应答”。在这些情况下,我们可以使用缓存来减少服务器上的加载操作,并提高我们应用程 ...
before“过滤器”的通常用法是在尝试一个“动作”之前确认是否遇到某些条件。Rails 确认机制是一个抽取动作,它可帮助你比使用“过滤器”代码更简明地表述前置条件。 例如,我们可能请求“会话”在我们的博客允许写评论前 ...
“过滤器”可以让你在你的“控制器”内写代码来包装由“动作”完成的处理—你可以 写个代码块,并在你的控制器(或你的“控制器”的子类)内的任何数量的“动作”之前或之 后来调用它。这是个强大功能。使用“过滤器”,我们可以实现检验计划,日志,response compression,甚至是定制的“应答”。 Rails 支持三种类型的“过滤器”:before,after,和around。“过滤器”可以在“动 作”运行之前,或之后被调用。这依赖于你如何定义它们,它们即可做为“控制器”内的方 法来运行,也可以在它们运行时传递“控制器”对象。不论哪种方式,它们都可以访问request的细节和response ...
Flash—“动作”间的通信 当我们使用redirect_to()来传输控制给其它“动作”时,浏览器生成一个单独的请求 来要求那个“动作”。那个请求将通过我们应用程序的一个“控制器”对象的新实例内被处 理—在原先“动作”内设置的实例变量在被重定向“动作”内的处理代码中将不再有效。但 是有时候我们需要在这两个实例之间通信。我们可以使用叫flash 的功能做到这一点。 flash 是个临时的值暂存器。它被组织成类似于一个哈希表,并用来存储“会话”数据, 所以你可以存储与key 关联的值,并在稍后再重新取回它们。它有一个特别的属性。缺省地, 在一个请求处理期间被存储到flash 内的值在随后马上到达的 ...
比较“会话”存储选项 对于这么多“会话”选项,我应该为应用程序选择哪一个呢?回答是“依赖”。 如果排除过于单纯的内存存储,太多约束的文件存储,和过于复杂的memcached 的话, 就剩下在PStore,ActiveRecordStore 和DRb 存储 ...
在存储你的“会话”数据时,Rails 有很多选项。每个选项即好也不好。我们先列出选 项的清单,然后再比较它们。 “会话”存储机制使用DEFAULT_SESSION_OPTIONS 哈希表的:database_manager 参数设 置。其它的选择是: 1、:database_manager => CGI::Session::Pstore 这是Rails 使用的缺省“会话”存储 机制。每个“会话”的数据以Pstore 格式存储在一个文本文件中。这种格式以Marshal 形式 保存对象,它允许任何的可序列化对象被存储在“会话”中。这种机制支持额外的配置选 项:prefix 和:tmpdir。 ...
Rails 的“会话”是个类似哈希表的结构,它在请求期间会一直有效。不像原始的cookie, “会话”可以持有任何对象(只要这些对象可以被marshale),来保存web 应用程序内的状态信息。例如,在我们的store 应用程序中,我们使用了一 ...
Cookie 允许web 应用程序从浏览器“会话”中得到类似哈希表的功能:你可以在客户端 浏览器上存储名字字符串,并在随后的请求中可按名字取回相应的值。 这太有意义了,因为HTTP,在浏览器和web 服务端之间使用的协议,是无状 ...
异常处理是开发过程中经常要面对的问题,基本所有高级语言都有自己的异常处理系统,ruby也不例外,而且使用起来也非常简单。 ruby中异常的抛出是使用的raise方法,记住哦,这是个方法,由ruby Kernel提供的,而不是关键字,同时ruby也为这个方法提供了一个别名fail,可以用fail代替raise,抛出异常的例子如下: Ruby代码 raise                                                       #抛出一个默认的RuntimeError   raise "Some error message"     ...
在Rails2.0当中有大量的用法已经被废弃掉了,在你的应用程序升级到Rails2.0的过程当中必须注意。下面我先列举一下有哪些用法被废弃,然后有什么替代方案,大家请帮我补充: 一、controller的paginate分页方法被拿掉了 2.0以前cont ...
“控制器”的一部分工作是响应用户。有三个基本方式来完成个工作: 1、最通用的方式是提交一个模板。在MVC 图中,模板是“视图”,它从“控制器”获得 信息并使用“控制器”来生成一个对浏览器的应答。 2、“控制器”可以直接返回一个字符串给浏览器而不是调用一个“视图”。这很少使用, 但可用于发送一个错误信息。 3、“控制器”可以发送其它数据给客户端(有时候不是HTML)。这典型地用于一些种类 下载(或者是PDF 文档,或者是文件的内容)。 我们简要地看看三者。 “控制器”总是对用户的每次请求做出应答。这意味着在处理每个请求时,你应该只调 用一次render()或者send_xxx()方法。(第 ...
一个HTTP redirect 被从服务端发送给客户端,以应答一个请求。它会说,“我不能处 理这个请求,但这儿有些人能处理”。Redirect 应答包括一个URL,它是客户端应该试着下 次发送同样的状态信息给这个redirect,而不管它是持久的(状 ...
我们已经看了在“控制器”内提交模板(render)和发送字符串(render_to_string)。应答的第三个部分是发送数据(典型地,但不是必须的,是文件的内容)给客户端。 A、send_data 发送包含二进制数据的字符串给客户端。 send_data(data, options...) 发送一个数据流给客户端。典型地浏览器将结合使用内容类型与部署,两者在选项内设 置,来决定这个用数据做什么。 def sales_graph png_data = Sales.plot_for(Date.today.month) send_data(png_data, :type => "i ...
模板是个文件,它定义一个应答的内容。Rails 支持两种格式的模板:rhtm,它是包含有 Ruby 代码和构建器的HTML,更多地用于程序方式。 习惯上,app/views/control/action.rhtml 或者app/vies/controller/action.rxml 文件内的模板用于“控制器”控 ...
Global site tag (gtag.js) - Google Analytics