1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Merge branch 'master' of git://github.com/lifo/docrails

Conflicts:
	activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
This commit is contained in:
Xavier Noria 2011-04-23 01:11:24 +02:00
commit af1b48926f
17 changed files with 98 additions and 67 deletions

View file

@ -268,7 +268,7 @@ module ActionView
# image_path("edit.png") # => "/images/edit.png"
# image_path("icons/edit.png") # => "/images/icons/edit.png"
# image_path("/icons/edit.png") # => "/icons/edit.png"
# image_path("http://www.railsapplication.com/img/edit.png") # => "http://www.railsapplication.com/img/edit.png"
# image_path("http://www.example.com/img/edit.png") # => "http://www.example.com/img/edit.png"
#
# If you have images as application resources this method may conflict with their named routes.
# The alias +path_to_image+ is provided to avoid that. Rails uses the alias internally, and
@ -291,7 +291,7 @@ module ActionView
# video_path("hd.avi") # => /videos/hd.avi
# video_path("trailers/hd.avi") # => /videos/trailers/hd.avi
# video_path("/trailers/hd.avi") # => /trailers/hd.avi
# video_path("http://www.railsapplication.com/vid/hd.avi") # => http://www.railsapplication.com/vid/hd.avi
# video_path("http://www.example.com/vid/hd.avi") # => http://www.example.com/vid/hd.avi
def video_path(source)
if config.use_sprockets
asset_path(source)
@ -310,7 +310,7 @@ module ActionView
# audio_path("horse.wav") # => /audios/horse.wav
# audio_path("sounds/horse.wav") # => /audios/sounds/horse.wav
# audio_path("/sounds/horse.wav") # => /sounds/horse.wav
# audio_path("http://www.railsapplication.com/sounds/horse.wav") # => http://www.railsapplication.com/sounds/horse.wav
# audio_path("http://www.example.com/sounds/horse.wav") # => http://www.example.com/sounds/horse.wav
def audio_path(source)
if config.use_sprockets
asset_path(source)

View file

@ -77,11 +77,11 @@ module ActionView
# Used internally by javascript_include_tag to build the script path.
#
# ==== Examples
# javascript_path "xmlhr" # => /javascripts/xmlhr.js
# javascript_path "dir/xmlhr.js" # => /javascripts/dir/xmlhr.js
# javascript_path "/dir/xmlhr" # => /dir/xmlhr.js
# javascript_path "http://www.railsapplication.com/js/xmlhr" # => http://www.railsapplication.com/js/xmlhr
# javascript_path "http://www.railsapplication.com/js/xmlhr.js" # => http://www.railsapplication.com/js/xmlhr.js
# javascript_path "xmlhr" # => /javascripts/xmlhr.js
# javascript_path "dir/xmlhr.js" # => /javascripts/dir/xmlhr.js
# javascript_path "/dir/xmlhr" # => /dir/xmlhr.js
# javascript_path "http://www.example.com/js/xmlhr" # => http://www.example.com/js/xmlhr
# javascript_path "http://www.example.com/js/xmlhr.js" # => http://www.example.com/js/xmlhr.js
def javascript_path(source)
if config.use_sprockets
asset_path(source, 'js')
@ -123,11 +123,11 @@ module ActionView
# # => <script type="text/javascript" src="/javascripts/common.javascript?1284139606"></script>
# # <script type="text/javascript" src="/elsewhere/cools.js?1423139606"></script>
#
# javascript_include_tag "http://www.railsapplication.com/xmlhr"
# # => <script type="text/javascript" src="http://www.railsapplication.com/xmlhr.js?1284139606"></script>
# javascript_include_tag "http://www.example.com/xmlhr"
# # => <script type="text/javascript" src="http://www.example.com/xmlhr.js?1284139606"></script>
#
# javascript_include_tag "http://www.railsapplication.com/xmlhr.js"
# # => <script type="text/javascript" src="http://www.railsapplication.com/xmlhr.js?1284139606"></script>
# javascript_include_tag "http://www.example.com/xmlhr.js"
# # => <script type="text/javascript" src="http://www.example.com/xmlhr.js?1284139606"></script>
#
# javascript_include_tag :defaults
# # => <script type="text/javascript" src="/javascripts/jquery.js?1284139606"></script>

View file

@ -54,11 +54,11 @@ module ActionView
# Used internally by +stylesheet_link_tag+ to build the stylesheet path.
#
# ==== Examples
# stylesheet_path "style" # => /stylesheets/style.css
# stylesheet_path "dir/style.css" # => /stylesheets/dir/style.css
# stylesheet_path "/dir/style.css" # => /dir/style.css
# stylesheet_path "http://www.railsapplication.com/css/style" # => http://www.railsapplication.com/css/style
# stylesheet_path "http://www.railsapplication.com/css/style.css" # => http://www.railsapplication.com/css/style.css
# stylesheet_path "style" # => /stylesheets/style.css
# stylesheet_path "dir/style.css" # => /stylesheets/dir/style.css
# stylesheet_path "/dir/style.css" # => /dir/style.css
# stylesheet_path "http://www.example.com/css/style" # => http://www.example.com/css/style
# stylesheet_path "http://www.example.com/css/style.css" # => http://www.example.com/css/style.css
def stylesheet_path(source)
if config.use_sprockets
asset_path(source, 'css')
@ -79,8 +79,8 @@ module ActionView
# stylesheet_link_tag "style.css" # =>
# <link href="/stylesheets/style.css" media="screen" rel="stylesheet" type="text/css" />
#
# stylesheet_link_tag "http://www.railsapplication.com/style.css" # =>
# <link href="http://www.railsapplication.com/style.css" media="screen" rel="stylesheet" type="text/css" />
# stylesheet_link_tag "http://www.example.com/style.css" # =>
# <link href="http://www.example.com/style.css" media="screen" rel="stylesheet" type="text/css" />
#
# stylesheet_link_tag "style", :media => "all" # =>
# <link href="/stylesheets/style.css" media="all" rel="stylesheet" type="text/css" />

View file

@ -10,7 +10,7 @@ module ActionView
# relate to the specified Active Record object. Usage example:
#
# <%= div_for(@person, :class => "foo") do %>
# <%=h @person.name %>
# <%= @person.name %>
# <% end %>
#
# produces:
@ -25,8 +25,8 @@ module ActionView
# that relate to the specified Active Record object. For example:
#
# <%= content_tag_for(:tr, @person) do %>
# <td><%=h @person.first_name %></td>
# <td><%=h @person.last_name %></td>
# <td><%= @person.first_name %></td>
# <td><%= @person.last_name %></td>
# <% end %>
#
# would produce the following HTML (assuming @person is an instance of

View file

@ -68,7 +68,7 @@ module ActionView
# # => /books/find
#
# <%= url_for(:action => 'login', :controller => 'members', :only_path => false, :protocol => 'https') %>
# # => https://www.railsapplication.com/members/login/
# # => https://www.example.com/members/login/
#
# <%= url_for(:action => 'play', :anchor => 'player') %>
# # => /messages/play/#player

View file

@ -69,10 +69,10 @@ class SprocketsHelperTest < ActionView::TestCase
assert_equal "/dir/xmlhr.js",
asset_path("/dir/xmlhr", "js")
assert_equal "http://www.railsapplication.com/js/xmlhr",
asset_path("http://www.railsapplication.com/js/xmlhr", "js")
assert_equal "http://www.railsapplication.com/js/xmlhr.js",
asset_path("http://www.railsapplication.com/js/xmlhr.js", "js")
assert_equal "http://www.example.com/js/xmlhr",
asset_path("http://www.example.com/js/xmlhr", "js")
assert_equal "http://www.example.com/js/xmlhr.js",
asset_path("http://www.example.com/js/xmlhr.js", "js")
end
test "javascript include tag" do
@ -83,8 +83,8 @@ class SprocketsHelperTest < ActionView::TestCase
sprockets_javascript_include_tag("xmlhr")
assert_equal '<script src="/assets/xmlhr-d41d8cd98f00b204e9800998ecf8427e.js" type="text/javascript"></script>',
sprockets_javascript_include_tag("xmlhr.js")
assert_equal '<script src="http://www.railsapplication.com/xmlhr" type="text/javascript"></script>',
sprockets_javascript_include_tag("http://www.railsapplication.com/xmlhr")
assert_equal '<script src="http://www.example.com/xmlhr" type="text/javascript"></script>',
sprockets_javascript_include_tag("http://www.example.com/xmlhr")
end
test "stylesheet path" do
@ -94,10 +94,10 @@ class SprocketsHelperTest < ActionView::TestCase
assert_equal "/assets/dir/style-d41d8cd98f00b204e9800998ecf8427e.css", asset_path("dir/style.css", "css")
assert_equal "/dir/style.css", asset_path("/dir/style.css", "css")
assert_equal "http://www.railsapplication.com/css/style",
asset_path("http://www.railsapplication.com/css/style", "css")
assert_equal "http://www.railsapplication.com/css/style.css",
asset_path("http://www.railsapplication.com/css/style.css", "css")
assert_equal "http://www.example.com/css/style",
asset_path("http://www.example.com/css/style", "css")
assert_equal "http://www.example.com/css/style.css",
asset_path("http://www.example.com/css/style.css", "css")
end
test "stylesheet link tag" do
@ -109,8 +109,8 @@ class SprocketsHelperTest < ActionView::TestCase
assert_equal '<link href="/assets/style-d41d8cd98f00b204e9800998ecf8427e.css" media="screen" rel="stylesheet" type="text/css" />',
sprockets_stylesheet_link_tag("style.css")
assert_equal '<link href="http://www.railsapplication.com/style.css" media="screen" rel="stylesheet" type="text/css" />',
sprockets_stylesheet_link_tag("http://www.railsapplication.com/style.css")
assert_equal '<link href="http://www.example.com/style.css" media="screen" rel="stylesheet" type="text/css" />',
sprockets_stylesheet_link_tag("http://www.example.com/style.css")
assert_equal '<link href="/assets/style-d41d8cd98f00b204e9800998ecf8427e.css" media="all" rel="stylesheet" type="text/css" />',
sprockets_stylesheet_link_tag("style", :media => "all")
assert_equal '<link href="/assets/style-d41d8cd98f00b204e9800998ecf8427e.css" media="print" rel="stylesheet" type="text/css" />',

View file

@ -43,7 +43,7 @@ module ActiveModel
@observer_instances ||= []
end
# Instantiate the global Active Record observers.
# Instantiate the global observers.
def instantiate_observers
observers.each { |o| instantiate_observer(o) }
end

View file

@ -208,16 +208,18 @@ module ActiveRecord
true
end
# Returns +true+ when the connection adapter supports prepared statement
# caching, otherwise returns +false+
# Returns +true+, since this connection adapter supports prepared statement
# caching.
def supports_statement_cache?
true
end
# Returns true.
def supports_migrations? #:nodoc:
true
end
# Returns true.
def supports_primary_key? #:nodoc:
true
end
@ -308,6 +310,8 @@ module ActiveRecord
connect
end
# Disconnects from the database if already connected. Otherwise, this
# method does nothing.
def disconnect!
@connection.close rescue nil
end
@ -330,6 +334,7 @@ module ActiveRecord
rows
end
# Clears the prepared statements cache.
def clear_cache!
@statements.values.each do |cache|
cache[:stmt].close
@ -554,6 +559,10 @@ module ActiveRecord
end
end
# Drops a MySQL database.
#
# Example:
# drop_database 'sebastian_development'
def drop_database(name) #:nodoc:
execute "DROP DATABASE IF EXISTS `#{name}`"
end

View file

@ -214,8 +214,8 @@ module ActiveRecord
ADAPTER_NAME
end
# Returns +true+ when the connection adapter supports prepared statement
# caching, otherwise returns +false+
# Returns +true+, since this connection adapter supports prepared statement
# caching.
def supports_statement_cache?
true
end
@ -240,6 +240,7 @@ module ActiveRecord
@local_tz = execute('SHOW TIME ZONE', 'SCHEMA').first["TimeZone"]
end
# Clears the prepared statements cache.
def clear_cache!
@statements.each_value do |value|
@connection.query "DEALLOCATE #{value}"
@ -278,7 +279,8 @@ module ActiveRecord
super
end
# Close the connection.
# Disconnects from the database if already connected. Otherwise, this
# method does nothing.
def disconnect!
clear_cache!
@connection.close rescue nil
@ -641,7 +643,7 @@ module ActiveRecord
execute "CREATE DATABASE #{quote_table_name(name)}#{option_string}"
end
# Drops a PostgreSQL database
# Drops a PostgreSQL database.
#
# Example:
# drop_database 'matt_development'

View file

@ -66,16 +66,18 @@ module ActiveRecord
sqlite_version >= '3.6.8'
end
# Returns +true+ when the connection adapter supports prepared statement
# caching, otherwise returns +false+
# Returns true, since this connection adapter supports prepared statement
# caching.
def supports_statement_cache?
true
end
# Returns true.
def supports_migrations? #:nodoc:
true
end
# Returns true.
def supports_primary_key? #:nodoc:
true
end
@ -88,12 +90,15 @@ module ActiveRecord
sqlite_version >= '3.1.6'
end
# Disconnects from the database if already connected. Otherwise, this
# method does nothing.
def disconnect!
super
clear_cache!
@connection.close rescue nil
end
# Clears the prepared statements cache.
def clear_cache!
@statements.clear
end

View file

@ -1,11 +1,11 @@
class Object
# Returns true if this object is included in the argument. Argument must be
# any object which respond to +#include?+. Usage:
# any object which responds to +#include?+. Usage:
#
# characters = ["Konata", "Kagami", "Tsukasa"]
# "Konata".in?(characters) # => true
#
# This will throw an ArgumentError if the supplied argument doesnt not respond
# This will throw an ArgumentError if the argument doesn't respond
# to +#include?+.
def in?(another_object)
another_object.include?(self)

View file

@ -35,7 +35,7 @@ class Object
end
class NilClass
# Instances of +NilClass+ return always +nil+.
# Calling +try+ on +nil+ always returns +nil+.
# It becomes specially helpful when navigating through associations that may return +nil+.
#
# === Examples

View file

@ -418,7 +418,7 @@ SELECT viewable_by, locked FROM clients
Be careful because this also means you're initializing a model object with only the fields that you've selected. If you attempt to access a field that is not in the initialized record you'll receive:
<shell>
ActiveRecord::MissingAttributeError: missing attribute: <attribute>
ActiveModel::MissingAttributeError: missing attribute: <attribute>
</shell>
Where +&lt;attribute&gt;+ is the attribute you asked for. The +id+ method will not raise the +ActiveRecord::MissingAttributeError+, so just be careful when working with associations because they need the +id+ method to function properly.

View file

@ -897,8 +897,9 @@ The macro-style class methods can also receive a block. Consider using this styl
class User < ActiveRecord::Base
validates_presence_of :login, :email
before_create {|user| user.name = user.login.capitalize
if user.name.blank?}
before_create do |user|
user.name = user.login.capitalize if user.name.blank?
end
end
</ruby>

View file

@ -1266,6 +1266,15 @@ WARNING: The option +:separator+ can't be a regexp.
NOTE: Defined in +active_support/core_ext/string/filters.rb+.
h4. +inquiry+
The <tt>inquiry</tt> method converts a string into a +StringInquirer+ object making equality checks prettier.
<ruby>
"production".inquiry.production? # => true
"active".inquiry.inactive? # => false
</ruby>
h4. Key-based Interpolation
In Ruby 1.9 the <tt>%</tt> string operator supports key-based interpolation, both formatted and unformatted:
@ -1997,6 +2006,11 @@ Similarly, +from+ returns the tail from the element at the passed index on:
The methods +second+, +third+, +fourth+, and +fifth+ return the corresponding element (+first+ is built-in). Thanks to social wisdom and positive constructiveness all around, +forty_two+ is also available.
<ruby>
%w(a b c d).third # => c
%w(a b c d).fifth # => nil
</ruby>
NOTE: Defined in +active_support/core_ext/array/access.rb+.
h4. Random Access
@ -2092,7 +2106,7 @@ h5. +to_xml+
The method +to_xml+ returns a string containing an XML representation of its receiver:
<ruby>
Contributor.all(:limit => 2, :order => 'rank ASC').to_xml
Contributor.limit(2).order(:rank).to_xml
# =>
# <?xml version="1.0" encoding="UTF-8"?>
# <contributors type="array">
@ -2167,7 +2181,7 @@ The name of children nodes is by default the name of the root node singularized.
The default XML builder is a fresh instance of <tt>Builder::XmlMarkup</tt>. You can configure your own builder via the <tt>:builder</tt> option. The method also accepts options like <tt>:dasherize</tt> and friends, they are forwarded to the builder:
<ruby>
Contributor.all(:limit => 2, :order => 'rank ASC').to_xml(:skip_types => true)
Contributor.limit(2).order(:rank).to_xml(:skip_types => true)
# =>
# <?xml version="1.0" encoding="UTF-8"?>
# <contributors>
@ -3407,11 +3421,11 @@ h4. +silence+
Silences every log level lesser to the specified one for the duration of the given block. Log level orders are: debug, info, error and fatal.
<ruby>
logger = Logger.new("log/development.log")
logger.silence(Logger::INFO) do
logger.debug("In space, no one can hear you scream.")
logger.info("Scream all you want, small mailman!")
end
logger = Logger.new("log/development.log")
logger.silence(Logger::INFO) do
logger.debug("In space, no one can hear you scream.")
logger.info("Scream all you want, small mailman!")
end
</ruby>
h4. +datetime_format=+
@ -3419,17 +3433,17 @@ h4. +datetime_format=+
Modifies the datetime format output by the formatter class associated with this logger. If the formatter class does not have a +datetime_format+ method then this is ignored.
<ruby>
class Logger::FormatWithTime < Logger::Formatter
cattr_accessor(:datetime_format) { "%Y%m%d%H%m%S" }
class Logger::FormatWithTime < Logger::Formatter
cattr_accessor(:datetime_format) { "%Y%m%d%H%m%S" }
def self.call(severity, timestamp, progname, msg)
"#{timestamp.strftime(datetime_format)} -- #{String === msg ? msg : msg.inspect}\n"
end
def self.call(severity, timestamp, progname, msg)
"#{timestamp.strftime(datetime_format)} -- #{String === msg ? msg : msg.inspect}\n"
end
end
logger = Logger.new("log/development.log")
logger.formatter = Logger::FormatWithTime
logger.info("<- is the current time")
logger = Logger.new("log/development.log")
logger.formatter = Logger::FormatWithTime
logger.info("<- is the current time")
</ruby>
NOTE: Defined in +active_support/core_ext/logger.rb+.

View file

@ -557,7 +557,7 @@ match '*a/foo/*b' => 'test#index'
would match +zoo/woo/foo/bar/baz+ with +params[:a]+ equals +"zoo/woo"+, and +params[:b]+ equals +"bar/baz"+.
NOTE: Starting from Rails 3.1, wildcard route will always matching the optional format segment by default. For example if you have this route:
NOTE: Starting from Rails 3.1, wildcard routes will always match the optional format segment by default. For example if you have this route:
<ruby>
map '*pages' => 'pages#show'

View file

@ -1,7 +1,7 @@
require 'generators/generators_test_helper'
require 'rails/generators/rails/assets/assets_generator'
# FOXME: Silence the 'Could not find task "using_coffee?"' message in tests due to the public stub
# FIXME: Silence the 'Could not find task "using_coffee?"' message in tests due to the public stub
class AssetsGeneratorTest < Rails::Generators::TestCase
include GeneratorsTestHelper
arguments %w(posts)