rails 2.3.8 → 2.3.9.pre
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rails might be problematic. Click here for more details.
- data/CHANGELOG +3 -2
- data/Rakefile +6 -7
- data/builtin/rails_info/rails/info.rb +1 -1
- data/environments/boot.rb +6 -2
- data/environments/environment.rb +1 -1
- data/lib/initializer.rb +44 -20
- data/lib/rails/plugin.rb +1 -1
- data/lib/rails/plugin/loader.rb +3 -3
- data/lib/rails/version.rb +1 -1
- data/lib/rails_generator/generators/components/migration/migration_generator.rb +1 -1
- data/lib/rails_generator/generators/components/plugin/templates/test_helper.rb +2 -1
- metadata +25 -124
- data/guides/files/javascripts/code_highlighter.js +0 -188
- data/guides/files/javascripts/guides.js +0 -8
- data/guides/files/javascripts/highlighters.js +0 -90
- data/guides/files/stylesheets/main.css +0 -441
- data/guides/files/stylesheets/print.css +0 -52
- data/guides/files/stylesheets/reset.css +0 -43
- data/guides/files/stylesheets/style.css +0 -13
- data/guides/files/stylesheets/syntax.css +0 -31
- data/guides/images/belongs_to.png +0 -0
- data/guides/images/book_icon.gif +0 -0
- data/guides/images/bullet.gif +0 -0
- data/guides/images/chapters_icon.gif +0 -0
- data/guides/images/check_bullet.gif +0 -0
- data/guides/images/credits_pic_blank.gif +0 -0
- data/guides/images/csrf.png +0 -0
- data/guides/images/customized_error_messages.png +0 -0
- data/guides/images/error_messages.png +0 -0
- data/guides/images/feature_tile.gif +0 -0
- data/guides/images/footer_tile.gif +0 -0
- data/guides/images/fxn.jpg +0 -0
- data/guides/images/grey_bullet.gif +0 -0
- data/guides/images/habtm.png +0 -0
- data/guides/images/has_many.png +0 -0
- data/guides/images/has_many_through.png +0 -0
- data/guides/images/has_one.png +0 -0
- data/guides/images/has_one_through.png +0 -0
- data/guides/images/header_backdrop.png +0 -0
- data/guides/images/header_tile.gif +0 -0
- data/guides/images/i18n/demo_localized_pirate.png +0 -0
- data/guides/images/i18n/demo_translated_en.png +0 -0
- data/guides/images/i18n/demo_translated_pirate.png +0 -0
- data/guides/images/i18n/demo_translation_missing.png +0 -0
- data/guides/images/i18n/demo_untranslated.png +0 -0
- data/guides/images/icons/README +0 -5
- data/guides/images/icons/callouts/1.png +0 -0
- data/guides/images/icons/callouts/10.png +0 -0
- data/guides/images/icons/callouts/11.png +0 -0
- data/guides/images/icons/callouts/12.png +0 -0
- data/guides/images/icons/callouts/13.png +0 -0
- data/guides/images/icons/callouts/14.png +0 -0
- data/guides/images/icons/callouts/15.png +0 -0
- data/guides/images/icons/callouts/2.png +0 -0
- data/guides/images/icons/callouts/3.png +0 -0
- data/guides/images/icons/callouts/4.png +0 -0
- data/guides/images/icons/callouts/5.png +0 -0
- data/guides/images/icons/callouts/6.png +0 -0
- data/guides/images/icons/callouts/7.png +0 -0
- data/guides/images/icons/callouts/8.png +0 -0
- data/guides/images/icons/callouts/9.png +0 -0
- data/guides/images/icons/caution.png +0 -0
- data/guides/images/icons/example.png +0 -0
- data/guides/images/icons/home.png +0 -0
- data/guides/images/icons/important.png +0 -0
- data/guides/images/icons/next.png +0 -0
- data/guides/images/icons/note.png +0 -0
- data/guides/images/icons/prev.png +0 -0
- data/guides/images/icons/tip.png +0 -0
- data/guides/images/icons/up.png +0 -0
- data/guides/images/icons/warning.png +0 -0
- data/guides/images/nav_arrow.gif +0 -0
- data/guides/images/polymorphic.png +0 -0
- data/guides/images/posts_index.png +0 -0
- data/guides/images/rails_guides_logo.gif +0 -0
- data/guides/images/rails_logo_remix.gif +0 -0
- data/guides/images/rails_welcome.png +0 -0
- data/guides/images/session_fixation.png +0 -0
- data/guides/images/tab_grey.gif +0 -0
- data/guides/images/tab_info.gif +0 -0
- data/guides/images/tab_note.gif +0 -0
- data/guides/images/tab_red.gif +0 -0
- data/guides/images/tab_yellow.gif +0 -0
- data/guides/images/tab_yellow.png +0 -0
- data/guides/images/validation_error_messages.png +0 -0
- data/guides/rails_guides.rb +0 -42
- data/guides/rails_guides/generator.rb +0 -138
- data/guides/rails_guides/helpers.rb +0 -34
- data/guides/rails_guides/indexer.rb +0 -55
- data/guides/rails_guides/textile_extensions.rb +0 -41
- data/guides/source/2_2_release_notes.textile +0 -422
- data/guides/source/2_3_release_notes.textile +0 -610
- data/guides/source/action_controller_overview.textile +0 -776
- data/guides/source/action_mailer_basics.textile +0 -424
- data/guides/source/active_record_basics.textile +0 -135
- data/guides/source/active_record_querying.textile +0 -969
- data/guides/source/activerecord_validations_callbacks.textile +0 -1086
- data/guides/source/association_basics.textile +0 -1781
- data/guides/source/caching_with_rails.textile +0 -524
- data/guides/source/command_line.textile +0 -589
- data/guides/source/configuring.textile +0 -234
- data/guides/source/contribute.textile +0 -71
- data/guides/source/contributing_to_rails.textile +0 -239
- data/guides/source/credits.erb.textile +0 -52
- data/guides/source/debugging_rails_applications.textile +0 -709
- data/guides/source/form_helpers.textile +0 -766
- data/guides/source/getting_started.textile +0 -1297
- data/guides/source/i18n.textile +0 -912
- data/guides/source/index.erb.textile +0 -124
- data/guides/source/layout.html.erb +0 -103
- data/guides/source/layouts_and_rendering.textile +0 -979
- data/guides/source/migrations.textile +0 -591
- data/guides/source/nested_model_forms.textile +0 -222
- data/guides/source/performance_testing.textile +0 -531
- data/guides/source/plugins.textile +0 -1512
- data/guides/source/rails_on_rack.textile +0 -309
- data/guides/source/routing.textile +0 -903
- data/guides/source/security.textile +0 -986
- data/guides/source/testing.textile +0 -951
@@ -1,52 +0,0 @@
|
|
1
|
-
/* Guides.rubyonrails.org */
|
2
|
-
/* Print.css */
|
3
|
-
/* Created January 30, 2009 */
|
4
|
-
/* Modified January 31, 2009
|
5
|
-
--------------------------------------- */
|
6
|
-
|
7
|
-
body, .wrapper, .note, .info, code, #topNav, .L, .R, #frame, #container, #header, #navigation, #footer, #feature, #mainCol, #subCol, #extraCol, .content {position: static; text-align: left; text-indent: 0; background: White; color: Black; border-color: Black; width: auto; height: auto; display: block; float: none; min-height: 0; margin: 0; padding: 0;}
|
8
|
-
|
9
|
-
body {
|
10
|
-
background: #FFF;
|
11
|
-
font-size: 10pt !important;
|
12
|
-
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
13
|
-
line-height: 1.5;
|
14
|
-
color: #000;
|
15
|
-
padding: 0 3%;
|
16
|
-
}
|
17
|
-
|
18
|
-
.hide, .nav {
|
19
|
-
display: none !important;
|
20
|
-
}
|
21
|
-
|
22
|
-
a:link, a:visited {
|
23
|
-
background: transparent;
|
24
|
-
font-weight: bold;
|
25
|
-
text-decoration: underline;
|
26
|
-
}
|
27
|
-
|
28
|
-
hr {
|
29
|
-
background:#ccc;
|
30
|
-
color:#ccc;
|
31
|
-
width:100%;
|
32
|
-
height:2px;
|
33
|
-
margin:2em 0;
|
34
|
-
padding:0;
|
35
|
-
border:none;
|
36
|
-
}
|
37
|
-
|
38
|
-
h1,h2,h3,h4,h5,h6 { font-family: "Helvetica Neue", Arial, "Lucida Grande", sans-serif; }
|
39
|
-
code { font:.9em "Courier New", Monaco, Courier, monospace; }
|
40
|
-
|
41
|
-
img { float:left; margin:1.5em 1.5em 1.5em 0; }
|
42
|
-
a img { border:none; }
|
43
|
-
|
44
|
-
blockquote {
|
45
|
-
margin:1.5em;
|
46
|
-
padding:1em;
|
47
|
-
font-style:italic;
|
48
|
-
font-size:.9em;
|
49
|
-
}
|
50
|
-
|
51
|
-
.small { font-size: .9em; }
|
52
|
-
.large { font-size: 1.1em; }
|
@@ -1,43 +0,0 @@
|
|
1
|
-
/* Guides.rubyonrails.org */
|
2
|
-
/* Reset.css */
|
3
|
-
/* Created January 30, 2009
|
4
|
-
--------------------------------------- */
|
5
|
-
|
6
|
-
html, body, div, span, applet, object, iframe,
|
7
|
-
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
8
|
-
a, abbr, acronym, address, big, cite, code,
|
9
|
-
del, dfn, em, font, img, ins, kbd, q, s, samp,
|
10
|
-
small, strike, strong, sub, sup, tt, var,
|
11
|
-
b, u, i, center,
|
12
|
-
dl, dt, dd, ol, ul, li,
|
13
|
-
fieldset, form, label, legend,
|
14
|
-
table, caption, tbody, tfoot, thead, tr, th, td {
|
15
|
-
margin: 0;
|
16
|
-
padding: 0;
|
17
|
-
border: 0;
|
18
|
-
outline: 0;
|
19
|
-
font-size: 100%;
|
20
|
-
background: transparent;
|
21
|
-
}
|
22
|
-
|
23
|
-
body {line-height: 1; color: black; background: white;}
|
24
|
-
a img {border:none;}
|
25
|
-
ins {text-decoration: none;}
|
26
|
-
del {text-decoration: line-through;}
|
27
|
-
|
28
|
-
:focus {
|
29
|
-
-moz-outline:0;
|
30
|
-
outline:0;
|
31
|
-
outline-offset:0;
|
32
|
-
}
|
33
|
-
|
34
|
-
/* tables still need 'cellspacing="0"' in the markup */
|
35
|
-
table {border-collapse: collapse; border-spacing: 0;}
|
36
|
-
caption, th, td {text-align: left; font-weight: normal;}
|
37
|
-
|
38
|
-
blockquote, q {quotes: none;}
|
39
|
-
blockquote:before, blockquote:after,
|
40
|
-
q:before, q:after {
|
41
|
-
content: '';
|
42
|
-
content: none;
|
43
|
-
}
|
@@ -1,13 +0,0 @@
|
|
1
|
-
/* Guides.rubyonrails.org */
|
2
|
-
/* Style.css */
|
3
|
-
/* Created January 30, 2009
|
4
|
-
--------------------------------------- */
|
5
|
-
|
6
|
-
/*
|
7
|
-
---------------------------------------
|
8
|
-
Import advanced style sheet
|
9
|
-
---------------------------------------
|
10
|
-
*/
|
11
|
-
|
12
|
-
@import url("reset.css");
|
13
|
-
@import url("main.css");
|
@@ -1,31 +0,0 @@
|
|
1
|
-
.html .tag {
|
2
|
-
color : green;
|
3
|
-
}
|
4
|
-
|
5
|
-
.html .doctype {
|
6
|
-
color: #708090;
|
7
|
-
}
|
8
|
-
|
9
|
-
.erb .tag {
|
10
|
-
color : green;
|
11
|
-
}
|
12
|
-
|
13
|
-
.erb .doctype {
|
14
|
-
color: #708090;
|
15
|
-
}
|
16
|
-
|
17
|
-
.ruby .keywords {
|
18
|
-
color : red;
|
19
|
-
}
|
20
|
-
|
21
|
-
.ruby .ivar {
|
22
|
-
color : blue;
|
23
|
-
}
|
24
|
-
|
25
|
-
.ruby .comment {
|
26
|
-
color: #708090;
|
27
|
-
}
|
28
|
-
|
29
|
-
.ruby .symbol {
|
30
|
-
color: green;
|
31
|
-
}
|
Binary file
|
data/guides/images/book_icon.gif
DELETED
Binary file
|
data/guides/images/bullet.gif
DELETED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/guides/images/csrf.png
DELETED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/guides/images/fxn.jpg
DELETED
Binary file
|
Binary file
|
data/guides/images/habtm.png
DELETED
Binary file
|
data/guides/images/has_many.png
DELETED
Binary file
|
Binary file
|
data/guides/images/has_one.png
DELETED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/guides/images/icons/README
DELETED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/guides/images/icons/tip.png
DELETED
Binary file
|
data/guides/images/icons/up.png
DELETED
Binary file
|
Binary file
|
data/guides/images/nav_arrow.gif
DELETED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/guides/images/tab_grey.gif
DELETED
Binary file
|
data/guides/images/tab_info.gif
DELETED
Binary file
|
data/guides/images/tab_note.gif
DELETED
Binary file
|
data/guides/images/tab_red.gif
DELETED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/guides/rails_guides.rb
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
pwd = File.dirname(__FILE__)
|
2
|
-
$: << pwd
|
3
|
-
|
4
|
-
begin
|
5
|
-
as_lib = File.join(pwd, "../../activesupport/lib")
|
6
|
-
ap_lib = File.join(pwd, "../../actionpack/lib")
|
7
|
-
|
8
|
-
$: << as_lib if File.directory?(as_lib)
|
9
|
-
$: << ap_lib if File.directory?(ap_lib)
|
10
|
-
|
11
|
-
require "action_controller"
|
12
|
-
require "action_view"
|
13
|
-
rescue LoadError
|
14
|
-
require 'rubygems'
|
15
|
-
gem "actionpack", '>= 2.3'
|
16
|
-
|
17
|
-
require "action_controller"
|
18
|
-
require "action_view"
|
19
|
-
end
|
20
|
-
|
21
|
-
begin
|
22
|
-
require 'rubygems'
|
23
|
-
gem 'RedCloth', '>= 4.1.1'
|
24
|
-
rescue Gem::LoadError
|
25
|
-
$stderr.puts %(Generating Guides requires RedCloth 4.1.1+)
|
26
|
-
exit 1
|
27
|
-
end
|
28
|
-
|
29
|
-
require 'redcloth'
|
30
|
-
|
31
|
-
module RailsGuides
|
32
|
-
autoload :Generator, "rails_guides/generator"
|
33
|
-
autoload :Indexer, "rails_guides/indexer"
|
34
|
-
autoload :Helpers, "rails_guides/helpers"
|
35
|
-
autoload :TextileExtensions, "rails_guides/textile_extensions"
|
36
|
-
end
|
37
|
-
|
38
|
-
RedCloth.send(:include, RailsGuides::TextileExtensions)
|
39
|
-
|
40
|
-
if $0 == __FILE__
|
41
|
-
RailsGuides::Generator.new.generate
|
42
|
-
end
|
@@ -1,138 +0,0 @@
|
|
1
|
-
require 'set'
|
2
|
-
|
3
|
-
module RailsGuides
|
4
|
-
class Generator
|
5
|
-
attr_reader :output, :view_path, :view, :guides_dir
|
6
|
-
|
7
|
-
def initialize(output = nil)
|
8
|
-
@guides_dir = File.join(File.dirname(__FILE__), '..')
|
9
|
-
|
10
|
-
@output = output || File.join(@guides_dir, "output")
|
11
|
-
|
12
|
-
unless ENV["ONLY"]
|
13
|
-
FileUtils.rm_r(@output) if File.directory?(@output)
|
14
|
-
FileUtils.mkdir(@output)
|
15
|
-
end
|
16
|
-
|
17
|
-
@view_path = File.join(@guides_dir, "source")
|
18
|
-
end
|
19
|
-
|
20
|
-
def generate
|
21
|
-
guides = Dir.entries(view_path).find_all {|g| g =~ /textile$/ }
|
22
|
-
|
23
|
-
if ENV["ONLY"]
|
24
|
-
only = ENV["ONLY"].split(",").map{|x| x.strip }.map {|o| "#{o}.textile" }
|
25
|
-
guides = guides.find_all {|g| only.include?(g) }
|
26
|
-
puts "GENERATING ONLY #{guides.inspect}"
|
27
|
-
end
|
28
|
-
|
29
|
-
guides.each do |guide|
|
30
|
-
generate_guide(guide)
|
31
|
-
end
|
32
|
-
|
33
|
-
# Copy images and css files to html directory
|
34
|
-
FileUtils.cp_r File.join(guides_dir, 'images'), File.join(output, 'images')
|
35
|
-
FileUtils.cp_r File.join(guides_dir, 'files'), File.join(output, 'files')
|
36
|
-
end
|
37
|
-
|
38
|
-
def generate_guide(guide)
|
39
|
-
guide =~ /(.*?)(\.erb)?\.textile/
|
40
|
-
name = $1
|
41
|
-
|
42
|
-
puts "Generating #{name}"
|
43
|
-
|
44
|
-
file = File.join(output, "#{name}.html")
|
45
|
-
File.open(file, 'w') do |f|
|
46
|
-
@view = ActionView::Base.new(view_path)
|
47
|
-
@view.extend(Helpers)
|
48
|
-
|
49
|
-
if guide =~ /\.erb\.textile/
|
50
|
-
# Generate the erb pages with textile formatting - e.g. index/authors
|
51
|
-
result = view.render(:layout => 'layout', :file => name)
|
52
|
-
f.write textile(result)
|
53
|
-
else
|
54
|
-
body = File.read(File.join(view_path, guide))
|
55
|
-
body = set_header_section(body, @view)
|
56
|
-
body = set_index(body, @view)
|
57
|
-
|
58
|
-
result = view.render(:layout => 'layout', :text => textile(body))
|
59
|
-
f.write result
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
def set_header_section(body, view)
|
65
|
-
new_body = body.gsub(/(.*?)endprologue\./m, '').strip
|
66
|
-
header = $1
|
67
|
-
|
68
|
-
header =~ /h2\.(.*)/
|
69
|
-
page_title = $1.strip
|
70
|
-
|
71
|
-
header = textile(header)
|
72
|
-
|
73
|
-
view.content_for(:page_title) { page_title }
|
74
|
-
view.content_for(:header_section) { header }
|
75
|
-
new_body
|
76
|
-
end
|
77
|
-
|
78
|
-
def set_index(body, view)
|
79
|
-
index = <<-INDEX
|
80
|
-
<div id="subCol">
|
81
|
-
<h3 class="chapter"><img src="images/chapters_icon.gif" alt="" />Chapters</h3>
|
82
|
-
<ol class="chapters">
|
83
|
-
INDEX
|
84
|
-
|
85
|
-
i = Indexer.new(body)
|
86
|
-
i.index
|
87
|
-
|
88
|
-
# Set index for 2 levels
|
89
|
-
i.level_hash.each do |key, value|
|
90
|
-
link = view.content_tag(:a, :href => key[:id]) { textile(key[:title]) }
|
91
|
-
|
92
|
-
children = value.keys.map do |k|
|
93
|
-
l = view.content_tag(:a, :href => k[:id]) { textile(k[:title]) }
|
94
|
-
view.content_tag(:li, l)
|
95
|
-
end
|
96
|
-
|
97
|
-
children_ul = view.content_tag(:ul, children)
|
98
|
-
|
99
|
-
index << view.content_tag(:li, link + children_ul)
|
100
|
-
end
|
101
|
-
|
102
|
-
index << '</ol>'
|
103
|
-
index << '</div>'
|
104
|
-
|
105
|
-
view.content_for(:index_section) { index }
|
106
|
-
|
107
|
-
i.result
|
108
|
-
end
|
109
|
-
|
110
|
-
def textile(body)
|
111
|
-
# If the issue with notextile is fixed just remove the wrapper.
|
112
|
-
with_workaround_for_notextile(body) do |body|
|
113
|
-
t = RedCloth.new(body)
|
114
|
-
t.hard_breaks = false
|
115
|
-
t.to_html(:notestuff, :plusplus, :code, :tip)
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
# For some reason the notextile tag does not always turn off textile. See
|
120
|
-
# LH ticket of the security guide (#7). As a temporary workaround we deal
|
121
|
-
# with code blocks by hand.
|
122
|
-
def with_workaround_for_notextile(body)
|
123
|
-
code_blocks = []
|
124
|
-
body.gsub!(%r{<(yaml|shell|ruby|erb|html|sql|plain)>(.*?)</\1>}m) do |m|
|
125
|
-
es = ERB::Util.h($2)
|
126
|
-
css_class = ['erb', 'shell'].include?($1) ? 'html' : $1
|
127
|
-
code_blocks << %{<div class="code_container"><code class="#{css_class}">#{es}</code></div>}
|
128
|
-
"\ndirty_workaround_for_notextile_#{code_blocks.size - 1}\n"
|
129
|
-
end
|
130
|
-
|
131
|
-
body = yield body
|
132
|
-
|
133
|
-
body.gsub(%r{<p>dirty_workaround_for_notextile_(\d+)</p>}) do |_|
|
134
|
-
code_blocks[$1.to_i]
|
135
|
-
end
|
136
|
-
end
|
137
|
-
end
|
138
|
-
end
|