Skip to content

Commit 25df24f

Browse files
authored
Merge pull request ruby-china#92 from AndorChen/5.1.2
译稿升级到 Rails 5.1.2
2 parents 5f366fa + ff9ed70 commit 25df24f

10 files changed

+30
-263
lines changed

source/zh-CN/action_mailer_basics.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -689,7 +689,7 @@ config.action_mailer.smtp_settings = {
689689
enable_starttls_auto: true }
690690
```
691691

692-
NOTE:2014715 日起,Google [增强了安全措施](https://support.google.com/accounts/answer/6010255),会阻止它认为不安全的应用访问。你可以在[这里](https://www.google.com/settings/security/lesssecureapps)修改 Gmail 的设置,允许访问,或者使用其他 ESP 发送电子邮件:把上面的 `'smtp.gmail.com'` 换成提供商的地址。
692+
NOTE:2014715 日起,Google [增强了安全措施](https://support.google.com/accounts/answer/6010255),会阻止它认为不安全的应用访问。你可以在[这里](https://www.google.com/settings/security/lesssecureapps)修改 Gmail 的设置,允许访问。如果你的 Gmail 账户启用了双因素身份验证,则要设定一个[应用密码](https://myaccount.google.com/apppasswords),用它代替常规的密码。或者,你也可以使用其他 ESP 发送电子邮件:把上面的 `'smtp.gmail.com'` 换成提供商的地址。
693693

694694
<a class="anchor" id="mailer-testing"></a>
695695

source/zh-CN/active_record_callbacks.md

+5-1
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,11 @@ NOTE: `find_by_*` 和 `find_by_*!` 方法是为每个属性自动生成的动态
276276

277277
回调在模型中注册后,将被加入队列等待执行。这个队列包含了所有模型的验证、已注册的回调和将要执行的数据库操作。
278278

279-
整个回调链包装在一个事务中。如果任何一个 `before` 回调方法返回 `false` 或引发异常,整个回调链就会停止执行,同时发出 `ROLLBACK` 消息来回滚事务;而 `after` 回调方法只能通过引发异常来达到相同的效果。
279+
整个回调链包装在一个事务中。只要有回调抛出异常,回调链随即停止,并且发出 `ROLLBACK` 消息。如果想故意停止回调链,可以这么做:
280+
281+
```ruby
282+
throw :abort
283+
```
280284

281285
WARNING: 当回调链停止后,Rails 会重新抛出除了 `ActiveRecord::Rollback``ActiveRecord::RecordInvalid` 之外的其他异常。这可能导致那些预期 `save``update_attributes` 等方法(通常返回 `true``false` )不会引发异常的代码出错。
282286

source/zh-CN/api_app.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -139,16 +139,17 @@ API 应用默认包含下述中间件:
139139
* `ActiveSupport::Cache::Strategy::LocalCache::Middleware`
140140
* `Rack::Runtime`
141141
* `ActionDispatch::RequestId`
142+
* `ActionDispatch::RemoteIp`
142143
* `Rails::Rack::Logger`
143144
* `ActionDispatch::ShowExceptions`
144145
* `ActionDispatch::DebugExceptions`
145-
* `ActionDispatch::RemoteIp`
146146
* `ActionDispatch::Reloader`
147147
* `ActionDispatch::Callbacks`
148148
* `ActiveRecord::Migration::CheckPending`
149149
* `Rack::Head`
150150
* `Rack::ConditionalGet`
151151
* `Rack::ETag`
152+
* `MyApi::Application::Routes`
152153

153154
各个中间件的作用参见 [内部中间件栈](rails_on_rack.html#internal-middleware-stack)
154155

@@ -301,6 +302,7 @@ API 应用(使用 `ActionController::API`)默认有下述控制器模块:
301302
* `ActionController::Rescue`:提供 `rescue_from`
302303
* `ActionController::Instrumentation`:提供 Action Controller 定义的监测钩子(详情参见 [Action Controller](active_support_instrumentation.html#action-controller))。
303304
* `ActionController::ParamsWrapper`:把参数散列放到一个嵌套散列中,这样在发送 POST 请求时无需指定根元素。
305+
* `ActionController::Head`:返回只有首部没有内容的响应。
304306

305307
其他插件可能会添加额外的模块。`ActionController::API` 引入的模块可以在 Rails 控制台中列出:
306308

source/zh-CN/contributing_to_ruby_on_rails.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ NOTE: 为了减轻 CI 服务器的压力,关于文档的提交消息中应该
139139

140140
我们欢迎人们自发把 Rails 指南翻译成其他语言。翻译时请遵照下述步骤:
141141

142-
* 派生项目 https://github.com/rails/rails
142+
* 派生 https://github.com/rails/rails 项目
143143
* 为你的语言添加一个文件夹,例如针对意大利语的 guides/source/it-IT
144144
* 把 guides/source 中的内容复制到你创建的文件夹中,然后翻译
145145
* 不要翻译 HTML 文件,因为那是自动生成的

source/zh-CN/getting_started.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -1133,11 +1133,11 @@ end
11331133
</table>
11341134
```
11351135

1136-
在上面的代码中,`link_to` 辅助方法生成“Destroy”链接的用法有点不同,其中第二个参数是具名路由(named route),还有一些选项作为其他参数。`method: :delete``data: { confirm: 'Are you sure?' }` 选项用于设置链接的 HTML5 属性,这样点击链接后 Rails 会先向用户显示一个确认对话框,然后用 `delete` 方法发起请求。这些操作是通过 JavaScript 脚本 `jquery_ujs` 实现的,这个脚本在生成应用骨架时已经被自动包含在了应用的布局中(`app/views/layouts/application.html.erb`)。如果没有这个脚本,确认对话框就无法显示。
1136+
在上面的代码中,`link_to` 辅助方法生成“Destroy”链接的用法有点不同,其中第二个参数是具名路由(named route),还有一些选项作为其他参数。`method: :delete``data: { confirm: 'Are you sure?' }` 选项用于设置链接的 HTML5 属性,这样点击链接后 Rails 会先向用户显示一个确认对话框,然后用 `delete` 方法发起请求。这些操作是通过 JavaScript 脚本 `rails-ujs` 实现的,这个脚本在生成应用骨架时已经被自动包含在了应用的布局中(`app/views/layouts/application.html.erb`)。如果没有这个脚本,确认对话框就无法显示。
11371137

11381138
![确认对话框](images/getting_started/confirm_dialog.png)
11391139

1140-
TIP: 关于 jQuery 非侵入式适配器(jQuery UJS)的更多介绍,请参阅[在 Rails 中使用 JavaScript](working_with_javascript_in_rails.html)
1140+
TIP: 关于非侵入式 JavaScript 的更多介绍,请参阅[在 Rails 中使用 JavaScript](working_with_javascript_in_rails.html)
11411141

11421142
恭喜你!现在你已经可以创建、显示、列出、更新和删除文章了!
11431143

source/zh-CN/nested_model_forms.md

-228
This file was deleted.

source/zh-CN/profiling.md

-13
This file was deleted.

source/zh-CN/rails_on_rack.md

+9-5
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,8 @@ use ActiveSupport::Cache::Strategy::LocalCache::Middleware
117117
use Rack::Runtime
118118
use Rack::MethodOverride
119119
use ActionDispatch::RequestId
120+
use ActionDispatch::RemoteIp
121+
use Sprockets::Rails::QuietAssets
120122
use Rails::Rack::Logger
121123
use ActionDispatch::ShowExceptions
122124
use WebConsole::Middleware
@@ -131,7 +133,7 @@ use ActionDispatch::Flash
131133
use Rack::Head
132134
use Rack::ConditionalGet
133135
use Rack::ETag
134-
run Rails.application.routes
136+
run MyApp.application.routes
135137
```
136138

137139
这里列出的默认中间件(以及其他一些)在 [内部中间件栈](#internal-middleware-stack)概述。
@@ -252,6 +254,12 @@ Action Controller 的大部分功能都实现成中间件。下面概述它们
252254

253255
在响应中设定唯一的 `X-Request-Id` 首部,并启用 `ActionDispatch::Request#request_id` 方法。
254256

257+
**`ActionDispatch::RemoteIp`**
258+
259+
检查 IP 欺骗攻击。
260+
261+
`Sprockets::Rails::QuietAssets`:在日志中输出对静态资源的请求。
262+
255263
**`Rails::Rack::Logger`**
256264

257265
通知日志,请求开始了。请求完毕后,清空所有相关日志。
@@ -264,10 +272,6 @@ Action Controller 的大部分功能都实现成中间件。下面概述它们
264272

265273
如果是本地请求,负责在日志中记录异常,并显示调试页面。
266274

267-
**`ActionDispatch::RemoteIp`**
268-
269-
检查 IP 欺骗攻击。
270-
271275
**`ActionDispatch::Reloader`**
272276

273277
提供准备和清理回调,目的是在开发环境中协助重新加载代码。

source/zh-CN/security.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -876,7 +876,7 @@ TIP: 为了了解当前针对 Web 应用的攻击方式,最好看几个真实
876876

877877
TIP: CSS 注入实际上是 JavaScript 注入,因为有的浏览器(如 IE、某些版本的 Safari 和其他浏览器)允许在 CSS 中使用 JavaScript。因此,在允许 Web 应用使用自定义 CSS 时,请三思而后行。
878878

879-
著名的 [MySpace Samy 蠕虫](http://namb.la/popular/tech.html)是解释 CSS 注入攻击原理的最好例子。这个蠕虫只需访问用户的个人信息页面就能向 Samy(攻击者)发送好友请求。在短短几个小时内,Samy 就收到了超过一百万个好友请求,巨大的流量致使 MySpace 宕机。下面我们从技术角度来分析这个蠕虫。
879+
著名的 [MySpace Samy 蠕虫](https://samy.pl/popular/tech.html)是解释 CSS 注入攻击原理的最好例子。这个蠕虫只需访问用户的个人信息页面就能向 Samy(攻击者)发送好友请求。在短短几个小时内,Samy 就收到了超过一百万个好友请求,巨大的流量致使 MySpace 宕机。下面我们从技术角度来分析这个蠕虫。
880880

881881
MySpace 禁用了很多标签,但允许使用 CSS。因此,蠕虫的作者通过下面这种方式把 JavaScript 植入 CSS 中:
882882

0 commit comments

Comments
 (0)