railties 4.1.16 → 4.2.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +80 -439
- data/RDOC_MAIN.rdoc +1 -1
- data/README.rdoc +6 -2
- data/lib/rails.rb +7 -1
- data/lib/rails/all.rb +1 -0
- data/lib/rails/api/task.rb +7 -0
- data/lib/rails/app_rails_loader.rb +4 -2
- data/lib/rails/application.rb +74 -47
- data/lib/rails/application/configuration.rb +23 -1
- data/lib/rails/application/finisher.rb +0 -2
- data/lib/rails/code_statistics.rb +4 -2
- data/lib/rails/commands/commands_tasks.rb +1 -6
- data/lib/rails/commands/console.rb +24 -12
- data/lib/rails/commands/dbconsole.rb +2 -2
- data/lib/rails/commands/plugin.rb +1 -1
- data/lib/rails/commands/server.rb +22 -9
- data/lib/rails/engine.rb +7 -7
- data/lib/rails/gem_version.rb +3 -3
- data/lib/rails/generators.rb +68 -15
- data/lib/rails/generators/actions.rb +27 -7
- data/lib/rails/generators/actions/create_migration.rb +2 -1
- data/lib/rails/generators/app_base.rb +55 -65
- data/lib/rails/generators/base.rb +2 -2
- data/lib/rails/generators/erb/scaffold/templates/_form.html.erb +0 -5
- data/lib/rails/generators/erb/scaffold/templates/edit.html.erb +1 -1
- data/lib/rails/generators/erb/scaffold/templates/index.html.erb +3 -1
- data/lib/rails/generators/erb/scaffold/templates/new.html.erb +1 -1
- data/lib/rails/generators/generated_attribute.rb +24 -4
- data/lib/rails/generators/model_helpers.rb +28 -0
- data/lib/rails/generators/rails/app/app_generator.rb +8 -2
- data/lib/rails/generators/rails/app/templates/Gemfile +21 -6
- data/lib/rails/generators/rails/app/templates/app/assets/javascripts/application.js.tt +1 -1
- data/lib/rails/generators/rails/app/templates/bin/setup +28 -0
- data/lib/rails/generators/rails/app/templates/config/application.rb +5 -1
- data/lib/rails/generators/rails/app/templates/config/boot.rb +1 -2
- data/lib/rails/generators/rails/app/templates/config/databases/ibm_db.yml +1 -3
- data/lib/rails/generators/rails/app/templates/config/databases/oracle.yml +1 -1
- data/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +4 -0
- data/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +8 -10
- data/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt +3 -0
- data/lib/rails/generators/rails/app/templates/config/initializers/cookies_serializer.rb +1 -1
- data/lib/rails/generators/rails/app/templates/gitignore +2 -0
- data/lib/rails/generators/rails/controller/USAGE +0 -1
- data/lib/rails/generators/rails/controller/controller_generator.rb +6 -2
- data/lib/rails/generators/rails/helper/USAGE +0 -4
- data/lib/rails/generators/rails/model/USAGE +11 -1
- data/lib/rails/generators/rails/model/model_generator.rb +4 -0
- data/lib/rails/generators/rails/plugin/plugin_generator.rb +1 -3
- data/lib/rails/generators/rails/plugin/templates/%name%.gemspec +1 -1
- data/lib/rails/generators/rails/plugin/templates/Gemfile +10 -6
- data/lib/rails/generators/rails/plugin/templates/Rakefile +4 -0
- data/lib/rails/generators/rails/plugin/templates/app/controllers/%name%/application_controller.rb.tt +0 -1
- data/lib/rails/generators/rails/plugin/templates/rails/javascripts.js +1 -1
- data/lib/rails/generators/rails/plugin/templates/test/test_helper.rb +2 -10
- data/lib/rails/generators/rails/resource_route/resource_route_generator.rb +2 -4
- data/lib/rails/generators/rails/scaffold/USAGE +7 -1
- data/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb +0 -1
- data/lib/rails/generators/rails/scaffold_controller/templates/controller.rb +1 -1
- data/lib/rails/generators/resource_helpers.rb +2 -11
- data/lib/rails/generators/test_unit/helper/helper_generator.rb +1 -5
- data/lib/rails/generators/testing/behaviour.rb +17 -0
- data/lib/rails/info.rb +1 -1
- data/lib/rails/info_controller.rb +1 -1
- data/lib/rails/mailers_controller.rb +14 -16
- data/lib/rails/paths.rb +1 -1
- data/lib/rails/rack.rb +1 -1
- data/lib/rails/rack/log_tailer.rb +4 -0
- data/lib/rails/rack/logger.rb +1 -1
- data/lib/rails/railtie.rb +2 -2
- data/lib/rails/ruby_version_check.rb +1 -1
- data/lib/rails/source_annotation_extractor.rb +23 -16
- data/lib/rails/tasks/framework.rake +1 -1
- data/lib/rails/tasks/statistics.rake +8 -3
- data/lib/rails/templates/rails/mailers/email.html.erb +2 -13
- data/lib/rails/templates/rails/mailers/index.html.erb +2 -2
- data/lib/rails/templates/rails/mailers/mailer.html.erb +1 -1
- data/lib/rails/test_unit/sub_test_task.rb +2 -2
- metadata +13 -13
- data/lib/rails/generators/test_unit/helper/templates/helper_test.rb +0 -6
- data/lib/rails/rubyprof_ext.rb +0 -35
data/lib/rails/railtie.rb
CHANGED
@@ -183,8 +183,8 @@ module Rails
|
|
183
183
|
end
|
184
184
|
|
185
185
|
protected
|
186
|
-
def generate_railtie_name(
|
187
|
-
ActiveSupport::Inflector.underscore(
|
186
|
+
def generate_railtie_name(string)
|
187
|
+
ActiveSupport::Inflector.underscore(string).tr("/", "_")
|
188
188
|
end
|
189
189
|
|
190
190
|
# If the class method does not have a method, then send the method call
|
@@ -18,6 +18,20 @@ class SourceAnnotationExtractor
|
|
18
18
|
@@directories ||= %w(app config db lib test) + (ENV['SOURCE_ANNOTATION_DIRECTORIES'] || '').split(',')
|
19
19
|
end
|
20
20
|
|
21
|
+
def self.extensions
|
22
|
+
@@extensions ||= {}
|
23
|
+
end
|
24
|
+
|
25
|
+
# Registers new Annotations File Extensions
|
26
|
+
# SourceAnnotationExtractor::Annotation.register_extensions("css", "scss", "sass", "less", "js") { |tag| /\/\/\s*(#{tag}):?\s*(.*)$/ }
|
27
|
+
def self.register_extensions(*exts, &block)
|
28
|
+
extensions[/\.(#{exts.join("|")})$/] = block
|
29
|
+
end
|
30
|
+
|
31
|
+
register_extensions("builder", "rb", "rake", "yml", "yaml", "ruby") { |tag| /#\s*(#{tag}):?\s*(.*)$/ }
|
32
|
+
register_extensions("css", "js") { |tag| /\/\/\s*(#{tag}):?\s*(.*)$/ }
|
33
|
+
register_extensions("erb") { |tag| /<%\s*#\s*(#{tag}):?\s*(.*?)\s*%>/ }
|
34
|
+
|
21
35
|
# Returns a representation of the annotation that looks like this:
|
22
36
|
#
|
23
37
|
# [126] [TODO] This algorithm is simple and clearly correct, make it faster.
|
@@ -78,21 +92,14 @@ class SourceAnnotationExtractor
|
|
78
92
|
if File.directory?(item)
|
79
93
|
results.update(find_in(item))
|
80
94
|
else
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
when /\.haml$/
|
90
|
-
/-\s*#\s*(#{tag}):?\s*(.*)$/
|
91
|
-
when /\.slim$/
|
92
|
-
/\/\s*\s*(#{tag}):?\s*(.*)$/
|
93
|
-
else nil
|
94
|
-
end
|
95
|
-
results.update(extract_annotations_from(item, pattern)) if pattern
|
95
|
+
extension = Annotation.extensions.detect do |regexp, _block|
|
96
|
+
regexp.match(item)
|
97
|
+
end
|
98
|
+
|
99
|
+
if extension
|
100
|
+
pattern = extension.last.call(tag)
|
101
|
+
results.update(extract_annotations_from(item, pattern)) if pattern
|
102
|
+
end
|
96
103
|
end
|
97
104
|
end
|
98
105
|
|
@@ -115,7 +122,7 @@ class SourceAnnotationExtractor
|
|
115
122
|
# Prints the mapping from filenames to annotations in +results+ ordered by filename.
|
116
123
|
# The +options+ hash is passed to each annotation's +to_s+.
|
117
124
|
def display(results, options={})
|
118
|
-
options[:indent] = results.
|
125
|
+
options[:indent] = results.flat_map { |f, a| a.map(&:line) }.max.to_s.size
|
119
126
|
results.keys.sort.each do |file|
|
120
127
|
puts "#{file}:"
|
121
128
|
results[file].each do |note|
|
@@ -3,7 +3,7 @@ namespace :rails do
|
|
3
3
|
task update: [ "update:configs", "update:bin" ]
|
4
4
|
|
5
5
|
desc "Applies the template supplied by LOCATION=(/path/to/template) or URL"
|
6
|
-
task :
|
6
|
+
task template: :environment do
|
7
7
|
template = ENV["LOCATION"]
|
8
8
|
raise "No LOCATION value given. Please set LOCATION either as path to a file or a URL" if template.blank?
|
9
9
|
template = File.expand_path(template) if template !~ %r{\A[A-Za-z][A-Za-z0-9+\-\.]*://}
|
@@ -1,3 +1,6 @@
|
|
1
|
+
# while having global constant is not good,
|
2
|
+
# many 3rd party tools depend on it, like rspec-rails, cucumber-rails, etc
|
3
|
+
# so if will be removed - deprecation warning is needed
|
1
4
|
STATS_DIRECTORIES = [
|
2
5
|
%w(Controllers app/controllers),
|
3
6
|
%w(Helpers app/helpers),
|
@@ -13,10 +16,12 @@ STATS_DIRECTORIES = [
|
|
13
16
|
%w(Integration\ tests test/integration),
|
14
17
|
%w(Functional\ tests\ (old) test/functional),
|
15
18
|
%w(Unit\ tests \ (old) test/unit)
|
16
|
-
].collect
|
19
|
+
].collect do |name, dir|
|
20
|
+
[ name, "#{File.dirname(Rake.application.rakefile_location)}/#{dir}" ]
|
21
|
+
end.select { |name, dir| File.directory?(dir) }
|
17
22
|
|
18
|
-
desc "Report code statistics (KLOCs, etc) from the application"
|
23
|
+
desc "Report code statistics (KLOCs, etc) from the application or engine"
|
19
24
|
task :stats do
|
20
25
|
require 'rails/code_statistics'
|
21
26
|
CodeStatistics.new(*STATS_DIRECTORIES).to_s
|
22
|
-
end
|
27
|
+
end
|
@@ -31,10 +31,6 @@
|
|
31
31
|
padding: 1px;
|
32
32
|
}
|
33
33
|
|
34
|
-
dd:empty:before {
|
35
|
-
content: "\00a0"; //
|
36
|
-
}
|
37
|
-
|
38
34
|
iframe {
|
39
35
|
border: 0;
|
40
36
|
width: 100%;
|
@@ -81,7 +77,7 @@
|
|
81
77
|
<% unless @email.attachments.nil? || @email.attachments.empty? %>
|
82
78
|
<dt>Attachments:</dt>
|
83
79
|
<dd>
|
84
|
-
<%= @email.attachments.map { |a| a.respond_to?(:original_filename) ? a.original_filename : a.filename }.
|
80
|
+
<%= @email.attachments.map { |a| a.respond_to?(:original_filename) ? a.original_filename : a.filename }.inspect %>
|
85
81
|
</dd>
|
86
82
|
<% end %>
|
87
83
|
|
@@ -96,14 +92,7 @@
|
|
96
92
|
</dl>
|
97
93
|
</header>
|
98
94
|
|
99
|
-
|
100
|
-
<iframe seamless name="messageBody" src="?part=<%= Rack::Utils.escape(@part.mime_type) %>"></iframe>
|
101
|
-
<% else %>
|
102
|
-
<p>
|
103
|
-
You are trying to preview an email that does not have any content.
|
104
|
-
This is probably because the <em>mail</em> method has not been called in <em><%= @preview.preview_name %>#<%= @email_action %></em>.
|
105
|
-
</p>
|
106
|
-
<% end %>
|
95
|
+
<iframe seamless name="messageBody" src="?part=<%= Rack::Utils.escape(@part.mime_type) %>"></iframe>
|
107
96
|
|
108
97
|
</body>
|
109
98
|
</html>
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<% @previews.each do |preview| %>
|
2
|
-
<h3><%= link_to preview.preview_name.titleize,
|
2
|
+
<h3><%= link_to preview.preview_name.titleize, "/rails/mailers/#{preview.preview_name}" %></h3>
|
3
3
|
<ul>
|
4
4
|
<% preview.emails.each do |email| %>
|
5
|
-
<li><%= link_to email,
|
5
|
+
<li><%= link_to email, "/rails/mailers/#{preview.preview_name}/#{email}" %></li>
|
6
6
|
<% end %>
|
7
7
|
</ul>
|
8
8
|
<% end %>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<h3><%= @preview.preview_name.titleize %></h3>
|
2
2
|
<ul>
|
3
3
|
<% @preview.emails.each do |email| %>
|
4
|
-
<li><%= link_to email,
|
4
|
+
<li><%= link_to email, "/rails/mailers/#{@preview.preview_name}/#{email}" %></li>
|
5
5
|
<% end %>
|
6
6
|
</ul>
|
@@ -7,7 +7,7 @@ module Rails
|
|
7
7
|
#
|
8
8
|
# This class takes a TestInfo class and defines the appropriate rake task
|
9
9
|
# based on the information, then invokes it.
|
10
|
-
class TestCreator
|
10
|
+
class TestCreator # :nodoc:
|
11
11
|
def initialize(info)
|
12
12
|
@info = info
|
13
13
|
end
|
@@ -41,7 +41,7 @@ module Rails
|
|
41
41
|
# to test files (or can be transformed into test files). Calling <tt>files</tt>
|
42
42
|
# provides the set of test files and is used when initializing tests after
|
43
43
|
# a call to <tt>rake test</tt>.
|
44
|
-
class TestInfo
|
44
|
+
class TestInfo # :nodoc:
|
45
45
|
def initialize(tasks)
|
46
46
|
@tasks = tasks
|
47
47
|
@files = nil
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: railties
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.2.0.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-08-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 4.
|
19
|
+
version: 4.2.0.beta1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 4.
|
26
|
+
version: 4.2.0.beta1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: actionpack
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 4.
|
33
|
+
version: 4.2.0.beta1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 4.
|
40
|
+
version: 4.2.0.beta1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -78,14 +78,14 @@ dependencies:
|
|
78
78
|
requirements:
|
79
79
|
- - '='
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: 4.
|
81
|
+
version: 4.2.0.beta1
|
82
82
|
type: :development
|
83
83
|
prerelease: false
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
86
|
- - '='
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version: 4.
|
88
|
+
version: 4.2.0.beta1
|
89
89
|
description: 'Rails internals: application bootup, plugins, generators, and rake tasks.'
|
90
90
|
email: david@loudthinking.com
|
91
91
|
executables:
|
@@ -157,6 +157,7 @@ files:
|
|
157
157
|
- lib/rails/generators/js/assets/assets_generator.rb
|
158
158
|
- lib/rails/generators/js/assets/templates/javascript.js
|
159
159
|
- lib/rails/generators/migration.rb
|
160
|
+
- lib/rails/generators/model_helpers.rb
|
160
161
|
- lib/rails/generators/named_base.rb
|
161
162
|
- lib/rails/generators/rails/app/USAGE
|
162
163
|
- lib/rails/generators/rails/app/app_generator.rb
|
@@ -171,6 +172,7 @@ files:
|
|
171
172
|
- lib/rails/generators/rails/app/templates/bin/bundle
|
172
173
|
- lib/rails/generators/rails/app/templates/bin/rails
|
173
174
|
- lib/rails/generators/rails/app/templates/bin/rake
|
175
|
+
- lib/rails/generators/rails/app/templates/bin/setup
|
174
176
|
- lib/rails/generators/rails/app/templates/config.ru
|
175
177
|
- lib/rails/generators/rails/app/templates/config/application.rb
|
176
178
|
- lib/rails/generators/rails/app/templates/config/boot.rb
|
@@ -276,7 +278,6 @@ files:
|
|
276
278
|
- lib/rails/generators/test_unit/generator/generator_generator.rb
|
277
279
|
- lib/rails/generators/test_unit/generator/templates/generator_test.rb
|
278
280
|
- lib/rails/generators/test_unit/helper/helper_generator.rb
|
279
|
-
- lib/rails/generators/test_unit/helper/templates/helper_test.rb
|
280
281
|
- lib/rails/generators/test_unit/integration/integration_generator.rb
|
281
282
|
- lib/rails/generators/test_unit/integration/templates/integration_test.rb
|
282
283
|
- lib/rails/generators/test_unit/mailer/mailer_generator.rb
|
@@ -306,7 +307,6 @@ files:
|
|
306
307
|
- lib/rails/railtie/configurable.rb
|
307
308
|
- lib/rails/railtie/configuration.rb
|
308
309
|
- lib/rails/ruby_version_check.rb
|
309
|
-
- lib/rails/rubyprof_ext.rb
|
310
310
|
- lib/rails/source_annotation_extractor.rb
|
311
311
|
- lib/rails/tasks.rb
|
312
312
|
- lib/rails/tasks/annotations.rake
|
@@ -349,12 +349,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
349
349
|
version: 1.9.3
|
350
350
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
351
351
|
requirements:
|
352
|
-
- - "
|
352
|
+
- - ">"
|
353
353
|
- !ruby/object:Gem::Version
|
354
|
-
version:
|
354
|
+
version: 1.3.1
|
355
355
|
requirements: []
|
356
356
|
rubyforge_project:
|
357
|
-
rubygems_version: 2.
|
357
|
+
rubygems_version: 2.2.2
|
358
358
|
signing_key:
|
359
359
|
specification_version: 4
|
360
360
|
summary: Tools for creating, working with, and running Rails applications.
|
data/lib/rails/rubyprof_ext.rb
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
require 'prof'
|
2
|
-
|
3
|
-
module Prof #:nodoc:
|
4
|
-
# Adapted from Shugo Maeda's unprof.rb
|
5
|
-
def self.print_profile(results, io = $stderr)
|
6
|
-
total = results.detect { |i|
|
7
|
-
i.method_class.nil? && i.method_id == :"#toplevel"
|
8
|
-
}.total_time
|
9
|
-
total = 0.001 if total < 0.001
|
10
|
-
|
11
|
-
io.puts " %% cumulative self self total"
|
12
|
-
io.puts " time seconds seconds calls ms/call ms/call name"
|
13
|
-
|
14
|
-
sum = 0.0
|
15
|
-
results.each do |r|
|
16
|
-
sum += r.self_time
|
17
|
-
|
18
|
-
name = if r.method_class.nil?
|
19
|
-
r.method_id.to_s
|
20
|
-
elsif r.method_class.is_a?(Class)
|
21
|
-
"#{r.method_class}##{r.method_id}"
|
22
|
-
else
|
23
|
-
"#{r.method_class}.#{r.method_id}"
|
24
|
-
end
|
25
|
-
io.printf "%6.2f %8.3f %8.3f %8d %8.2f %8.2f %s\n",
|
26
|
-
r.self_time / total * 100,
|
27
|
-
sum,
|
28
|
-
r.self_time,
|
29
|
-
r.count,
|
30
|
-
r.self_time * 1000 / r.count,
|
31
|
-
r.total_time * 1000 / r.count,
|
32
|
-
name
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|