aboutsummaryrefslogblamecommitdiffstats
path: root/railties/doc/guides/source/configuring.txt
blob: 945e48cd45b109da561514eb197d059e61f4196d (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

















                                                                                                                                                 

                                  



                               
































                                                                                                                                                                                                                                                                                                                            

                                 
                                                                   
 
                                                                                                                                                                                                       
 
                                                                                                                                                                                                                                                                                                                                                                                      
 
                                                                                                                          
 
                                                                                                                                                                                                                             
 
                                                                                              
 
                                                                                                                                                                                                  
 
                                                                                                                                                         
 


                                                                                                                                                                
 
                                                                                                                    
 
                                                                                                                                                                                                                                                                                                                                                                                                                                                          
 
                                                                                                                                      
 
                                                                                                                                        
 
                                              
 
                                                                                                                                                                                                                           
 
                                                                                                                                                                                                                     
 
                                    
 
                                                                                                                                                           
 
                                                       
 
                                                                                                                                             
 
























                                                                                                                                                                                                                    
 





                                                                                                                                                                                                             
 
                                                                                                                                                           
 

                                                                                                        
 
                                                                                                                         
 
                                                                                                                                       
 
                                                                                                                                                         
 
                                                                                                                                   
 
                                                                                                                            
 
                                                                                         
 



                                                                                                                                   
 










                                                                                                                                                                                                
 
                                                                                               
 
                                                                                                                               
 
                            
 
                                                          
 
                                                                                                        
 

                                     
 
                             
 
                             
 
   
 
               
 


                                                                                        
 
                              
Configuring Rails Applications
==============================

This guide covers the configuration and initialization features available to Rails applications. By referring to this guide, you will be able to:

* Adjust the behavior of your Rails applications
* Add additional code to be run at application start time

== Locations for Initialization Code

preinitializers
environment.rb first
env-specific files
initializers (load_application_initializers)
after-initializer

== Using a Preinitializer

== Initialization Process Settings

== Configuring Rails Components

=== Configuring Active Record

+ActiveRecord::Base+ includej a variety of configuration options:

+logger+ accepts a logger conforming to the interface of Log4r or the default Ruby 1.8+ Logger class, which is then passed on to any new database connections made. You can retrieve this logger by calling +logger+ on either an ActiveRecord model class or an ActiveRecord model instance. Set to nil to disable logging.

+primary_key_prefix_type+ lets you adjust the naming for primary key columns. By default, Rails assumes that primary key columns are named +id+ (and this configuration option doesn't need to be set.) There are two other choices:

* +:table_name+ would make the primary key for the Customer class +customerid+
* +:table_name_with_underscore+ would make the primary key for the Customer class +customer_id+

+table_name_prefix+ lets you set a global string to be prepended to table names. If you set this to +northwest_+, then the Customer class will look for +northwest_customers+ as its table. The default is an empty string.

+table_name_suffix+ lets you set a global string to be appended to table names. If you set this to +_northwest+, then the Customer class will look for +customers_northwest+ as its table. The default is an empty string.

+pluralize_table_names+ specifies whether Rails will look for singular or plural table names in the database. If set to +true+ (the default), then the Customer class will use the +customers+ table. If set to +false+, then the Customers class will use the +customer+ table.

+colorize_logging+ (true by default) specifies whether or not to use ANSI color codes when logging information from ActiveRecord.

+default_timezone+ determines whether to use +Time.local+ (if set to +:local+) or +Time.utc+ (if set to +:utc+) when pulling dates and times from the database. The default is +:local+.

+schema_format+ controls the format for dumping the database schema to a file. The options are +:ruby+ (the default) for a database-independent version that depends on migrations, or +:sql+ for a set of (potentially database-dependent) SQL statements.

+timestamped_migrations+ controls whether migrations are numbered with serial integers or with timestamps. The default is +true+, to use timestamps, which are preferred if there are multiple developers working on the same application.

+lock_optimistically+ controls whether ActiveRecord will use optimistic locking. By default this is +true+.

The MySQL adapter adds one additional configuration option:

+ActiveRecord::ConnectionAdapters::MysqlAdapter.emulate_booleans+ controls whether ActiveRecord will consider all +tinyint(1)+ columns in a MySQL database to be booleans. By default this is +true+.

The schema dumper adds one additional configuration option:

+ActiveRecord::SchemaDumper.ignore_tables+ accepts an array of tables that should _not_ be included in any generated schema file. This setting is ignored unless +ActiveRecord::Base.schema_format == :ruby+.

=== Configuring Action Controller

ActionController::Base includes a number of configuration settings:

+asset_host+ provides a string that is prepended to all of the URL-generating helpers in +AssetHelper+. This is designed to allow moving all javascript, CSS, and image files to a separate asset host.

+consider_all_requests_local+ is generally set to +true+ during development and +false+ during production; if it is set to +true+, then any error will cause detailed debugging information to be dumped in the HTTP response. For finer-grained control, set this to +false+ and implement +local_request?+ to specify which requests should provide debugging information on errors.

+allow_concurrency+ should be set to +true+ to allow concurrent (threadsafe) action processing. Set to +false+ by default.

+param_parsers+ provides an array of handlers that can extract information from incoming HTTP requests and add it to the +params+ hash. By default, parsers for multipart forms, URL-encoded forms, XML, and JSON are active.

+default_charset+ specifies the default character set for all renders. The default is "utf-8".

+logger+ accepts a logger conforming to the interface of Log4r or the default Ruby 1.8+ Logger class, which is then used to log information from Action Controller. Set to nil to disable logging.

+resource_action_separator+ gives the token to be used between resources and actions when building or interpreting RESTful URLs. By default, this is "/".

+resource_path_names+ is a hash of default names for several RESTful actions. By default, the new action is named +new+ and the edit action is named +edit+.

+request_forgery_protection_token+ sets the token parameter name for RequestForgery. Calling +protect_from_forgery+ sets it to +:authenticity_token+ by default.

+optimise_named_routes+ turns on some optimizations in generating the routing table. It is set to +true+ by default.

+use_accept_header+ sets the rules for determining the response format. If this is set to +true+ (the default) then +respond_to+ and +Request#format+ will take the Accept header into account. If it is set to false then the request format will be determined solely by examining +params[:format]+. If there is no +format+ parameter, then the response format will be either HTML or Javascript depending on whether the request is an AJAX request.

+allow_forgery_protection+ enables or disables CSRF protection. By default this is +false+ in test mode and +true+ in all other modes.

+relative_url_root+ can be used to tell Rails that you are deploying to a subdirectory. The default is +ENV['RAILS_RELATIVE_URL_ROOT']+.

The caching code adds two additional settings:

+ActionController::Caching::Pages.page_cache_directory+ sets the directory where Rails will create cached pages for your web server. The default is +Rails.public_path+ (which is usually set to +RAILS_ROOT + "/public"+).

+ActionController::Caching::Pages.page_cache_extension+ sets the extension to be used when generating pages for the cache (this is ignored if the incoming request already has an extension). The default is +.html+.

The dispatcher includes one setting:

+ActionController::Dispatcher.error_file_path+ gives the path where Rails will look for error files such as +404.html+. The default is +Rails.public_path+.

The Active Record session store can also be configured:

+CGI::Session::ActiveRecordStore::Session.data_column_name+ sets the name of the column to use to store session data. By default it is 'data'

=== Configuring Action View

There are only a few configuration options for Action View, starting with four on +ActionView::Base+:

+debug_rjs+ specifies whether RJS responses should be wrapped in a try/catch block that alert()s the caught exception (and then re-raises it). The default is +false+.

+warn_cache_misses+ tells Rails to display a warning whenever an action results in a cache miss on your view paths. The default is +false+.

+field_error_proc+ provides an HTML generator for displaying errors that come from Active Record. The default is +Proc.new{ |html_tag, instance| "<div class=\"fieldWithErrors\">#{html_tag}</div>" }+

+default_form_builder+ tells Rails which form builder to use by default. The default is +ActionView::Helpers::FormBuilder+.

The ERB template handler supplies one additional option:

+ActionView::TemplateHandlers::ERB.erb_trim_mode+ gives the trim mode to be used by ERB. It defaults to +'-'+. See the link:http://www.ruby-doc.org/stdlib/libdoc/erb/rdoc/[ERB documentation] for more information.

=== Configuring Action Mailer

There are a number of settings available on +ActionMailer::Base+:

+template_root+ gives the root folder for Action Mailer templates.

+logger+ accepts a logger conforming to the interface of Log4r or the default Ruby 1.8+ Logger class, which is then used to log information from Action Mailer. Set to nil to disable logging.

+smtp_settings+ allows detailed configuration for the +:smtp+ delivery method. It accepts a hash of options, which can include any of these options:

* <tt>:address</tt> - Allows you to use a remote mail server. Just change it from its default "localhost" setting.
* <tt>:port</tt> - On the off chance that your mail server doesn't run on port 25, you can change it.
* <tt>:domain</tt> - If you need to specify a HELO domain, you can do it here.
* <tt>:user_name</tt> - If your mail server requires authentication, set the username in this setting.
* <tt>:password</tt> - If your mail server requires authentication, set the password in this setting.
* <tt>:authentication</tt> - If your mail server requires authentication, you need to specify the authentication type here. This is a symbol and one of <tt>:plain</tt>, <tt>:login</tt>, <tt>:cram_md5</tt>.

+sendmail_settings+ allows detailed configuration for the +sendmail+ delivery method. It accepts a hash of options, which can include any of these options:

* <tt>:location</tt> - The location of the sendmail executable. Defaults to <tt>/usr/sbin/sendmail</tt>.
* <tt>:arguments</tt> - The command line arguments. Defaults to <tt>-i -t</tt>.

+raise_delivery_errors+ specifies whether to raise an error if email delivery cannot be completed. It defaults to +true+.

+delivery_method+ defines the delivery method. The allowed values are <tt>:smtp</tt> (default), <tt>:sendmail</tt>, and <tt>:test</tt>.

+perform_deliveries+ specifies whether mail will actually be delivered. By default this is +true+; it can be convenient to set it to +false+ for testing.

+default_charset+ tells Action Mailer which character set to use for the body and for encoding the subject. It defaults to +utf-8+.

+default_content_type+ specifies the default content type used for the main part of the message. It defaults to "text/plain"

+default_mime_version+ is the default MIME version for the message. It defaults to +1.0+.

+default_implicit_parts_order+ - When a message is built implicitly (i.e. multiple parts are assembled from templates
which specify the content type in their filenames) this variable controls how the parts are ordered. Defaults to
<tt>["text/html", "text/enriched", "text/plain"]</tt>. Items that appear first in the array have higher priority in the mail client
and appear last in the mime encoded message.

=== Configuring Active Resource

There is a single configuration setting available on +ActiveResource::Base+:

+logger+ accepts a logger conforming to the interface of Log4r or the default Ruby 1.8+ Logger class, which is then used to log information from Active Resource. Set to nil to disable logging.

=== Configuring Active Support

There are a few configuration options available in Active Support:

+ActiveSupport::BufferedLogger.silencer+ is set to +false+ to disable the ability to silence logging in a block. The default is +true+.

+ActiveSupport::Cache::Store.logger+ specifies the logger to use within cache store operations.

+ActiveSupport::Logger.silencer+ is set to +false+ to disable the ability to silence logging in a block. The default is +true+.

=== Configuring Active Model

Active Model currently has a single configuration setting:

+ActiveModel::Errors.default_error_messages is an array containing all of the validation error messages.

== Using Initializers
 organization, controlling load order

== Using an After-Initializer

== Rails Environment Settings

ENV

== Changelog ==

http://rails.lighthouseapp.com/projects/16213-rails-guides/tickets/28[Lighthouse ticket]

* November 5, 2008: Rough outline by link:../authors.html#mgunderloy[Mike Gunderloy]

need to look for def self. ???