配置文件(config目录)
数据库配置文件 (database.yml)
数据库配置文件,用于描述Rails使用的数据库的配置,采用YAML的格式进行编写;支持开发(development)、测试(test)和生产(production)三种环境的配置编写。
支持的数据库:
- DB2
- Firebird
- Frontbase
- MySQL
- Openbase
- Oracle
- PostgreSQL
- SQLite
- SQL Server
- Sybase
示例: SQLite 3 Setting items
Setting items | Description | Default |
---|---|---|
adapter | Type of database to connect | sqlite3 |
database | Path to database file | db / environment-name.sqlite3 |
pool | Boolean number of connections | Five |
timeout | Timeout time | 5000 |
##database.yml
development:
adapter: sqlite3
database: db/development.sqlite3
timeout: 5000
test:
adapter: sqlite3
database: db/test.sqlite3
timeout: 5000
production:
adapter: sqlite3
database: db/production.sqlite3
timeout: 5000
应用的设置文件(config/*)
在config目录下的为Rails应用的设置文件,可以通过"config.parameter name = value"的格式来改变应用的配置,但是每次发生修改后需要重启服务以使配置生效,底下文件统一采用UTF-8的编码。
主要设置文件
application.rb | 设置所有环境通用的配置 | |
---|---|---|
environment / | 该目录下存在各个环境各自的环境设置文件 | |
development.rb | 开发环境设置 | |
test.rb | 测试环境设置 | |
production.rb | 生产环境设置 | |
initializers / | 该目录下存在各种初始化文件和设置信息 | |
infiections.rb | 文本单复数变化规则设置 | |
mime_types.rb | 应用内容类型设置 | |
secret_token.rb | 签名和cookie令牌信息设置 | |
session_store.rb | session保存相关设置 | |
locales / | 存储国际化资源文件 |
添加自动加载的路径
例如:添加config/lilb为自动加载
config.autoload_paths += %W(#{config.root}/lib)
设置应用中的通用变量
设置
## 在config/application.rb中设置
module Example
class Application < Rails::Application
config.site = "https://google.com"
引用
Example::Application.config.site
设置初始化后执行的内容
根据设置的文件不同,可以在不同的环境中起效。
config.after_initialize do
## TODO
## ....
end
例如:
config.after_initialize do
ActionView::Base.sanitized_allowed_tags.delete 'div'
end
设置启动时加载的内容
config.autoload_once_path += %W(#{config.root}/lib)]
设置是否每次访问都重新加载应用类
该设置对开发环境友好,当值为true时每次修改代码无需重新启动服务就可以应用修改的代码
# Do not reload
cache_classes = true
# Reload
cache_classes = false
默认设置:
environment | Configuration |
---|---|
development | cache_classes = false |
test | cache_classes = false |
production | cache_classes = true |
设置是否缓存渲染的模板
config.action_view.cache_template_loading = ( true | false )
缓存的存储设置
config.cache_store = "Cache type"
常用存储类型: : memory_store 内存存储 : file_store 文件存储 : mem_cache_store 内存缓存存储 : null_store 空
设置是否在浏览器显示错误信息
config.consider_all_requests_local = ( true | false )
设置默认交互控制台
example
console do
# this block is called only when running console,
# so we can safely require pry here
require "pry"
config.console = Pry
end
设置是否自动加载配置文件
config.dependency_loading = ( true | false )
PS: 该设置仅当config.cache_classes = true时有效
设置eager_load
config.eager_load = ( true | false )
rails中,application, 各engine, 或者是namespace,如果需要在初始化时,就去加载和自己相关的文件,也就是执行eager_load!, 需要将自己的namespace注册到eager_load_namespaces中,且必须config.eager_load是true。application在初始化时,会去运行各种Railtie#initializer。
设置eager_load使用的namespace
config.eager_load_namespaces << SimpleForm
解释可参考以上,该选项仅当config.eager_load = true时有效
设置eager_load加载路径
config.eager_load_paths += %W( #{RAILS_ROOT}/app/workers )
设置应用所使用的编码
默认编码为UTF-8
config.encoding = "utf-8"
设置异常处理程序
发生异常时,设置从ShowException中间件调用的异常处理应用程序。 默认设置是 "ActionDispatch :: PublicExceptions.new (Rails.public_path)"
config.exceptions_app = self.handler
设置文件变更检测
config.file_watcher = ( true | false )
日志文件的参数过滤
例如log 文件中过滤掉password参数
config.filter_parameters += [:password]
强制使用https协议设置
config.force_ssl = ( true | false )
日志等级设置
config.log_level = ( :debug | :info | :error | :fatal )
默认设置
environment | Configuration |
---|---|
development | log_leval =: debug |
test | log_leval =: debug |
production | log_leval =: info |
配置标记的log输出
config.log_tags = [:uuid, :remote_ip]
设置 logger 对象
logger的文件个数,大小设置
config.logger = Logger.new(config.log_path, 10, 10.megabytes)
禁用logger
config.logger =nil
设置应用中间件
config.middleware
文件变更时重载类
配置文件更改检测。 如果依赖文件发生更改,它将重新加载该类。 如果config.cache_classes为“true”,则忽略
config.reload_classes_only_on_change = ( true | false )
密钥设置
config.secret_key_base = 'myapp1234'
配置静态文件资源
config.serve_static_assets = ( true | false )
优化log输出显示
config.colorize_logging = (true or false)
config.active_record.colorize_logging = false
Session存储设置
config.session_store :cookie_store, :key => '_your_app_session'
时区设置
config.time_zone = 'Beijing'
未初始化的对象警告设置
调用未初始化的对象时显示警告。默认情况下,它对开发环境和测试环境有效。
config.whiny_nils = ( true | false )
设置asset pipeline
config.assets.enabled = ( true | false )
静态资源压缩设置
config.assets.compress = ( true | false )
CSS 编译器设置
默认"sass-rails"
config.assets.css_compressor = :yui
JavaScript 编译器设置
config.assets.js_compressor = :uglifier
静态资源路径设置
config.assets.paths << Rails.root.join("app", "assets", "flash")
静态资源文件的预编译设置
config.assets.precompile += ['admin.js', 'admin.css', 'swfObject.js']
静态资源prefix设置
config.assets.prefix = "/some_other_path"
是否使用静态资源的MD5指纹校验
config.assets.digest = ( true | false )
资源缓存存储设置
config.assets.cache_store = [ :file_store, "/tmp/rails-cache/assets/#{Rails.env}/" ]
资源文件自动查找编译设置
在“true”的情况下,当在public/assets中找不到必要的文件时,从app/assets等搜索文件并执行编译
config.assets.compile = ( true | false )
默认i18n路径及语言设置
i18n.default_locale = :en
config.i18n.load_path += Dir[Rails.root.join('config/locales/xx/*.yml').to_s]
active_record单复数转换设置
config.active_record.pluralize_table_names = ( true | false )
数据库时区设置
config.active_record.default_timezone = ( :local | :utc )
更改数据库架构输出的格式
config.active_record.schema_format = (:ruby | :sql)
是否启用controller的缓存
config.action_controller.perform_caching = ( true | false )
Hash HTML默认头部设置
config.action_dispatch.default_headers = {
'X-Frame-Options' => 'SAMEORIGIN',
'X-XSS-Protection' => '1; mode=block',
'X-Content-Type-Options' => 'nosniff'
}