rails 4.1.0 → 5.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (284) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +33 -19
  3. metadata +65 -310
  4. data/guides/CHANGELOG.md +0 -13
  5. data/guides/Rakefile +0 -77
  6. data/guides/assets/images/akshaysurve.jpg +0 -0
  7. data/guides/assets/images/belongs_to.png +0 -0
  8. data/guides/assets/images/book_icon.gif +0 -0
  9. data/guides/assets/images/bullet.gif +0 -0
  10. data/guides/assets/images/chapters_icon.gif +0 -0
  11. data/guides/assets/images/check_bullet.gif +0 -0
  12. data/guides/assets/images/credits_pic_blank.gif +0 -0
  13. data/guides/assets/images/csrf.png +0 -0
  14. data/guides/assets/images/edge_badge.png +0 -0
  15. data/guides/assets/images/favicon.ico +0 -0
  16. data/guides/assets/images/feature_tile.gif +0 -0
  17. data/guides/assets/images/footer_tile.gif +0 -0
  18. data/guides/assets/images/fxn.png +0 -0
  19. data/guides/assets/images/getting_started/article_with_comments.png +0 -0
  20. data/guides/assets/images/getting_started/challenge.png +0 -0
  21. data/guides/assets/images/getting_started/confirm_dialog.png +0 -0
  22. data/guides/assets/images/getting_started/forbidden_attributes_for_new_article.png +0 -0
  23. data/guides/assets/images/getting_started/form_with_errors.png +0 -0
  24. data/guides/assets/images/getting_started/index_action_with_edit_link.png +0 -0
  25. data/guides/assets/images/getting_started/new_article.png +0 -0
  26. data/guides/assets/images/getting_started/rails_welcome.png +0 -0
  27. data/guides/assets/images/getting_started/routing_error_no_controller.png +0 -0
  28. data/guides/assets/images/getting_started/routing_error_no_route_matches.png +0 -0
  29. data/guides/assets/images/getting_started/show_action_for_articles.png +0 -0
  30. data/guides/assets/images/getting_started/template_is_missing_articles_new.png +0 -0
  31. data/guides/assets/images/getting_started/unknown_action_create_for_articles.png +0 -0
  32. data/guides/assets/images/getting_started/unknown_action_new_for_articles.png +0 -0
  33. data/guides/assets/images/grey_bullet.gif +0 -0
  34. data/guides/assets/images/habtm.png +0 -0
  35. data/guides/assets/images/has_many.png +0 -0
  36. data/guides/assets/images/has_many_through.png +0 -0
  37. data/guides/assets/images/has_one.png +0 -0
  38. data/guides/assets/images/has_one_through.png +0 -0
  39. data/guides/assets/images/header_backdrop.png +0 -0
  40. data/guides/assets/images/header_tile.gif +0 -0
  41. data/guides/assets/images/i18n/demo_html_safe.png +0 -0
  42. data/guides/assets/images/i18n/demo_localized_pirate.png +0 -0
  43. data/guides/assets/images/i18n/demo_translated_en.png +0 -0
  44. data/guides/assets/images/i18n/demo_translated_pirate.png +0 -0
  45. data/guides/assets/images/i18n/demo_translation_missing.png +0 -0
  46. data/guides/assets/images/i18n/demo_untranslated.png +0 -0
  47. data/guides/assets/images/icons/README +0 -5
  48. data/guides/assets/images/icons/callouts/1.png +0 -0
  49. data/guides/assets/images/icons/callouts/10.png +0 -0
  50. data/guides/assets/images/icons/callouts/11.png +0 -0
  51. data/guides/assets/images/icons/callouts/12.png +0 -0
  52. data/guides/assets/images/icons/callouts/13.png +0 -0
  53. data/guides/assets/images/icons/callouts/14.png +0 -0
  54. data/guides/assets/images/icons/callouts/15.png +0 -0
  55. data/guides/assets/images/icons/callouts/2.png +0 -0
  56. data/guides/assets/images/icons/callouts/3.png +0 -0
  57. data/guides/assets/images/icons/callouts/4.png +0 -0
  58. data/guides/assets/images/icons/callouts/5.png +0 -0
  59. data/guides/assets/images/icons/callouts/6.png +0 -0
  60. data/guides/assets/images/icons/callouts/7.png +0 -0
  61. data/guides/assets/images/icons/callouts/8.png +0 -0
  62. data/guides/assets/images/icons/callouts/9.png +0 -0
  63. data/guides/assets/images/icons/caution.png +0 -0
  64. data/guides/assets/images/icons/example.png +0 -0
  65. data/guides/assets/images/icons/home.png +0 -0
  66. data/guides/assets/images/icons/important.png +0 -0
  67. data/guides/assets/images/icons/next.png +0 -0
  68. data/guides/assets/images/icons/note.png +0 -0
  69. data/guides/assets/images/icons/prev.png +0 -0
  70. data/guides/assets/images/icons/tip.png +0 -0
  71. data/guides/assets/images/icons/up.png +0 -0
  72. data/guides/assets/images/icons/warning.png +0 -0
  73. data/guides/assets/images/nav_arrow.gif +0 -0
  74. data/guides/assets/images/oscardelben.jpg +0 -0
  75. data/guides/assets/images/polymorphic.png +0 -0
  76. data/guides/assets/images/radar.png +0 -0
  77. data/guides/assets/images/rails4_features.png +0 -0
  78. data/guides/assets/images/rails_guides_kindle_cover.jpg +0 -0
  79. data/guides/assets/images/rails_guides_logo.gif +0 -0
  80. data/guides/assets/images/rails_logo_remix.gif +0 -0
  81. data/guides/assets/images/session_fixation.png +0 -0
  82. data/guides/assets/images/tab_grey.gif +0 -0
  83. data/guides/assets/images/tab_info.gif +0 -0
  84. data/guides/assets/images/tab_note.gif +0 -0
  85. data/guides/assets/images/tab_red.gif +0 -0
  86. data/guides/assets/images/tab_yellow.gif +0 -0
  87. data/guides/assets/images/tab_yellow.png +0 -0
  88. data/guides/assets/images/vijaydev.jpg +0 -0
  89. data/guides/assets/javascripts/guides.js +0 -53
  90. data/guides/assets/javascripts/jquery.min.js +0 -4
  91. data/guides/assets/javascripts/responsive-tables.js +0 -43
  92. data/guides/assets/javascripts/syntaxhighlighter/shBrushAS3.js +0 -59
  93. data/guides/assets/javascripts/syntaxhighlighter/shBrushAppleScript.js +0 -75
  94. data/guides/assets/javascripts/syntaxhighlighter/shBrushBash.js +0 -59
  95. data/guides/assets/javascripts/syntaxhighlighter/shBrushCSharp.js +0 -65
  96. data/guides/assets/javascripts/syntaxhighlighter/shBrushColdFusion.js +0 -100
  97. data/guides/assets/javascripts/syntaxhighlighter/shBrushCpp.js +0 -97
  98. data/guides/assets/javascripts/syntaxhighlighter/shBrushCss.js +0 -91
  99. data/guides/assets/javascripts/syntaxhighlighter/shBrushDelphi.js +0 -55
  100. data/guides/assets/javascripts/syntaxhighlighter/shBrushDiff.js +0 -41
  101. data/guides/assets/javascripts/syntaxhighlighter/shBrushErlang.js +0 -52
  102. data/guides/assets/javascripts/syntaxhighlighter/shBrushGroovy.js +0 -67
  103. data/guides/assets/javascripts/syntaxhighlighter/shBrushJScript.js +0 -52
  104. data/guides/assets/javascripts/syntaxhighlighter/shBrushJava.js +0 -57
  105. data/guides/assets/javascripts/syntaxhighlighter/shBrushJavaFX.js +0 -58
  106. data/guides/assets/javascripts/syntaxhighlighter/shBrushPerl.js +0 -72
  107. data/guides/assets/javascripts/syntaxhighlighter/shBrushPhp.js +0 -88
  108. data/guides/assets/javascripts/syntaxhighlighter/shBrushPlain.js +0 -33
  109. data/guides/assets/javascripts/syntaxhighlighter/shBrushPowerShell.js +0 -74
  110. data/guides/assets/javascripts/syntaxhighlighter/shBrushPython.js +0 -64
  111. data/guides/assets/javascripts/syntaxhighlighter/shBrushRuby.js +0 -55
  112. data/guides/assets/javascripts/syntaxhighlighter/shBrushSass.js +0 -94
  113. data/guides/assets/javascripts/syntaxhighlighter/shBrushScala.js +0 -51
  114. data/guides/assets/javascripts/syntaxhighlighter/shBrushSql.js +0 -66
  115. data/guides/assets/javascripts/syntaxhighlighter/shBrushVb.js +0 -56
  116. data/guides/assets/javascripts/syntaxhighlighter/shBrushXml.js +0 -69
  117. data/guides/assets/javascripts/syntaxhighlighter/shCore.js +0 -17
  118. data/guides/assets/stylesheets/fixes.css +0 -16
  119. data/guides/assets/stylesheets/kindle.css +0 -11
  120. data/guides/assets/stylesheets/main.css +0 -710
  121. data/guides/assets/stylesheets/print.css +0 -52
  122. data/guides/assets/stylesheets/reset.css +0 -43
  123. data/guides/assets/stylesheets/responsive-tables.css +0 -50
  124. data/guides/assets/stylesheets/style.css +0 -13
  125. data/guides/assets/stylesheets/syntaxhighlighter/shCore.css +0 -226
  126. data/guides/assets/stylesheets/syntaxhighlighter/shCoreDefault.css +0 -328
  127. data/guides/assets/stylesheets/syntaxhighlighter/shCoreDjango.css +0 -331
  128. data/guides/assets/stylesheets/syntaxhighlighter/shCoreEclipse.css +0 -339
  129. data/guides/assets/stylesheets/syntaxhighlighter/shCoreEmacs.css +0 -324
  130. data/guides/assets/stylesheets/syntaxhighlighter/shCoreFadeToGrey.css +0 -328
  131. data/guides/assets/stylesheets/syntaxhighlighter/shCoreMDUltra.css +0 -324
  132. data/guides/assets/stylesheets/syntaxhighlighter/shCoreMidnight.css +0 -324
  133. data/guides/assets/stylesheets/syntaxhighlighter/shCoreRDark.css +0 -324
  134. data/guides/assets/stylesheets/syntaxhighlighter/shThemeDefault.css +0 -117
  135. data/guides/assets/stylesheets/syntaxhighlighter/shThemeDjango.css +0 -120
  136. data/guides/assets/stylesheets/syntaxhighlighter/shThemeEclipse.css +0 -128
  137. data/guides/assets/stylesheets/syntaxhighlighter/shThemeEmacs.css +0 -113
  138. data/guides/assets/stylesheets/syntaxhighlighter/shThemeFadeToGrey.css +0 -117
  139. data/guides/assets/stylesheets/syntaxhighlighter/shThemeMDUltra.css +0 -113
  140. data/guides/assets/stylesheets/syntaxhighlighter/shThemeMidnight.css +0 -113
  141. data/guides/assets/stylesheets/syntaxhighlighter/shThemeRDark.css +0 -113
  142. data/guides/assets/stylesheets/syntaxhighlighter/shThemeRailsGuides.css +0 -116
  143. data/guides/bug_report_templates/action_controller_gem.rb +0 -47
  144. data/guides/bug_report_templates/action_controller_master.rb +0 -53
  145. data/guides/bug_report_templates/active_record_gem.rb +0 -40
  146. data/guides/bug_report_templates/active_record_master.rb +0 -49
  147. data/guides/code/getting_started/Gemfile +0 -40
  148. data/guides/code/getting_started/Gemfile.lock +0 -126
  149. data/guides/code/getting_started/README.rdoc +0 -28
  150. data/guides/code/getting_started/Rakefile +0 -6
  151. data/guides/code/getting_started/app/assets/javascripts/application.js +0 -15
  152. data/guides/code/getting_started/app/assets/javascripts/comments.js.coffee +0 -3
  153. data/guides/code/getting_started/app/assets/javascripts/posts.js.coffee +0 -3
  154. data/guides/code/getting_started/app/assets/javascripts/welcome.js.coffee +0 -3
  155. data/guides/code/getting_started/app/assets/stylesheets/application.css +0 -13
  156. data/guides/code/getting_started/app/assets/stylesheets/comments.css.scss +0 -3
  157. data/guides/code/getting_started/app/assets/stylesheets/posts.css.scss +0 -3
  158. data/guides/code/getting_started/app/assets/stylesheets/welcome.css.scss +0 -3
  159. data/guides/code/getting_started/app/controllers/application_controller.rb +0 -5
  160. data/guides/code/getting_started/app/controllers/comments_controller.rb +0 -23
  161. data/guides/code/getting_started/app/controllers/posts_controller.rb +0 -53
  162. data/guides/code/getting_started/app/controllers/welcome_controller.rb +0 -4
  163. data/guides/code/getting_started/app/helpers/application_helper.rb +0 -2
  164. data/guides/code/getting_started/app/helpers/comments_helper.rb +0 -2
  165. data/guides/code/getting_started/app/helpers/posts_helper.rb +0 -2
  166. data/guides/code/getting_started/app/helpers/welcome_helper.rb +0 -2
  167. data/guides/code/getting_started/app/models/comment.rb +0 -3
  168. data/guides/code/getting_started/app/models/post.rb +0 -7
  169. data/guides/code/getting_started/app/views/comments/_comment.html.erb +0 -15
  170. data/guides/code/getting_started/app/views/comments/_form.html.erb +0 -13
  171. data/guides/code/getting_started/app/views/layouts/application.html.erb +0 -14
  172. data/guides/code/getting_started/app/views/posts/_form.html.erb +0 -27
  173. data/guides/code/getting_started/app/views/posts/edit.html.erb +0 -5
  174. data/guides/code/getting_started/app/views/posts/index.html.erb +0 -21
  175. data/guides/code/getting_started/app/views/posts/new.html.erb +0 -5
  176. data/guides/code/getting_started/app/views/posts/show.html.erb +0 -18
  177. data/guides/code/getting_started/app/views/welcome/index.html.erb +0 -4
  178. data/guides/code/getting_started/bin/bundle +0 -4
  179. data/guides/code/getting_started/bin/rails +0 -4
  180. data/guides/code/getting_started/bin/rake +0 -4
  181. data/guides/code/getting_started/config.ru +0 -4
  182. data/guides/code/getting_started/config/application.rb +0 -18
  183. data/guides/code/getting_started/config/boot.rb +0 -4
  184. data/guides/code/getting_started/config/database.yml +0 -25
  185. data/guides/code/getting_started/config/environment.rb +0 -5
  186. data/guides/code/getting_started/config/environments/development.rb +0 -30
  187. data/guides/code/getting_started/config/environments/production.rb +0 -80
  188. data/guides/code/getting_started/config/environments/test.rb +0 -36
  189. data/guides/code/getting_started/config/initializers/backtrace_silencers.rb +0 -7
  190. data/guides/code/getting_started/config/initializers/filter_parameter_logging.rb +0 -4
  191. data/guides/code/getting_started/config/initializers/inflections.rb +0 -16
  192. data/guides/code/getting_started/config/initializers/locale.rb +0 -9
  193. data/guides/code/getting_started/config/initializers/mime_types.rb +0 -5
  194. data/guides/code/getting_started/config/initializers/secret_token.rb +0 -12
  195. data/guides/code/getting_started/config/initializers/session_store.rb +0 -3
  196. data/guides/code/getting_started/config/initializers/wrap_parameters.rb +0 -14
  197. data/guides/code/getting_started/config/locales/en.yml +0 -23
  198. data/guides/code/getting_started/config/routes.rb +0 -7
  199. data/guides/code/getting_started/db/migrate/20130122042648_create_posts.rb +0 -10
  200. data/guides/code/getting_started/db/migrate/20130122045842_create_comments.rb +0 -11
  201. data/guides/code/getting_started/db/schema.rb +0 -33
  202. data/guides/code/getting_started/db/seeds.rb +0 -7
  203. data/guides/code/getting_started/public/404.html +0 -60
  204. data/guides/code/getting_started/public/422.html +0 -60
  205. data/guides/code/getting_started/public/500.html +0 -59
  206. data/guides/code/getting_started/public/favicon.ico +0 -0
  207. data/guides/code/getting_started/public/robots.txt +0 -5
  208. data/guides/code/getting_started/test/controllers/comments_controller_test.rb +0 -7
  209. data/guides/code/getting_started/test/controllers/posts_controller_test.rb +0 -7
  210. data/guides/code/getting_started/test/controllers/welcome_controller_test.rb +0 -9
  211. data/guides/code/getting_started/test/fixtures/comments.yml +0 -11
  212. data/guides/code/getting_started/test/fixtures/posts.yml +0 -9
  213. data/guides/code/getting_started/test/helpers/comments_helper_test.rb +0 -4
  214. data/guides/code/getting_started/test/helpers/posts_helper_test.rb +0 -4
  215. data/guides/code/getting_started/test/helpers/welcome_helper_test.rb +0 -4
  216. data/guides/code/getting_started/test/models/comment_test.rb +0 -7
  217. data/guides/code/getting_started/test/models/post_test.rb +0 -7
  218. data/guides/code/getting_started/test/test_helper.rb +0 -15
  219. data/guides/rails_guides.rb +0 -63
  220. data/guides/rails_guides/generator.rb +0 -248
  221. data/guides/rails_guides/helpers.rb +0 -53
  222. data/guides/rails_guides/indexer.rb +0 -68
  223. data/guides/rails_guides/kindle.rb +0 -119
  224. data/guides/rails_guides/levenshtein.rb +0 -31
  225. data/guides/rails_guides/markdown.rb +0 -163
  226. data/guides/rails_guides/markdown/renderer.rb +0 -82
  227. data/guides/source/2_2_release_notes.md +0 -435
  228. data/guides/source/2_3_release_notes.md +0 -621
  229. data/guides/source/3_0_release_notes.md +0 -611
  230. data/guides/source/3_1_release_notes.md +0 -556
  231. data/guides/source/3_2_release_notes.md +0 -565
  232. data/guides/source/4_0_release_notes.md +0 -276
  233. data/guides/source/4_1_release_notes.md +0 -731
  234. data/guides/source/_license.html.erb +0 -2
  235. data/guides/source/_welcome.html.erb +0 -22
  236. data/guides/source/action_controller_overview.md +0 -1175
  237. data/guides/source/action_mailer_basics.md +0 -689
  238. data/guides/source/action_view_overview.md +0 -1610
  239. data/guides/source/active_model_basics.md +0 -200
  240. data/guides/source/active_record_basics.md +0 -373
  241. data/guides/source/active_record_callbacks.md +0 -410
  242. data/guides/source/active_record_querying.md +0 -1771
  243. data/guides/source/active_record_validations.md +0 -1169
  244. data/guides/source/active_support_core_extensions.md +0 -3864
  245. data/guides/source/active_support_instrumentation.md +0 -496
  246. data/guides/source/api_documentation_guidelines.md +0 -281
  247. data/guides/source/asset_pipeline.md +0 -1163
  248. data/guides/source/association_basics.md +0 -2229
  249. data/guides/source/caching_with_rails.md +0 -354
  250. data/guides/source/command_line.md +0 -603
  251. data/guides/source/configuring.md +0 -942
  252. data/guides/source/contributing_to_ruby_on_rails.md +0 -544
  253. data/guides/source/credits.html.erb +0 -80
  254. data/guides/source/debugging_rails_applications.md +0 -707
  255. data/guides/source/development_dependencies_install.md +0 -278
  256. data/guides/source/documents.yaml +0 -194
  257. data/guides/source/engines.md +0 -1391
  258. data/guides/source/form_helpers.md +0 -1001
  259. data/guides/source/generators.md +0 -663
  260. data/guides/source/getting_started.md +0 -1947
  261. data/guides/source/i18n.md +0 -1043
  262. data/guides/source/index.html.erb +0 -27
  263. data/guides/source/initialization.md +0 -657
  264. data/guides/source/kindle/copyright.html.erb +0 -1
  265. data/guides/source/kindle/layout.html.erb +0 -27
  266. data/guides/source/kindle/rails_guides.opf.erb +0 -52
  267. data/guides/source/kindle/toc.html.erb +0 -24
  268. data/guides/source/kindle/toc.ncx.erb +0 -64
  269. data/guides/source/kindle/welcome.html.erb +0 -5
  270. data/guides/source/layout.html.erb +0 -146
  271. data/guides/source/layouts_and_rendering.md +0 -1226
  272. data/guides/source/maintenance_policy.md +0 -56
  273. data/guides/source/migrations.md +0 -1108
  274. data/guides/source/nested_model_forms.md +0 -225
  275. data/guides/source/plugins.md +0 -444
  276. data/guides/source/rails_application_templates.md +0 -248
  277. data/guides/source/rails_on_rack.md +0 -333
  278. data/guides/source/routing.md +0 -1115
  279. data/guides/source/ruby_on_rails_guides_guidelines.md +0 -128
  280. data/guides/source/security.md +0 -1018
  281. data/guides/source/testing.md +0 -1057
  282. data/guides/source/upgrading_ruby_on_rails.md +0 -890
  283. data/guides/source/working_with_javascript_in_rails.md +0 -405
  284. data/guides/w3c_validator.rb +0 -95
@@ -1,7 +0,0 @@
1
- Blog::Application.routes.draw do
2
- resources :posts do
3
- resources :comments
4
- end
5
-
6
- root "welcome#index"
7
- end
@@ -1,10 +0,0 @@
1
- class CreatePosts < ActiveRecord::Migration
2
- def change
3
- create_table :posts do |t|
4
- t.string :title
5
- t.text :text
6
-
7
- t.timestamps
8
- end
9
- end
10
- end
@@ -1,11 +0,0 @@
1
- class CreateComments < ActiveRecord::Migration
2
- def change
3
- create_table :comments do |t|
4
- t.string :commenter
5
- t.text :body
6
- t.references :post, index: true
7
-
8
- t.timestamps
9
- end
10
- end
11
- end
@@ -1,33 +0,0 @@
1
- # encoding: UTF-8
2
- # This file is auto-generated from the current state of the database. Instead
3
- # of editing this file, please use the migrations feature of Active Record to
4
- # incrementally modify your database, and then regenerate this schema definition.
5
- #
6
- # Note that this schema.rb definition is the authoritative source for your
7
- # database schema. If you need to create the application database on another
8
- # system, you should be using db:schema:load, not running all the migrations
9
- # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
- # you'll amass, the slower it'll run and the greater likelihood for issues).
11
- #
12
- # It's strongly recommended that you check this file into your version control system.
13
-
14
- ActiveRecord::Schema.define(version: 20130122045842) do
15
-
16
- create_table "comments", force: true do |t|
17
- t.string "commenter"
18
- t.text "body"
19
- t.integer "post_id"
20
- t.datetime "created_at"
21
- t.datetime "updated_at"
22
- end
23
-
24
- add_index "comments", ["post_id"], name: "index_comments_on_post_id"
25
-
26
- create_table "posts", force: true do |t|
27
- t.string "title"
28
- t.text "text"
29
- t.datetime "created_at"
30
- t.datetime "updated_at"
31
- end
32
-
33
- end
@@ -1,7 +0,0 @@
1
- # This file should contain all the record creation needed to seed the database with its default values.
2
- # The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
3
- #
4
- # Examples:
5
- #
6
- # cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])
7
- # Mayor.create(name: 'Emanuel', city: cities.first)
@@ -1,60 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>The page you were looking for doesn't exist (404)</title>
5
- <style>
6
- body {
7
- background-color: #EFEFEF;
8
- color: #2E2F30;
9
- text-align: center;
10
- font-family: arial, sans-serif;
11
- }
12
-
13
- div.dialog {
14
- width: 25em;
15
- margin: 4em auto 0 auto;
16
- border: 1px solid #CCC;
17
- border-right-color: #999;
18
- border-left-color: #999;
19
- border-bottom-color: #BBB;
20
- border-top: #B00100 solid 4px;
21
- border-top-left-radius: 9px;
22
- border-top-right-radius: 9px;
23
- background-color: white;
24
- padding: 7px 4em 0 4em;
25
- box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
26
- }
27
-
28
- h1 {
29
- font-size: 100%;
30
- color: #730E15;
31
- line-height: 1.5em;
32
- }
33
-
34
- body > p {
35
- width: 33em;
36
- margin: 0 auto 1em;
37
- padding: 1em 0;
38
- background-color: #F7F7F7;
39
- border: 1px solid #CCC;
40
- border-right-color: #999;
41
- border-left-color: #999;
42
- border-bottom-color: #999;
43
- border-bottom-left-radius: 4px;
44
- border-bottom-right-radius: 4px;
45
- border-top-color: #DADADA;
46
- color: #666;
47
- box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
48
- }
49
- </style>
50
- </head>
51
-
52
- <body>
53
- <!-- This file lives in public/404.html -->
54
- <div class="dialog">
55
- <h1>The page you were looking for doesn't exist.</h1>
56
- <p>You may have mistyped the address or the page may have moved.</p>
57
- </div>
58
- <p>If you are the application owner check the logs for more information.</p>
59
- </body>
60
- </html>
@@ -1,60 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>The change you wanted was rejected (422)</title>
5
- <style>
6
- body {
7
- background-color: #EFEFEF;
8
- color: #2E2F30;
9
- text-align: center;
10
- font-family: arial, sans-serif;
11
- }
12
-
13
- div.dialog {
14
- width: 25em;
15
- margin: 4em auto 0 auto;
16
- border: 1px solid #CCC;
17
- border-right-color: #999;
18
- border-left-color: #999;
19
- border-bottom-color: #BBB;
20
- border-top: #B00100 solid 4px;
21
- border-top-left-radius: 9px;
22
- border-top-right-radius: 9px;
23
- background-color: white;
24
- padding: 7px 4em 0 4em;
25
- box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
26
- }
27
-
28
- h1 {
29
- font-size: 100%;
30
- color: #730E15;
31
- line-height: 1.5em;
32
- }
33
-
34
- body > p {
35
- width: 33em;
36
- margin: 0 auto 1em;
37
- padding: 1em 0;
38
- background-color: #F7F7F7;
39
- border: 1px solid #CCC;
40
- border-right-color: #999;
41
- border-left-color: #999;
42
- border-bottom-color: #999;
43
- border-bottom-left-radius: 4px;
44
- border-bottom-right-radius: 4px;
45
- border-top-color: #DADADA;
46
- color: #666;
47
- box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
48
- }
49
- </style>
50
- </head>
51
-
52
- <body>
53
- <!-- This file lives in public/422.html -->
54
- <div class="dialog">
55
- <h1>The change you wanted was rejected.</h1>
56
- <p>Maybe you tried to change something you didn't have access to.</p>
57
- </div>
58
- <p>If you are the application owner check the logs for more information.</p>
59
- </body>
60
- </html>
@@ -1,59 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>We're sorry, but something went wrong (500)</title>
5
- <style>
6
- body {
7
- background-color: #EFEFEF;
8
- color: #2E2F30;
9
- text-align: center;
10
- font-family: arial, sans-serif;
11
- }
12
-
13
- div.dialog {
14
- width: 25em;
15
- margin: 4em auto 0 auto;
16
- border: 1px solid #CCC;
17
- border-right-color: #999;
18
- border-left-color: #999;
19
- border-bottom-color: #BBB;
20
- border-top: #B00100 solid 4px;
21
- border-top-left-radius: 9px;
22
- border-top-right-radius: 9px;
23
- background-color: white;
24
- padding: 7px 4em 0 4em;
25
- box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
26
- }
27
-
28
- h1 {
29
- font-size: 100%;
30
- color: #730E15;
31
- line-height: 1.5em;
32
- }
33
-
34
- body > p {
35
- width: 33em;
36
- margin: 0 auto 1em;
37
- padding: 1em 0;
38
- background-color: #F7F7F7;
39
- border: 1px solid #CCC;
40
- border-right-color: #999;
41
- border-left-color: #999;
42
- border-bottom-color: #999;
43
- border-bottom-left-radius: 4px;
44
- border-bottom-right-radius: 4px;
45
- border-top-color: #DADADA;
46
- color: #666;
47
- box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
48
- }
49
- </style>
50
- </head>
51
-
52
- <body>
53
- <!-- This file lives in public/500.html -->
54
- <div class="dialog">
55
- <h1>We're sorry, but something went wrong.</h1>
56
- </div>
57
- <p>If you are the application owner check the logs for more information.</p>
58
- </body>
59
- </html>
@@ -1,5 +0,0 @@
1
- # See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
2
- #
3
- # To ban all spiders from the entire site uncomment the next two lines:
4
- # User-agent: *
5
- # Disallow: /
@@ -1,7 +0,0 @@
1
- require 'test_helper'
2
-
3
- class CommentsControllerTest < ActionController::TestCase
4
- # test "the truth" do
5
- # assert true
6
- # end
7
- end
@@ -1,7 +0,0 @@
1
- require 'test_helper'
2
-
3
- class PostsControllerTest < ActionController::TestCase
4
- # test "the truth" do
5
- # assert true
6
- # end
7
- end
@@ -1,9 +0,0 @@
1
- require 'test_helper'
2
-
3
- class WelcomeControllerTest < ActionController::TestCase
4
- test "should get index" do
5
- get :index
6
- assert_response :success
7
- end
8
-
9
- end
@@ -1,11 +0,0 @@
1
- # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2
-
3
- one:
4
- commenter: MyString
5
- body: MyText
6
- post_id:
7
-
8
- two:
9
- commenter: MyString
10
- body: MyText
11
- post_id:
@@ -1,9 +0,0 @@
1
- # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2
-
3
- one:
4
- title: MyString
5
- text: MyText
6
-
7
- two:
8
- title: MyString
9
- text: MyText
@@ -1,4 +0,0 @@
1
- require 'test_helper'
2
-
3
- class CommentsHelperTest < ActionView::TestCase
4
- end
@@ -1,4 +0,0 @@
1
- require 'test_helper'
2
-
3
- class PostsHelperTest < ActionView::TestCase
4
- end
@@ -1,4 +0,0 @@
1
- require 'test_helper'
2
-
3
- class WelcomeHelperTest < ActionView::TestCase
4
- end
@@ -1,7 +0,0 @@
1
- require 'test_helper'
2
-
3
- class CommentTest < ActiveSupport::TestCase
4
- # test "the truth" do
5
- # assert true
6
- # end
7
- end
@@ -1,7 +0,0 @@
1
- require 'test_helper'
2
-
3
- class PostTest < ActiveSupport::TestCase
4
- # test "the truth" do
5
- # assert true
6
- # end
7
- end
@@ -1,15 +0,0 @@
1
- ENV["RAILS_ENV"] = "test"
2
- require File.expand_path('../../config/environment', __FILE__)
3
- require 'rails/test_help'
4
-
5
- class ActiveSupport::TestCase
6
- ActiveRecord::Migration.check_pending!
7
-
8
- # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
9
- #
10
- # Note: You'll currently still have to declare fixtures explicitly in integration tests
11
- # -- they do not yet inherit this setting
12
- fixtures :all
13
-
14
- # Add more helper methods to be used by all tests here...
15
- end
@@ -1,63 +0,0 @@
1
- pwd = File.dirname(__FILE__)
2
- $:.unshift pwd
3
-
4
- # This is a predicate useful for the doc:guides task of applications.
5
- def bundler?
6
- # Note that rake sets the cwd to the one that contains the Rakefile
7
- # being executed.
8
- File.exist?('Gemfile')
9
- end
10
-
11
- begin
12
- # Guides generation in the Rails repo.
13
- as_lib = File.join(pwd, "../activesupport/lib")
14
- ap_lib = File.join(pwd, "../actionpack/lib")
15
-
16
- $:.unshift as_lib if File.directory?(as_lib)
17
- $:.unshift ap_lib if File.directory?(ap_lib)
18
- rescue LoadError
19
- # Guides generation from gems.
20
- gem "actionpack", '>= 3.0'
21
- end
22
-
23
- begin
24
- require 'redcarpet'
25
- rescue LoadError
26
- # This can happen if doc:guides is executed in an application.
27
- $stderr.puts('Generating guides requires Redcarpet 2.1.1+.')
28
- $stderr.puts(<<ERROR) if bundler?
29
- Please add
30
-
31
- gem 'redcarpet', '~> 2.1.1'
32
-
33
- to the Gemfile, run
34
-
35
- bundle install
36
-
37
- and try again.
38
- ERROR
39
- exit 1
40
- end
41
-
42
- begin
43
- require 'nokogiri'
44
- rescue LoadError
45
- # This can happen if doc:guides is executed in an application.
46
- $stderr.puts('Generating guides requires Nokogiri.')
47
- $stderr.puts(<<ERROR) if bundler?
48
- Please add
49
-
50
- gem 'nokogiri'
51
-
52
- to the Gemfile, run
53
-
54
- bundle install
55
-
56
- and try again.
57
- ERROR
58
- exit 1
59
- end
60
-
61
- require 'rails_guides/markdown'
62
- require "rails_guides/generator"
63
- RailsGuides::Generator.new.generate
@@ -1,248 +0,0 @@
1
- # ---------------------------------------------------------------------------
2
- #
3
- # This script generates the guides. It can be invoked via the
4
- # guides:generate rake task within the guides directory.
5
- #
6
- # Guides are taken from the source directory, and the resulting HTML goes into the
7
- # output directory. Assets are stored under files, and copied to output/files as
8
- # part of the generation process.
9
- #
10
- # Some arguments may be passed via environment variables:
11
- #
12
- # WARNINGS
13
- # If you are writing a guide, please work always with WARNINGS=1. Users can
14
- # generate the guides, and thus this flag is off by default.
15
- #
16
- # Internal links (anchors) are checked. If a reference is broken levenshtein
17
- # distance is used to suggest an existing one. This is useful since IDs are
18
- # generated by Markdown from headers and thus edits alter them.
19
- #
20
- # Also detects duplicated IDs. They happen if there are headers with the same
21
- # text. Please do resolve them, if any, so guides are valid XHTML.
22
- #
23
- # ALL
24
- # Set to "1" to force the generation of all guides.
25
- #
26
- # ONLY
27
- # Use ONLY if you want to generate only one or a set of guides. Prefixes are
28
- # enough:
29
- #
30
- # # generates only association_basics.html
31
- # ONLY=assoc ruby rails_guides.rb
32
- #
33
- # Separate many using commas:
34
- #
35
- # # generates only association_basics.html and migrations.html
36
- # ONLY=assoc,migrations ruby rails_guides.rb
37
- #
38
- # Note that if you are working on a guide generation will by default process
39
- # only that one, so ONLY is rarely used nowadays.
40
- #
41
- # GUIDES_LANGUAGE
42
- # Use GUIDES_LANGUAGE when you want to generate translated guides in
43
- # <tt>source/<GUIDES_LANGUAGE></tt> folder (such as <tt>source/es</tt>).
44
- # Ignore it when generating English guides.
45
- #
46
- # EDGE
47
- # Set to "1" to indicate generated guides should be marked as edge. This
48
- # inserts a badge and changes the preamble of the home page.
49
- #
50
- # ---------------------------------------------------------------------------
51
-
52
- require 'set'
53
- require 'fileutils'
54
-
55
- require 'active_support/core_ext/string/output_safety'
56
- require 'active_support/core_ext/object/blank'
57
- require 'action_controller'
58
- require 'action_view'
59
-
60
- require 'rails_guides/indexer'
61
- require 'rails_guides/helpers'
62
- require 'rails_guides/levenshtein'
63
-
64
- module RailsGuides
65
- class Generator
66
- attr_reader :guides_dir, :source_dir, :output_dir, :edge, :warnings, :all
67
-
68
- GUIDES_RE = /\.(?:erb|md)\z/
69
-
70
- def initialize(output=nil)
71
- set_flags_from_environment
72
-
73
- if kindle?
74
- check_for_kindlegen
75
- register_kindle_mime_types
76
- end
77
-
78
- initialize_dirs(output)
79
- create_output_dir_if_needed
80
- end
81
-
82
- def set_flags_from_environment
83
- @edge = ENV['EDGE'] == '1'
84
- @warnings = ENV['WARNINGS'] == '1'
85
- @all = ENV['ALL'] == '1'
86
- @kindle = ENV['KINDLE'] == '1'
87
- @version = ENV['RAILS_VERSION'] || 'local'
88
- @lang = ENV['GUIDES_LANGUAGE']
89
- end
90
-
91
- def register_kindle_mime_types
92
- Mime::Type.register_alias("application/xml", :opf, %w(opf))
93
- Mime::Type.register_alias("application/xml", :ncx, %w(ncx))
94
- end
95
-
96
- def generate
97
- generate_guides
98
- copy_assets
99
- generate_mobi if kindle?
100
- end
101
-
102
- private
103
-
104
- def kindle?
105
- @kindle
106
- end
107
-
108
- def check_for_kindlegen
109
- if `which kindlegen`.blank?
110
- raise "Can't create a kindle version without `kindlegen`."
111
- end
112
- end
113
-
114
- def generate_mobi
115
- require 'rails_guides/kindle'
116
- out = "#{output_dir}/kindlegen.out"
117
- Kindle.generate(output_dir, mobi, out)
118
- puts "(kindlegen log at #{out})."
119
- end
120
-
121
- def mobi
122
- "ruby_on_rails_guides_#@version%s.mobi" % (@lang.present? ? ".#@lang" : '')
123
- end
124
-
125
- def initialize_dirs(output)
126
- @guides_dir = File.join(File.dirname(__FILE__), '..')
127
- @source_dir = "#@guides_dir/source/#@lang"
128
- @output_dir = if output
129
- output
130
- elsif kindle?
131
- "#@guides_dir/output/kindle/#@lang"
132
- else
133
- "#@guides_dir/output/#@lang"
134
- end.sub(%r</$>, '')
135
- end
136
-
137
- def create_output_dir_if_needed
138
- FileUtils.mkdir_p(output_dir)
139
- end
140
-
141
- def generate_guides
142
- guides_to_generate.each do |guide|
143
- output_file = output_file_for(guide)
144
- generate_guide(guide, output_file) if generate?(guide, output_file)
145
- end
146
- end
147
-
148
- def guides_to_generate
149
- guides = Dir.entries(source_dir).grep(GUIDES_RE)
150
-
151
- if kindle?
152
- Dir.entries("#{source_dir}/kindle").grep(GUIDES_RE).map do |entry|
153
- next if entry == 'KINDLE.md'
154
- guides << "kindle/#{entry}"
155
- end
156
- end
157
-
158
- ENV.key?('ONLY') ? select_only(guides) : guides
159
- end
160
-
161
- def select_only(guides)
162
- prefixes = ENV['ONLY'].split(",").map(&:strip)
163
- guides.select do |guide|
164
- prefixes.any? { |p| guide.start_with?(p) || guide.start_with?("kindle") }
165
- end
166
- end
167
-
168
- def copy_assets
169
- FileUtils.cp_r(Dir.glob("#{guides_dir}/assets/*"), output_dir)
170
- end
171
-
172
- def output_file_for(guide)
173
- if guide.end_with?('.md')
174
- guide.sub(/md\z/, 'html')
175
- else
176
- guide.sub(/\.erb\z/, '')
177
- end
178
- end
179
-
180
- def output_path_for(output_file)
181
- File.join(output_dir, File.basename(output_file))
182
- end
183
-
184
- def generate?(source_file, output_file)
185
- fin = File.join(source_dir, source_file)
186
- fout = output_path_for(output_file)
187
- all || !File.exist?(fout) || File.mtime(fout) < File.mtime(fin)
188
- end
189
-
190
- def generate_guide(guide, output_file)
191
- output_path = output_path_for(output_file)
192
- puts "Generating #{guide} as #{output_file}"
193
- layout = kindle? ? 'kindle/layout' : 'layout'
194
-
195
- File.open(output_path, 'w') do |f|
196
- view = ActionView::Base.new(source_dir, :edge => @edge, :version => @version, :mobi => "kindle/#{mobi}")
197
- view.extend(Helpers)
198
-
199
- if guide =~ /\.(\w+)\.erb$/
200
- # Generate the special pages like the home.
201
- # Passing a template handler in the template name is deprecated. So pass the file name without the extension.
202
- result = view.render(:layout => layout, :formats => [$1], :file => $`)
203
- else
204
- body = File.read(File.join(source_dir, guide))
205
- result = RailsGuides::Markdown.new(view, layout).render(body)
206
-
207
- warn_about_broken_links(result) if @warnings
208
- end
209
-
210
- f.write(result)
211
- end
212
- end
213
-
214
- def warn_about_broken_links(html)
215
- anchors = extract_anchors(html)
216
- check_fragment_identifiers(html, anchors)
217
- end
218
-
219
- def extract_anchors(html)
220
- # Markdown generates headers with IDs computed from titles.
221
- anchors = Set.new
222
- html.scan(/<h\d\s+id="([^"]+)/).flatten.each do |anchor|
223
- if anchors.member?(anchor)
224
- puts "*** DUPLICATE ID: #{anchor}, please make sure that there're no headings with the same name at the same level."
225
- else
226
- anchors << anchor
227
- end
228
- end
229
-
230
- # Footnotes.
231
- anchors += Set.new(html.scan(/<p\s+class="footnote"\s+id="([^"]+)/).flatten)
232
- anchors += Set.new(html.scan(/<sup\s+class="footnote"\s+id="([^"]+)/).flatten)
233
- return anchors
234
- end
235
-
236
- def check_fragment_identifiers(html, anchors)
237
- html.scan(/<a\s+href="#([^"]+)/).flatten.each do |fragment_identifier|
238
- next if fragment_identifier == 'mainCol' # in layout, jumps to some DIV
239
- unless anchors.member?(fragment_identifier)
240
- guess = anchors.min { |a, b|
241
- Levenshtein.distance(fragment_identifier, a) <=> Levenshtein.distance(fragment_identifier, b)
242
- }
243
- puts "*** BROKEN LINK: ##{fragment_identifier}, perhaps you meant ##{guess}."
244
- end
245
- end
246
- end
247
- end
248
- end